If one is to find out a new shows language yearly, what should the checklist be?
In phase among "The Pragmatic Programmer" the first learning objective is:
Find out at the very least one new language yearly. Various languages address the very same troubles in various means. By learning numerous various strategies, you can aid widen your reasoning and also stay clear of getter struck in a rut. [ ...]
Once a practical part of that checklist is found out- what's next, and also why?
1) Prolog: It is entirely various to all the critical languages you've been making use of until now, and also it will certainly transform the means you think of troubles
2) Lisp: without it, you could too be making use of Vi
3) Erlang: Again, it is entirely various, additionally, it appears fairly classy.
4) Something from the Turing Tarpit (as an example Brainfuck), and also possibly write a compiler or interpreter for it: I can not consider a factor to do this, yet it seems like an excellent suggestion.
C - as the crucial, "underlies every little thing", systems programming language
Lisp (Scheme) - the weird yet unbelievably effective ur - language that wonderful cyberpunks assume specifies trendy
Smalltalk - due to the fact that this is what OO was suggested to be
Erlang (or various other Actor language) to recognize Actors
Haskell - to recognize Monads
One of Python/ Ruby/ Perl (yet it actually does not matter which) - so you recognize what a preferred, modern-day, high - degree scripting language with excellent collection assistance seems like
SQL - so you can talk with relational data sources
Prolog - due to the fact that you still require to blow your mind
A language that does not influence the means you think of shows, is unworthy recognizing. - Alan Perlis
As several of the various other solutions have discussed, if you are learning one new language each year, the why? is to expand your capacities as a designer. The just how? is by learning languages with distinctive standards from those of languages you currently recognize, and also analyzing the standards you currently recognize establishes what language to find out next.
What are these standards? The innovative publication Concepts, Techniques, and Models of Computer Programming gives a superb overview with a graphical map.
Hence, if you just recognize C - like critical languages, after that learning Scheme/Lisp is exceptionally valuable. If you currently recognize critical and also useful languages, after that learning Prolog will certainly serve, etc
A current publication that attempts to educate numerous languages and also standards is Seven Languages in Seven Weeks. Certainly, you will not be well-versed in each language after a week of research, yet it does appear to give a friendly, expert - oriented multi - standard viewpoint.
When you do grok an additional standard, it is absolutely a Zen minute ; going from critical to useful shows made me see the globe of computer in a totally new light. Satisfied learning!
- Go (new system degree shows language with excellent assistance for concurrency and also principles not so typical)
- Lua (scripting language simple, meaningful, exceptionally adaptable and also well balanced standards critical, useful and also meta shows, permitting OOP)
- D (C/C+npls done right)
- Groovy (Expressiveness and also meta shows in Java globe)
- Eiffel (Design By Contract and also a various strategy to OOP)
- Prolog (THE reasoning shows language)
Make it intriguing and also invest yearly creating an interpreter or compiler for your very own shows language that fills out a particular niche you've never ever made use of a shows language for. Yearly, write your next compiler/interpreter making use of the language you created the previous year.
You need to make best use of the "low importance", ie constantly endeavor right into new locations that you are not yet solid at. Differ both the programming languages and also the principles . If you do not recognize any kind of object - oriented language, attempt Java and also some high - abstraction structure such as Hibernate. After that write some systems management things in a manuscript language such as Python or Perl. After that grab some reduced - degree abilities in C or C+npls, creating high - efficiency multithreaded web server code. If you do not recognize useful shows, attempt Haskell with some chart concept troubles such as solving Peg Solitaire, etc It's really viable to do it to make sure that every little thing you find out has prompt market price, till you strike erudite or unique - objective things such as object-capability security, Prolog or VHDL.
Excellent workout incidentally! This will certainly educate you to assume side to side and also picture troubles in language - agnostic terms, as opposed to relying upon also couple of system - details strategies. As an example, as soon as you understand the resemblances and also distinctions in digital method send off in between C+npls and also Python, you'll virtually "get it" promptly for any kind of various other language.