Live data from Hacker News

Being confidently programming language agnostic

blog.bradfieldcs.com

31–40 of 131 posts

Re: Being confidently programming language agnostic

#31

I've been programming for 20+ years, and recently moved over to Python. Sure, I could code on day one and figure out how to get programs working pretty easily. But the nuances with it are still things I need to work on a lot. I still don't program Pythonicly, I program like a C programmer writing Python. In fact, I probably program in all languages like I would a C programmer, and that's not good enough, in my opinio…

Would highly recommend Fluent Python.

http://shop.oreilly.com/product/0636920032519.do

Re: Being confidently programming language agnostic

#32

I know formal education often gets a lot of criticism around HN, but I think the approach the article is talking about is heavily mirrored in most university computer science curriculums. Universities tend to focus on paradigms and patterns, and typically force a student to learn at least 3 languages throughout their education (much more if they want to). Just in my undergrad I learned C, C++, C#, Objective C, Swift,…

> Universities tend to focus on paradigms and patterns... > ...That's of course not to say you can't do the exact same sort of education without going to school...

I think the personal motivation that someone brings has a lot to do with how they fare short term and long term in this regard. Yes, a good University program will teach you the concepts and underlying theory expressed by language implementations; coming out of such a program you will absolutely have the jump on someone that jumped into JavaScript programming informally. You will adapt more quickly to other technologies faster, too, as you have the essentials to make that shift whereas the JS guy may not.

Having said that, if you attended and graduated college because it was something that you were "suppose to do" or because it would get you a good job and computer science was just a way to a good job after college (with no particular interest in the field otherwise)... over time the more personally interested developer that learned JS informally will likely catch up with you and overtake you.

My formal education is in music composition. However, I was programming assembly on the old 8bit machines when I was a kid. 20 years on as a technology professional, I devote large amounts of time to learning concepts and theory that aren't strictly necessary for me to program something that works well enough for my customers. I learn these things because I'm genuinely interested in the underpinnings of what I do and because I want to perfect my professional skills... not for an employer, but for my own edification: I care about what I produce because it's me producing it. There are many of my friends that did get formal education in computer science and I've surpassed them in both quality of output and overall understanding. (BTW... don't get me wrong, I have colleagues that have formal education in computer science AND the same sort of professional dedication I have... a good number of them far exceed my knowledge and understanding and I very much look up to them. Still, I'm glad I don't have to feel ashamed standing by their side professionally either).

Re: Being confidently programming language agnostic

#33

I think that learning C before C++ might hurt you. https://www.youtube.com/watch?v=YnWhqhNdYyk

It seemed like the point of the presentation was really that C and C++ should be thought of as totally separate languages.

As long as that's remembered, I think the opposite is probably true: knowing C helps a lot to learn C++ (and vice versa) as opposed to learning either from scratch.

Re: Being confidently programming language agnostic

#35

I know formal education often gets a lot of criticism around HN, but I think the approach the article is talking about is heavily mirrored in most university computer science curriculums. Universities tend to focus on paradigms and patterns, and typically force a student to learn at least 3 languages throughout their education (much more if they want to). Just in my undergrad I learned C, C++, C#, Objective C, Swift,…

>My personal experience is that university grads are much better at adapting to new languages than someone with 4 years experience in only a single language.

These benefits seem dubious to me in the long term unless you plan to work on compilers and languages which is certainly a noble goal and is very much a hot area right now. Picking up brainfuck in a short period of time is not really noteworthy IMO. I am also struggling to come up with a way to present this to other people without coming off as an annoying know-it-all. Do we want to value the ability to sprint or the ability to finish a marathon?

Plus, your memory will deteriorate over time without constant practice. Am I really going to commit time to reviewing all languages I choose to learn every year or so? The article seems like a challenge-to-take more than career advice.

If someone doesn't immediately want to work with languages, I would rather teach them what might be analogous to the lay of the land in our industry:

- What tools do you use to make a desktop application on Windows/Linux/Mac?

- How do the different browsers (Edge/Chrome/Firefox) implement HTML/CSS/JS? Can you make a consistent behaving application for all of them? And why should you run far, far away from any company asking you to support IE8 in 2017?

- How would you make a cross-platform library for Windows/Linux/Mac?

- How would you make a mobile application?

- What are the most popular IDE options available?

- What are the different database options available?

The difference in opinion is exactly teaching more engineering vs. teaching more science, but also learning about the ecosystem that drives language choice and development. This knowledge contributes as much to "knowing the right tool to solve the problem" ability as diverse language knowledge.

Re: Being confidently programming language agnostic

#36

I think that learning C before C++ might hurt you. https://www.youtube.com/watch?v=YnWhqhNdYyk

Note: I didn't watch the video yet and my opinion might change by then. C teaches you something very useful, which is how the computer works under the hood. Most things you do in C loosely match to what the computer does, and learning C helps you understanding the computer. I'm not saying that it's a good language to start with, but it's okay. Unlike C++. IMO, C++ is the worst possible language to start with. The rea…

The argument is that learning C before C++ teaches you how to program C++ wrong. Nothing more, nothing less.

I wasn't judging C++ as a beginner language. I wasn't judging C either.

Re: Being confidently programming language agnostic

#37

I know formal education often gets a lot of criticism around HN, but I think the approach the article is talking about is heavily mirrored in most university computer science curriculums. Universities tend to focus on paradigms and patterns, and typically force a student to learn at least 3 languages throughout their education (much more if they want to). Just in my undergrad I learned C, C++, C#, Objective C, Swift,…

I think the top-10 universities do it right and the rest don't. (This is a bit of an exaggeration but you most likely know what I mean). Most of my classmates don't usually "learn" a language. They do an assignment by copying, hammering at the computer, or just asking for help. The basis of how university is set up is antithetical to the learning and exploration of new programming languages. This is based on one simp…

There are three problems with "Don't mandate a programming language" -- I'm a lecturer and I've done it for advanced practicals in later years.

* Students expect to be able to get help when they have problems. There is a good chance no member of staff knows Julia / Moonscript / ...

* Some languages make tasks trivial -- while this is nice when you are in the real world, if I want to test student's ability to create something I don't want some students missing most of the work. How do I then mark it?

* Similarly, if the question was "implement a malloc-like memory manager", well you really have to do that in C,C++,Objective-C, maybe Rust, but it makes less sense in python.

Also, getting a "quick tour" of (say) C++ isn't really useful, students who try to pick it up by just googling are likely to write terrible code. Learning a language properly takes work.

Re: Being confidently programming language agnostic

#38

I know formal education often gets a lot of criticism around HN, but I think the approach the article is talking about is heavily mirrored in most university computer science curriculums. Universities tend to focus on paradigms and patterns, and typically force a student to learn at least 3 languages throughout their education (much more if they want to). Just in my undergrad I learned C, C++, C#, Objective C, Swift,…

I think the top-10 universities do it right and the rest don't. (This is a bit of an exaggeration but you most likely know what I mean). Most of my classmates don't usually "learn" a language. They do an assignment by copying, hammering at the computer, or just asking for help. The basis of how university is set up is antithetical to the learning and exploration of new programming languages. This is based on one simp…

That was me when I was in college. At the time my school was in the mid-teens for CS rankings although it is worse now. While I was there I worked heavily with C but also worked with C++, Java, List, MIPS RISC assembly, ML, Prolog, Ada, Fortran, Perl, Eiffel and a few others. For all of the languages that were supposed to be showing me a different paradigm in retrospect I didn't learn what I was supposed to.

Years later when I had both enough experience to appreciate these things as well as interest in programming languages I did start to grok all of this but it certainly wasn't due to my education.

Re: Being confidently programming language agnostic

#39

I know formal education often gets a lot of criticism around HN, but I think the approach the article is talking about is heavily mirrored in most university computer science curriculums. Universities tend to focus on paradigms and patterns, and typically force a student to learn at least 3 languages throughout their education (much more if they want to). Just in my undergrad I learned C, C++, C#, Objective C, Swift,…

I just wish those universities actually produced programmers who understand the low level mechanics of how computers work. I.e. Why your program runs 100x slower if you're not careful about cache misses, pretty basic stuff like that. Moore's law is over, it's time to start caring about performance again.

Re: Being confidently programming language agnostic

#40
post #11

I used to arrogantly think I could be productive in any language given a week or so to adapt. I often used the phrase "a good dev is a good dev in any language." That belief was rather abruptly broken when I joined a project using C++/CX it was so far outside of my previous experience that I had a really bad time of it. I happily picked up the actual language very quickly. It was the surrounding ecosystem of compiler…

I agree. It's not always the language which makes it tough to integrate yourself into a project, sometimes it's all the frameworks, libraries, build tools, and general makeup of the project itself. I worked for a company a few years back doing ASP.NET (my experience is mostly Linux based tech, but you can pick up a language, right?). The language was fine, the design patterns used all quite standard, but the project…

I still find the "frameworks and libraries" argument to be false, but enough people say it that I believe it must be at least partially true. I'll settle for a belief that the argument is overstated.

IMO the largest issue is the breadth of one's experience, or lack thereof. And by that I don't mean simply the number of languages but how well versed one is in different languages and their surrounding ecosystems. For instance having good knowledge of both C# and Java isn't what I'm describing here.

Post reply on HN