[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

strategies for learning new languages



To follow up on the "learning languages" thread
(http://www.ai.mit.edu/~gregs/ll1-discuss-archive-html/threads.html#02557),
I'd be interested to hear resident polyglots comment on the following
question.

  What strategies do you use for becoming proficient in a new
  language?


By "strategy", I mean something along the following lines:

 * Pick up a book like "Teach yourself Befunge in 21 days" and read it
   cover to cover.

 * Skim over the language manual, pick up quickly basic constructs,
   and start writing code as soon as you can, consulting the manual
   for more advanced features as necessary.

 * Find a relatively short, self-contained program whose purpose you
   clearly understand, and try to read and understand the code,
   consulting the language manual when necessary.

 * Find someone proficient in the language and have them help you code
   up a meaningful piece of functionality.

 * Try to identify and concentrate on features of the language that
   are absent from other languages you know. A few random examples to
   illustrate the point may be in order.

   ** Perl (and Python, and probably a bunch of other languages) allows
      you to dynamically create named procedures. Example:
      http://www.ai.mit.edu/~gregs/ll1-discuss-archive-html/msg02158.html

   ** JavaScript's prototype object allows you to add new methods and
      attributes to all instances of a class. For example, you can add
      the reduce() method to the Array class:
      http://w3future.com/html/stories/hop.xml

   ** Tcl allows you to create and manipulate Tcl interpreters
      programmatically:
      http://www.tcl.tk/man/tcl8.4/TclCmd/interp.htm

   ** Tcl allows you to manipulate stack frames:
      http://www.tcl.tk/man/tcl8.4/TclCmd/uplevel.htm

 * Find a feature-for-feature comparison between the new language and
   another language that you are already proficient in. Something
   along the lines of
   http://merd.net/pixel/language-study/syntax-across-languages/
   http://groups.google.com/groups?selm=3D2D52DE.93BEF1B1%40info.unicaen.fr

 * Look at the language implementation, if the interpreter/compiler's
   source code is available and written in a language in which you are
   fluent.

 * A combination of the above?