For the best experience on desktop, install the Chrome extension to track your reading on news.ycombinator.com
Hacker Newsnew | past | comments | ask | show | jobs | submit | history | ajkumar25's commentsregister

Python for data analysis and matplotlib and ipython notebook for visualization.


Learning Python 5/E (http://www.amazon.com/Learning-Python-Edition-Mark-Lutz/dp/1...). This book is great book for both intermediate and advanced developers. Very in-depth.


Previously it was written in Perl.


Why is that every large company at-last rewrites their codebase in statically typed language. This makes the newcomers confuse which language one should learn seeing their inspiration change their official language. Is the fate of scripting languages are same in every aspect of programming? Are they really only suitable for rapid prototyping?


If there are people out there who are trying to choose a single language to learn, comments like yours should be a wakeup call to them:

Different situations and tasks call for different tools. Excelling in a modern development environment means being able to work with a variety of tools and being able to identify which tasks require which.


Static typing is an additional contract on the behavior of the code, similar to unit tests but built into the language itself and therefore cheaper to write. The overhead of specifying types slows you down during initial coding, but the code that results is more reliable and easier to read and maintain.

In environments where initial coding speed matters more than long term efficiency dynamic typing is preferable. Prototyping, mvp's, these are things that fit well into a loosely typed language. When that MVP grows into a business however, eventually it becomes benefecial to switch to static typing. Performance of a feature is usually the leverage that makes it happen, but the reduced cost of maintenance is what makes it stick.

So, both choices can be right for the same team at different stages of the product lifecycle.

What is interesting about Scala, go and rust is that they try to reduce the coding cost of static typing as much as possible (compared to Java, c and c++), giving the benefits without costing as much up front.


Because performance matters. And it matters more when trying to scale.


Then why not write in static typed languages from the very beginning itself?


Performance is only one of many factors in deciding on a language.

Here are some other reasons that occur to me (YMMV):

* A language that is great for performance might not lend itself equally well to experimentation or initial implementation (not saying this is the case for Golang, but in my opinion it probably is for other performance-focused languages like C++).

* You as a developer might have more expertise in a dynamic language.

* The initial development language might have superior OSS libraries which allow you to get to a working application quicker (later you can replace them with your own implementations when you do the rewrite)

* Things change. Golang might have been a terrible choice when Digital Ocean was starting up. Golang is definitely reaching a tipping point as a language, but it might have become a dead-end like many other promising languages and where would you be then?


Dead-end? You mean like perl?


Because a lot of people live under the assumption that statically typed languages will slow them down.


Which is true for a certain metric. If you just count in terms of amount of text that needs to be written, scripting languages win (in the prototyping phase).


I'm honestly not sure it holds with expressive languages that use type inference, such as haskell.


Scripting languages are really good for fast prototyping which helps in reducing the time to market which is critical for startups. When they go big, usually their codebase also goes bigger. Then they will start looking into maintainability, performance and 'ability to refactor' aspect of codebase. Statically typed language shines here and hence the move.


WOW. BTW what game is that you are developing ?


Half-Life 3 I assume.


Long Live Nokia.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search:

HN For You