Live data from Hacker News

Ask HN: How did you get started with the programming languages you use?

news.ycombinator.com

21–30 of 52 posts

Re: Ask HN: How did you get started with the programming languages you use?

#21
post #17
post #5

I was in my university's co-op program, but didn't apply for any jobs. A couple of weeks after the interview period ended, a representative from the school's co-op program called me and said they had a company that was desperate for a co-op, didn't find any who were qualified during the interview process, and my résumé was the only one they could find that listed experience with C. I took the job. Embedded systems, p…

Co-op job? Waterloo grad?

Georgia Tech. Quite a few American universities have co-op programs, though they aren't hugely popular.

Re: Ask HN: How did you get started with the programming languages you use?

#22
post #17
post #5

I was in my university's co-op program, but didn't apply for any jobs. A couple of weeks after the interview period ended, a representative from the school's co-op program called me and said they had a company that was desperate for a co-op, didn't find any who were qualified during the interview process, and my résumé was the only one they could find that listed experience with C. I took the job. Embedded systems, p…

Co-op job? Waterloo grad?

Seriously? In my experience (in Canada), the majority of engineering universities offer a co-op program. I get that Waterloo is the shit right now, but they don't produce the majority of the world's co-op students.

Re: Ask HN: How did you get started with the programming languages you use?

#23
Java / JVM stuff: Learned in a final year programming class in high school and reified in first year CS.

C/C++: I was a Linux groupie by the second year of my undergrad, so I wanted to know a language that gave me more access to the bare metal. Manual memory management scared the bejesus out of me at the time, but like all things, with enough practice, it became straightforward to reason about. Wrote the majority of my programming assignments for school in C++. Ended up using primarily C++ for the next few years too as I delved into graphics work (was at Autodesk for four years) and embedded work (worked at a startup that makes a secure browsing USB stick).

C#: Was on the C# compiler team at MS for a summer, so had to learn the language. :-) The compiler itself was written in C++ though, unlike Mono (which itself is written in C#). Ended up using it for server dev work again years later.

Scala: Coming into Scala for my current job. Like Twitter, they're taking a giant, monolithic Rails app and splitting it up into highly available services written in Scala. To learn, I took the first Scala Coursera course and am taking the second one now. Programming in Scala has also been useful. It's refreshing to have a language with FP built in. The STL has some functional concepts (e.g., most of the stuff in ), but you still have to have so much syntax to express things like a closure. Boost makes some things a bit easier (boost::bind and boost::function are incredibly useful), but it always feels you're fighting against the language. C++11 looks promising, but I never got to use it for anything commercial because it was always "too new".

Re: Ask HN: How did you get started with the programming languages you use?

#24
post #20
post #6

Earlier quoted context omitted.

The best language... to do what? ;-)

To do anything, if you want to do that thing on a processor with Von Neumann architecture and guarantee efficient memory or CPU usage. Admittedly, this comes with a significant cost of development time.

"guarantee efficient memory or CPU usage"

C does not guarantee either in sufficiently complex programs. Here is a classic counterexample:

http://web.archive.org/web/20080624164217/http://weitz.de/cl...

Re: Ask HN: How did you get started with the programming languages you use?

#25
Sorry I can't help with modern exotic languages. Basic, C badly, 6809 assembler, C more fully, PDP assember, Common Lisp, Scheme, Symbolics Lisp, VAX assembler, perl, php, C++, and now go (not seeing the ++ vs C+pthreads+care yet for backend sw). Ruby, bash, python, Lua, Erland, Javascript only to hack on/extend systems or webstuff. Next probably needs to be Javascript (frontend and node) for real, and finishing or abandoning go.

Re: Ask HN: How did you get started with the programming languages you use?

#26
post #17

Earlier quoted context omitted.

Co-op job? Waterloo grad?

Seriously? In my experience (in Canada), the majority of engineering universities offer a co-op program. I get that Waterloo is the shit right now, but they don't produce the majority of the world's co-op students.

Sorry. You're right, UW isn't the only co-op program in the world and in fact, OP is not an alumnus. I guess I just demonstrated my own confirmation bias.

Re: Ask HN: How did you get started with the programming languages you use?

#27
Learnt "BASIC with Dino" in primary school ('87) on TIKI 100 (Norwegian computers, like C64). Programmed games in AMOS (Amiga, BASIC with sprites and bobs, collision detection etc). Did some QBASIC, and Visual Basic. A bit of BZ (scripting language for BBS). Didn't do much programming for a bunch of years.

In 2004, I was living in an apartment in China, with a lot of time on my hands. Heard about Python and Ruby - gave Python a try, but got stuck on something trivial and had nobody to help me. With Ruby, I didn't get stuck. Used it on and off for years for small private projects, and two NGO internships where I used Ruby and RoR (but wasn't hired for it).

Still use Ruby for a lot of side projects, text wrangling, scraping etc. Began learning R for data wrangling/statistics/visualization. Amazing ecosystem, annoying language. Heard about Clojure and began playing with it after reading lots of interesting blog posts etc. My first intro to Lisp and functional programming. Liked a lot of it, but not crazy about JVM and stack-traces.

Through reading about Clojure, got interested in Haskell, and read a bunch about it - very interesting exposure to a ton of new concepts (which Clojure had warmed me up for). Also began looking at Julia for statistics, and lately had a look at both Nimrod and Elixir (which again introduced me to lot's of new ideas from Erland).

I've learnt a huge amount in the last year, and had my eyes opened to new paradigms. Still haven't really settled on anything new, and in the meantime I keep going back to Ruby and R to get stuff done.

Going back many years, choosing Python instead of Ruby might have been a better choice - it's clearly far ahead of Ruby in terms of academia - data science, machine learning, IPython Notebook, etc. However, knowing Ruby Python is almost too similar - like learning French while speaking Spanish... I can already read it, and don't feel motivated to spend the time to learn it, more attracted by new languages with other paradigms etc. (Why I'm spending time learning Russian as well :)).

Re: Ask HN: How did you get started with the programming languages you use?

#28
This year I had an opportunity at my job to design a fairly large system under some (what seemed to me at least) pretty ideal circumstances:

1.) We didn't have any existing infrastructure, so there were no requirements around language, environment, or tooling.

2.) I was the only person who would be developing the system.

3.) I was predominantly the only person who would be interacting with the system once it was deployed.

4.) Existing solutions to the problem I'm trying to solve are generally very expensive (either directly through the cost of the software, or indirectly through having to have professional services consultants do the integration), so it was pretty easy for this project to prove it's worth.

5.) I'm not actually paid to be a developer, so if the whole thing turned out to be a dismal failure, my boss doesn't care.

So I used this project as an opportunity to try out Haskell and Racket, two languages I didn't have any prior experience with (I had learned Scheme in school through SICP but hadn't touched it in 15 years).

I settled on Haskell for the parts of the system that were going to be deployed out in our environment. So far, that's been a server that collects events, parses them, and then forwards them along. I liked that Haskell compiled to native code (I didn't want the additional complexity of dealing with deploying an interpreter or virtual machine). I looked at using C and Go as well, as they both met all my criteria. Go doesn't really do anything for me, which admittedly isn't a great reason for not using it, but as I didn't have to sell anyone else on my decisions, that was enough. C is actually a more conventional fit for the type of server I built, and the only reason I didn't go with C is that I honestly don't trust myself to write performant, safe, C that I'd be comfortable deploying all around my enterprise.

That's not an indictment of C, it's an indictment of my abilities as a programmer. Thankfully, I'm not really a programmer, so I can still sleep at night.

In writing the server piece in Haskell, I discovered that most of my worries about it being an esoteric academic language were unfounded. I think most of that reputation comes from the fact that a large portion of the community using it is academic, so they use it for academic things, and tend to talk about it using "computer science-y" terminology. The Haskell planet blog aggregator, for instance, I've almost never found to be comprehensible. That's not their fault though, it just doesn't seem like muggles are writing blog posts about using Haskell to solve real problems. Hopefully that'll change over time as the language becomes more wide-spread.

I was very impressed with using Haskell to parse events though; I think I'm ruined on ever going back to a language that only lets you use RegEx's.

I was worried about how usable Haskell would be for really cookie-cutter systems type programming, as there isn't a lot of material online to help you do that type of stuff. Real World Haskell turned out to be a super good book though, as it was much more closely aligned with what I was doing. I was also worried about the small number of libraries compared to 1st-tier languages, but for what it's worth, that hasn't really been an issue.

If I were a good Haskell programmer, I'd have no qualms about using it for everything, but I'm not (at least not yet), so I'm doing all the application logic and web UI stuff in Racket. Obviously, people use Haskell for web programming, and it seems like Yesod is getting much better, but it was much easier for me to get a simple web application thrown together with Racket, so that's at least what I'll be doing for the time being.

My experience with Racket has been similar: not many resources on people actually using it to solve real problems, not many libraries; but for doing a really simple CRUD web app that talks to Postgres, it wasn't too bad to get working. The community is really great, maybe as a testament to its size, but I've been impressed by how helpful they are.

Deciding to use Racket over Clojure was a tough decision. Ultimately it came down to the fact that there was less cognitive load for me in how Racket worked when I didn't also have any of the Java infrastructure underneath. I think one of Clojure's greatest strengths is that it gives you all the interoperability with the Java ecosystem (which I think is one reason for it's adoption); but I've never programmed in Java, so all of that familiarity isn't present for me; it just seems like an albatross. Even all the tooling around builds and deployment seemed like a lot to get acclimated to, although I'm sure if I had just gone ahead and used Clojure, I'd have figured all that stuff out.

I'm envious of the fact that a lot of Clojure's libraries seem to be created by people solving concrete problems, and in general I like the pragmatism of that community. Maybe eventually I'll move from Racket to Clojure, but I haven't yet tried to do anything in Racket that makes me regret having chosen it.

Re: Ask HN: How did you get started with the programming languages you use?

#29
post #17

Earlier quoted context omitted.

Co-op job? Waterloo grad?

Seriously? In my experience (in Canada), the majority of engineering universities offer a co-op program. I get that Waterloo is the shit right now, but they don't produce the majority of the world's co-op students.

I love Waterloo - the city that is.

Re: Ask HN: How did you get started with the programming languages you use?

#30
> "Was there a particular project that got you started?"

I used Scala some on my own for the sake of learning, but became much more interested in it when I realized it was a viable alternative[1] to using Java for everything on Android. Especially when I just want to do what amounts to scripting at times. Plus, it's much easier/natural to run system commands for root related stuff on Android with Scala[2] than it is with Java[3]. Scala also has a superior SQL framework[4] to the cumbersome one that is built into Android for SQLite that requires a ton of boilerplate to actually make useful (especially if you wish to do asynchronous sql calls).

Using Async/Await[5] and Akka[6] are also great for mobile development when you want an alternative to the approaches built into android like AsyncTask and Handlers.

[1] https://github.com/yareally/android-scala-intellij-no-sbt-pl...

[2] http://alvinalexander.com/scala/scala-execute-exec-external-...

[3] http://www.rgagnon.com/javadetails/java-0014.html

[4] http://slick.typesafe.com/

[5] http://docs.scala-lang.org/sips/pending/async.html

[6] I know there's a Java version of Akka, but it's not quite the same as using the Scala one.

Post reply on HN