Ask HN: Which lang. are you most productive for API access and computing data?
I've seen quite a few languages to one degree or another [1]. So for the following languages I have a clue how productive I'd be:
JS, Py3, Java, Obj-C, C, C++, Bash, Ruby, C#, VBA, x86-64, R, PHP, Matlab, Mathematica, and Go.
I'd still like to know what you think from these languages in which you feel most productive and why.
Languages I don't have a clue about:
Haskell, Lisp, Smalltalk, Kotlin, Swift, Rust, Dart, Scala, Perl, Julia, Groovy, APL, Erlang, Elixir, Clojure, Delphi and F#
I'd really like to know from these languages in which you feel most productive and why.
[0] https://news.ycombinator.com/item?id=29225207
[1] At least one project, all the way up to using professionally.
[2] Personal context:
I'm going to be unemployed soon. Rather than finding a new job I figured, screw it! I'm going to do stuff that I actually like to do. After 3.16 hellish years that was 23 months job searching in the software industry, and 15 months of working at companies I wasn't a fit for (one way or another) I need that. A bsc. and msc. in computer science did not get me far in the resume screening round (hence the long search for almost 2 years).
9 comments
[ 3.4 ms ] story [ 33.2 ms ] threadI've found that it takes me longer to write code in Go than Python and the code is more verbose, but I have a very high rate of first-compile success. Compiler catches most errors I'm likely to make. I've written about 6 small services in Go now and 1 med / large sized one.
I've worked in a medium Go codebase (one might call it big, it's on the edge). I sometimes had a really hard time getting a particular value from a variable. The problem was that the way the code was structured, I couldn't know the type, but in the debugger I did see that the value was there in memory. The senior Go software engineer told me to make the type global, but I don't know what to think of that to make any type global the moment multiple very far away source files need that particular form of type information.
Another thing that I've seen that helps with Go productivity is the relentless focus of only one way to do things.
Edit: I also think what is amazing about Go is the whole "everything sensible is baked in" type of thing. You may disagree if it's sensible. But I like being able to immediately write tests, or write HTML templates, etc.
I'm not necessarily a Go fanboy, it's not exactly the most fun code to write but it's been a valuable tool for me.
I'd say that the one shortcoming is that making GUI apps is no walk through the park like it was in the VB days, or the tcl/tk days, but it is making significant strides in the form of Fyne, which is a great project with a charismatic team who is working toward making it pretty damn easy to make GUI apps in Go.
One of my latest interests has been using Go's web side to use the browser as my GUI, meaning you can write web apps with it and sweet jesus it's fast.
Just my 2 cents, hope you find your way with the new job.
When it comes to a job, I care less about absolute productivity and more about relative productivity, salary, people, culture, location (not in that order). But when it's me, myself and I, then focusing on having a language that I can be amazingly productive in becomes a much bigger priority. I remember Paul Graham once writing an article on how he build a search engine company and was so much faster because he decided to use Lisp instead of C.
In terms of productivity, I'd like to see if I can replicate that, at least a bit.
you hate your job so...you're quitting the industry, but you're still curious what people like to use for their API work?
A job in programming != programming your own project(s)
I am talking about the latter.
If you are not familiar with any language in particular you shall check your priorities.
Dynamic languages like Perl, Ruby, Python and Lua are likely the most productive ones but it cannot handle complex math algorithms or business logic without a big performance penalty. Those languages are higher level layers over the C language. They are abstractions so they cannot compete. Those languages when compared to C will consume more ram, more CPU and longer code execution's time.
However many of the libraries of dynamic languages are written in C and wrapped for use in native Perl, Ruby, Python, Lua code to highly minimize the performance hit.
Java and C# are bloated and consume too much RAM, "OO obfuscation" may also be an issue. But after they have started up all the bloat they will perform very very well and have good productivity if you can deal with it.
C, C++ are the most performant but will take ages to get productive with it.
Rust is C++ in the functional paradigm.
Go is like C but slower. There is hype because concurrency is easier but most projects do not even have a legit reason to use concurrency.
For high performance desktop apps Delphi is the king of productivity.