




Ask Slashdot: How Often Do You Switch Programming Languages? 331
An anonymous Slashdot reader writes:
I always see a lot of different opinions about programming languages, but how much choice do you really get to have over which language to use? If you want to develop for Android, then you're probably using Java...and if you're developing for iOS, then you've probably been using Swift or Objective-C. Even when looking for a job, all your most recent job experience is usually tied up in whatever language your current employer insisted on using. (Unless people are routinely getting hired to work on projects in an entirely different language than the one that they're using now...)
Maybe the question I really want to ask is how often do you really get to choose your programming languages... Does it happen when you're swayed by the available development environment or intrigued by the community's stellar reputation, or that buzz of excitement that keeps building up around one particular language? Or are programming languages just something that you eventually just fall into by default?
Leave your answers in the comments. How often do you switch programming languages?
Maybe the question I really want to ask is how often do you really get to choose your programming languages... Does it happen when you're swayed by the available development environment or intrigued by the community's stellar reputation, or that buzz of excitement that keeps building up around one particular language? Or are programming languages just something that you eventually just fall into by default?
Leave your answers in the comments. How often do you switch programming languages?
When you pry my keyboard from my cold dead fingers (Score:5, Informative)
But then, I only fry firmware-burgers, so 'C' and assembler are it...unless you wanna count all the assembler flavors, then it would be 2 or 3 times a day...
Re: (Score:2)
I guess you are still working on that project.
Re: When you pry my keyboard from my cold dead fin (Score:5, Funny)
Grandpa, Mom says you need to get off the computer.
HOW OFTEN (Score:2)
Re: (Score:2)
How many pieces of hardware are in the system? (Score:5, Informative)
Small embedded ARM processors: C
Mid-sized embedded Linux: C++
Bloaty multi-core GUI with printer drivers, etc. running on Windows: C#
Cloudy web servery type stuff: Javascript
And, all of these can be found in a single shipping product. Go Team Silo Go! Hope it sticks when you toss it over the wall!
Re:How many pieces of hardware are in the system? (Score:5, Interesting)
For me, it's not as much the hardware as the requirements of the software. I'm a game developer, so the engine and game are in C++, of course, no matter the platform. Our tools generally run on Windows, and productivity is more important than performance, so some of us use C#, while some other studios have used Java, from what I understand. If we need an extension language for our tools, maybe something like IronPython. If we're porting to Mac, toss in a bit of Objective-C. The web programmers use a lot of JavaScript, of course. Toss in some Lua as an embedded scripting language. There are probably a couple of minor cases I'm forgetting, but that's the bulk of it for my work.
Well... (Score:2, Insightful)
...about every 2 hours, on the current job.
Having said that, I speak over 60 programming languages (to varying levels of fluency) at last count, and I do the Pragmatic Programmers thing of doing another one every year. I may not be the best person to ask.
Re:Well... (Score:5, Insightful)
Unless you have been programming for about 300 years, there is zero chance you have achieved fluency in more than 2 or 3 of these programming languages. Being able to print "Hello world," does not count as fluency, any more than being able to say, "Hello, my name is Robert," counts as fluency in a human language.
Once you get past the first 6 or so, assuming you chose them carefully, the similarities are apparent. But if it helps, merely being able to write a nontrivial program in a given language doesn't mean that you can call yourself a "X programmer".
Consider what it means to be a Java programmer. I know Java, the language, extremely well. Well enough to write a conforming Java 1.7 to bytecode compiler, I would think. Now here's what I don't know: JSF, Spring, Swing, Maven, Ant, Struts, Android SDK, Eclipse RCP, etc. It's knowing a decent amount of that stuff that which lets you call yourself a "Java programmer" in good conscience. I can write programs in Java, but I'm not a Java programmer.
Re:Well... (Score:5, Insightful)
I get where you're coming from. Being a programmer in "X" is more about knowing the tools and available libraries than it is about knowing the language itself. Somebody who works with C# could probably be very productive un VB.Net within a day or two, even though the languages appear quite different. On the other hand, C# and Java look quite similar in their syntax, but generally don't have much in common in terms of actually working with them. It might take a month or more to get reasonably productive it you switched from C# to Java.
Re: (Score:2)
even though the languages appear quite different.
Aren't the libraries basically the same?
Re: (Score:2)
What is fluency? (Score:2)
What is fluent? I haven't quite been programming for 300 years (only 40), but during that time I have certainly been fluent in at least eight languages. Some similar (Pascal/RatFor, C++/Java), others fairly different (Prolog, Lisp). The thing is, there are two aspects to fluency, and the second one is problematic:
- The syntax and semantics of the language. This is only difficult if you're learning a new paradigm. Once you know a particular paradigm, learning a new language in that paradigm is relatively eas
Re: (Score:2)
What is fluent?
I would expect someone claiming to be fluent in a programming language to be able to sit down, cold, and write code in that language which would compile (or interpret) without syntax error and solve the problem at hand. If interviewing for a job, they should be able to whiteboard with the language without hesitation. If you cannot do this, you are not fluent with the language, but you might be familiar with it. Most people probably will not be fluent unless they're actually writing code with the language
Re: (Score:2)
Re: (Score:2)
100% correct. I only claimed to speak 60 programming languages, not to know the idiosyncrasies of their standard (and not-so-standard but still required) libraries. That makes the exercise a bit easier.
Re:Well... (Score:4, Informative)
Disconnect your computer from the internet, and write a fully conforming Ada 2012 compiler in Common Lisp.
Interestingly, Ada isn't one of them. Nor is Python, interestingly.
If you're curious how I got to 60, there are a lot of languages in there which are distinct languages with distinct specs, but are essentially dialects.
Consider the Turner family of languages, for example. I've used KRC, Miranda, Orwell, Miracula, and Haskell. All of them are distinct languages with their own specs. I can remember writing a Prolog interpreter in at least three of them. I can still explain to you some of the key differences between them. if you know two of them you know them all, and besides, one of them is still around.
Other examples of distinct-but-close-enough languages which I have used in a nontrivial manner are Eiffel and Sather, SML and O'Caml (never used Alice), Smalltalk and Newspeak, Object Pascal and Delphi, Agda and Coq (never used Epigram), PostScript and Forth, Java and Modula-3.
And then there's logic languages. I've used (again, seriously used) Prolog, Datalog, Mercury, Oz, Gödel, and KL1. All of them are distinct languages with crucial differences, but so closely related that once you know two of them well (say, one dynamically typed and one statically typed variant), you can get quite productive in most of them within an afternoon.
Oh, and four different assembly languages.
Re: Well... (Score:4, Informative)
60 looks a little bit too mich, but Ehen I look back, I learned several BASIC dialects, Z80 assembler, Turbo Pascal, 8086 ASM, Fortran, C, Modula-2, Scheme, Elisp, Prolog, Objective-C, PHP, Java, Xtend. That are 15 counting the Basiscs AS two languages. I also used XSLT, XSD, Corba which are a transformation language, a data model language and a component interface declaration language. I also know some stuff in HTML, CSS, SQL, EQL,bash, csh, make, ant and maven.
So if I count all those DSLs as programming languages, I am close to 30. Maybe he can provide us with a list.
Re: (Score:2)
With every project. (Score:4, Interesting)
Or at least it's the project that determines the language.
I use half a dozen different languages every day. You can double that if you look over the past year. There are a lot of factors that go into choosing a programming language and "what's new and cool" rarely is one of them.
The two biggest factors are 'what is the execution environment?' and 'what are the interface requirements?' Basically, 'who is going to run it' and 'what does it have to talk to?' (and they are closely related)
Next comes 'what are the related/currently existing projects already written in?' It's rare that you want to rebuild the whole thing. (Although sometimes that's exactly what you want to do.)
After that, I'll look at the available libraries and tools, but for the most part everything worth using is adequate in those areas.
Finally, if it makes it that far, I'll pick something I'm familiar with, just the make the whole project faster and less work.
Overall, it's been quite a few years since the 'language' of the project was something I even worried about. "When in Rome, do as the Romans do."
Stay the course (Score:4, Insightful)
There's no point in changing language often. You stick to one and master it. I have a coworker who handles most legacy apps, it doubles the time taken to make fixes because he's in the wrong context.
I'd say 5 years is a good run for a language, you can return to it in a day later on. Sure you can do a quick hack in a non-mastered language, but your style aint stable and 3 months down the line it'll be spaghetti.
Re: (Score:2)
There's no point in changing language often.
Sure there is, mostly because you can't use quite a lot of languages for quite a lot of tasks without considerable effort and there are other reasons why one language is more suitable than another.
For Android interfacing I use Java. For interfacing with Java programs I use Java and a bit of C++ for native speed. For image processing and computer vision stuff, I usually use C++. Systems programming on Linux I do in C++. For the Unity game engine I use C#. For embed
Re: (Score:2)
Hm, I did not do any C++ for nearly 10 years.
Then 3 years ago I had to imllement a set of 'unit tests' and inspired by JUnit I wrote a test runner and about 12 tests.
Took me a bit more than a day.
Except for a typo and a missing include it compiled and run on fhe first compile.
Re: (Score:3)
Personally I haven't been given the option to master a language by my employers. I tend to focus on the best design for a program, regardless of the language I'm working in. Most programs don't need to be perfectly optimized and internet searching provides advanced techniques without taking too much time.
I started out learning Java in college but only learned basic object oriented before moving to a mixed C/C++ embedded environment. After five years in this environment, my company went through a massive
Re: (Score:2)
Come on, admit it, that is true of every single project that is non-trivial or not a small managed part of something larger.
I'm sure it's possible to make spaghetti code out of Forth, but I don't think it could be done without great effort.
Haskell is pretty immune too, but when you mix penne, ziti, rigatoni and macaroni, something will invariably disappear inside something else.
Every other script... (Score:4, Funny)
... it keeps things interesting.
Besides, I hate Bob in QA and it gives him conniptions trying to read it.
As a system administrator, not a developer... (Score:2)
...I basically have three areas I write in.
There are the short and sweet (I mean, we all intend them to be short and sweet, no matter how unwieldy they get) system administration scripts. Those are basically always bash, although after I write them I always go "Damn, I keep meaning to try execline and forgetting it exists!"
There's frontend Web dev. Javascript rules the day here, until WebAssembly finally gets... assembled.
Then there's "everything else", which for the first ten years I wrote code meant Perl.
Comment removed (Score:5, Interesting)
Re: (Score:2)
BASIC, FORTRAN, PL/1, APL, COBOL, BCPL, C, ALGOL, Pascal, Various assembly languages (6502, S/370, PDP-11, VAX), C++, Java, Perl, PHP, C#...
And at that point, I do care: C# and Java are too confusingly alike-but-different to make a convenient fast switch. It's not just IT - I have the same problem with Dutch and German.
But maybe that's just because I'm getting old and/or my brain is now full.
In the last two months (Score:2)
The disturbing thing about the question is that it seems to assume you can only program at work. If so, I feel sad for you......you've never caught the enjoyment of programming.
Re: (Score:2)
It's not a question of switching, it's adding another tool to the toolbox. No matter if it's Perl, C++, C, C#, Java, Classic Basic (Yes, some solutions are out there using that still), Cobol, Bash, Makefiles etc...
Often a project consists of not a single language but three or four at the same time considering the need to automate builds and testings and wrapping the software.
Man, I'm glad I got out of IT (Score:5, Informative)
Re: (Score:2, Offtopic)
I'm going to go ahead and agree with you. I'm semi-retired. And while I still play with computers- the thought of going back into IT makes my stomach turn.
It's also true that the IT business has changed so much and is now driven by certifications and buzz-words rather than by talent or skill. Heck when I started working for a Fortune 100 in the mid 1990s I didn't even give out a resume. I had a *reputation*.
It was only after the housing crisis and economic meltdown that I needed a resume. Apparently, financ
Re: (Score:2)
Man, what a drag it is to learn new things. We should all be able to step out of school with our diploma and never have to study or practice anything new again.
Re: (Score:2)
Re: Man, I'm glad I got out of IT (Score:2)
You do not need to learn so many things all the time. At least if you have an understanding of basic concepts. They pop up in most languages used today. Even the transition between Java domain and C# is easy to handle, as the libraries contain similar concepts named in a similar way.
Re: (Score:2)
Languages may become obsolete but knowing how to program never becomes obsolete. Problem solving, interacting with people, identifying gaps in the program design, these skills will always be needed by employers as few programmers understand these skills when they first enter the workplace. Some have a hard time ever learning these skills.
Re: (Score:2)
Common man, be nice. I know we're anonymous here, but there's a human on the other side.
Re: (Score:3)
Oh man, that's good to know that my knowledge of 10Base5 and 10Base2 network cabling is still useful, and my knowledge of netinfo, netware, appletalk, amigados, PC IRQ conflict troubleshooting, pascal, and of course, the ever popular frame relay. So glad I studied frame relay. because you just told me all my knowledge is never obsolete! I think I'm gonna go out and setup a windows 3.11 workgroup right now!
Is it webscale? (Score:3)
But seriously, for web stuff, php/javascript and for Windows server work, believe it or not, VB.NET, because that's what the code I've got to work with was written in.
Going by the book... (Score:2)
Have a core and use others (Score:2)
I've picked up some Java, Python.
Can do C# when it's the front end (I'm not a GUI guy).
Of course shell script is always useful.
How many times do you switch back? (Score:5, Interesting)
That said, there are some situations where another language is called for. Javascript is pretty much the defacto browser language. Thus I would never try Python or C++ in the browser as that would just be horrible. But I don't really see Javascript as a great a language outside the browser as some people claim. Then there are scripting languages. I use Lua where I give users the ability to extend my programs through scripts because Lua is wonderfully tied into C++ through some awesome language extensions, they are tight and small. So would I say that I switch programming language when I jump to Lua or Javascript?
That all said, some languages are pretty much dead to me. Java is solidly in the trash,
I think that an interesting question would be more, "What language(s) do you presently use, what languages are your last 5 years of code largely in, and what languages are presently on your list of languages you are interested in exploring?"
Re: (Score:2)
Can't speak for the GP but I've found perl a fair language but a little too specialized. If I need a good regex I toss it in one of the C languages (usually C# these days), rather than go out and use perl. Though my programs usually just have basic file parsing so I may not be the proper target developer.
Re: (Score:3)
Depends. (Score:3)
I've been a developer on some pretty damn big projects. The kind of projects used by Fortune 500 companies -- everything from end-user facing applications all the down to low-level infrastructure projects.
If there's one thing I've noticed about all of these large projects over the years, it's that there is rarely ever only one programming language in use. Web apps will use Javascript on the front end and one or more language son the back-end. Large scale C/C++ apps will have a variety of scripts surrounding them. Every project needs an installer, some form of scripting for the build processes, deployment, automated QA, and (frequently) database management. There may even be a mobile app attached to the project. I've had to switch between C/C++, Bash scripting, Java (with JNI), SQL, and REXX, all in the same project.
The point being, if you work on a large enough project, and aren't a junior developer, you're probably switching between a bunch of different languages already. Those languages are probably fairly stable (i.e: you probably won't see too often where you change a massive project from Java to C#), although I've certainly introduced new languages and processes to big projects to make "dumb" processes smarter. The ability to do that, however, often comes when you get to a point in your career where you can specify and/or contribute to significant architectural changes.
I've also been fortunate enough to work at a few places where you can spend 10% of your time working on personal interest projects. If you're fortunate enough to be in such an organization, this is a great time to try out new languages that interest you. If not, find (or start) a project in the interesting language of your choice, and work on it in your own time. If you make it Open Source, and put it on GitHub or the like, you can include it as experience on a resume.
Yaz
At will (Score:3)
I switch between languages several times a day, sometimes I use two at once, doesn't everybody who codes? I have a method for understanding the capabilities of a language by implementing some design patterns when I learn a new one, which is pretty fun to do. I have no shame, I am a geek!
Sometimes the features of one language teach you something new that you can apply to other languages. Learning is addictive, it's why I love programming.
Is it just me or does anyone else get the feeling that these odd questions are being asked by recruiters trying to figure out how technologists work?
Daily? Hourly? (Score:2)
How do you mean "switch". At my work we have a main dev language and a couple in-house languages that are used to generate code. I also use emacs as my main programming environment, so I write a little bit of elisp weekly, probably. Or do you mean how often do I abandon a language and move to a new one forever? In that case, not once in 15 years.
Maintenance vs New Creation (Score:2)
How often is it that you have a brand new system, in which you get to choose your language? Unless you are independently wealthy, or part of a funded started (indirectly independently wealthy, partially) the answer is probably not very often. Whenever someone has a brand new, completely open, technological problem, they have a green field. [webopedia.com]
This is not very common, at least for me. I have a BS + MS in computer science, worked for three years as an employee in two companies, and now own my own small software c
Many times daily (Score:2)
Re: (Score:2)
Why is C/C++ not allowed at your job?
I wish I could choose when to switch languages (Score:2)
I am doing infrastructure for a well known, yet not public SF company. I've had days where I had to write code in 5 languages, going from interpreted languages with almost no type support, to Scala's type battleship. This raises problems for learning: I learned Scala somewhere else, doing nothing but Scala for months. When you can dive deep into a language, it's easy to remember it, and then bring back the knowledge on command. But without a deep dive, it's really hard to learn a language, especially when y
I don't. C for life. (Score:4, Interesting)
C does what I need it to do. Only thing I'd switch to is probably assembly, since that would make the code run faster.
Re: (Score:3)
Don't be Dogmatic (Score:5, Interesting)
You should almost never have the mentality of "I don't use such-and-such-a-language", whether it's because you don't like semicolons, hate whitespace requirements, or some other bullshit reason (come at me, I know you're out there :P). That doesn't mean you can't prefer one or the other, or even gripe about it to your co-workers; just don't let it get in your way.
If you've done enough programming and know at least 1-2 languages fluently, you should be able to pick up another very quickly (less than a week). Often, at a particular company or on a particular project, you don't get a choice. If you do, the requirements of the project will force you to choose between 2 or 3. If you happen to be in a situation where you have absolute control and get the final say on what language to use, then you should choose the one that is best for the job.
But when I say "best for the job", I don't necessarily mean in some theoretical, push-your-glasses-up-your-nose sense. I mean what will allow you to do the best you can to achieve the requirements of the task at hand. If the task at hand is to teach yourself something, choose a language you're less familiar with. If it's to meet the requirements of a client in a reasonable amount of time, choose a language you are more familiar with. If the application is computation heavy and speed is a requirement, choose a more efficient language. If you are not the sole developer, choose a language that your co-workers would be more comfortable with using.
Often (read: always), more than one of these factors will be relevant. It's up to you, individually or as part of a team, to weigh them and determine the best choice. That is what it means to be an expert.
Simply put, you should switch languages whenever you deem it necessary to do so. To know when it's necessary, you have to expose yourself to a lot of different languages.
Re: (Score:2)
Switch? (Score:5, Interesting)
I dont switch. I start to use programming languages when is see it fit and stop to use them when I see it fit. It is not a 'Everything in one language' thing. Depending on the project, languages switch positions.
1987-1990: Basic
1988-today: Assembler
1989-1993: Pascal
1990-today: C/C++
1995-2010: perl
1996-today: octave/matlab
1999-2005: Autolisp
2000-today: Java
2002-today: Python
1995-today: bash
2007-2011: tcl/tk
I switch from C to assembly ... (Score:2)
Then again, I also work with small targets (couple of ten kB RAM, couple of hundred kB Flash).
Oh, and I switch to Matlab script occasionally, when determining what the small devices should actually do.
Fairly regularly (Score:2)
I do compilers, low level OS stuff, debuggers, code analysis tools, so I'm always having to switch languages or keep up with other languages. When I have more of a choice my current preferences are a mixture of C++14, Perl and Assembly ( especially PowerPC ). Modern C++ is a pretty nice language and I consider it distinct from C++98 and earlier. I also have way too much fun playing with meta-programming when I can. And template meta-programming is always fun for adding another level. Wrote a binary object f
Re: (Score:2)
Rarely (Score:4)
I always see a lot of different opinions about programming languages, but how much choice do you really get to have over which language to use? If you want to develop for Android, then you're probably using Java...and if you're developing for iOS, then you've probably been using Swift or Objective-C. Even when looking for a job, all your most recent job experience is usually tied up in whatever language your current employer insisted on using. (Unless people are routinely getting hired to work on projects in an entirely different language than the one that they're using now...)
Choice? Nowadays not a lot, I think; when I started way too long ago, you would choose a language that was accessible (in my case, one that I could find manuals for), then choose a job that required it. But back then you could get any number of jobs simply for being able to code. I started off with assembler, BASIC and FORTRAN in the 70es when programmers wrote in all upper case, added COBOL and PASCAL (still upper case languages back then) in the 80es, then C. I got into C++ in the 90es (because "The Future Has Arrived, And It Is Object Oriented"), and in the last decade or so I have used a much diverse range of languages - ksh and python for scripting, C, C++ and Java for application development, as well as whatever else was required on occasion. But C has been my main language for most of that time.
Maybe the question I really want to ask is how often do you really get to choose your programming languages... Does it happen when you're swayed by the available development environment or intrigued by the community's stellar reputation, or that buzz of excitement that keeps building up around one particular language? Or are programming languages just something that you eventually just fall into by default?
I think most developers really just code with whatever is used in their project, and will be able to change from one language to another with little difficulty. If I should make a guess, I would say that you start off early in your education by choosing the language that best suits your particular sphere of interest - GUI, back-end, kernel or whatever - but you will inevitably get infected by other languages over time. Personally, I have never paid much attention to what is popular or fashionable, but then I'm not a great follower of trends in general; I just use what seems best suitable. I suppose, when you build up your experience, you begin to notice that the differences between all those languages are fairly minimal - there's the old languages that seem to be made of cast iron and concrete, like COBOL and FORTRAN, there's a load of C style languages (including C++ etc), and then there are the "exotic" languages, if you will excuse my choice of words.
Are you confusing languages with platforms? (Score:2)
Most programming languages are the same imperative/OO thing, and after 5 or 6 you just don't care any more. If the project allows, do choose the best one for the job, even if mixing, but don't get too held up on this. As a previous poster said, the main programming language is... English.
Now switching platforms is another problem, and that can hurt a bit. Still, after a while the pain dulls.
Truely switching? Once a decade ... roughly. (Score:3)
I don't do ActionScript anymore (for Obvious reasons) and I've been doing more serious JavaScript lately (same reasons).
I moved into 'serious' PHP roughly 5 years back and will probably use it for another few years. I do various PLs on the side (C#, Python) but not as a mainstay.
I've been trying to pick up a truly compiled language (C++) for decades and now will probably finally do so. I generally like to pick up languages I expect to use until the day I die. That's why I only use FOSS PLs - ActionScript was a sole exception to that.
My 2 Eurocents.
NEVER (Score:2)
Everyday (Score:2)
Full stack coding switching between Java, JavaScript. There's a lot of markup (HTML, XML) and SQL in there too.
I code in FORTRAN90 (Score:2)
Re: (Score:2)
C's "switch / case" statement is bush-league. I once worked with a FORTRAN77 program that used a big "indexed goto" statement. My team almost got tattoos to commemorate surviving that one.
Comment removed (Score:3)
How often do I *think* about changing? (Score:3)
Every time the C++ standards committee get together.
switching languages? (Score:2)
Re: (Score:2)
I came to say something similar - use the right tool for the job.
I take it you didn't see the folllow-up question that makes the actual overall question much less stupid: "how often do you really get to choose your programming languages"?
To that I answer: every time except when working on Skyrim Mods. That's because I program for a hobby and to make my job easier, but it's not my job. When I got out of school I realized I like programming too much to ruin it by getting a job as a programmer, so I went in
Oh about once a semester... (Score:2)
Really depends on the context... (Score:4, Interesting)
In my work, we deal with a wide variety (basically a large number of existing projects lead by other groups). So not only language, but style guidelines, processes, everything we adjust continuously to match whatever project we are working on at that moment.
I have been in other positions where you must not use anything but the one true process, language, and style guideline as set forth by the company standards.
In terms of when I *choose* for starting new, it's based on the available skills of the team I can put together. Despite all the 'oh language X is better than language Y', 99% of the time it doesn't really matter. You can do most things in any language, so it's most important to select whatever your team is most comfortable with. Yes, the potential performance and resource utilization may be better in some languages versus others, but most of the time with average teams, design choices will matter far more than runtime/compiler differences.
Frequently is the answer (Score:2)
It's not just all about languages of course since claiming to be a C++ programmer says squat of your ability to write a GUI. And writing a GUI for a desktop is different from one on a phone or on the web for that matter. So brea
Use the right tool for the job (Score:2)
Using the head of a screw drive to drive a nail might work, but why would someone do that when there's a hammer?
itinerant shuffle (Score:2)
Just resting: APL
In my sleep: C/C++, template metaprogramming
Intermediate: R
Passable: Perl, Python, shell
Long past: BASIC
At least once: Java, Pascal, OpenCL, Lua, VHDL, Snobol, Prolog, Forth, Lisp, TeX
Thoroughly evaluated: JavaScript
A few months back I looked at that list and decided I needed to add some tools more concurrency oriented, and something from the functional camp.
Learning rapidly: Elixir/Erlang/ELM, Go
My strategy in learning a language is to consume as much material as possible from the language
The first one is the most difficult... (Score:3)
Once someone learns basic concepts, such as if..then..else, loops, pointers, and recursion for example, many programming language skills come down to syntax, libraries, and debugging. I jumped from programming COBOL for 15 years to C, C++, and Java without any issues, so I'd guess that someone who is a decent developer to begin with shouldn't have too much of a problem shifting gears to most other languages. I've also worked in a smattering of other languages (PL/I, FORTRAN) and far too many '3rd generation' tools. I even once modified code for a proprietary language I didn't even have a manual for.
Logic, pointer theory, and spatial relationships are probably the hardest things for anyone to understand. Those that can comprehend basic logic constructs and are able to 'see' code in their head can probably easily shift from language to language with ease. Those that struggle with any language probably will have a difficult time picking up new ones.
I think the biggest deterrent to learning new languages today isn't syntax or how the language works, it's the libraries and associated debugging skills. I had far more trouble learning C, C++, and Java libraries than I did learning the actual language. Modern IDEs make it a bit easier with predictive typing and on-screen syntax checking. But trying to figure out how to read a file or output to the screen can be extremely difficult in some languages because of all the possible options with all of the different libraries. Fortunately, anyone skilled in Google can usually find code examples rather quickly.
And then there is debugging, which I think is still an art. Many years (decades??) ago, I had a developer come to me with a persistent bug he couldn't fix. After he explained it to me, he started to show me the code. I stopped him, and told him to go look at a specific part of the program, he was missing a period. He thought I was pulling his leg, but left and came back shortly and asked how I knew what the problem was without even looking at the code. I remember saying to him 'Scott .. the only difference between you and me is I've already made that mistake several times'. Debugging, like libraries, in any language takes significant experience to get good at.
Re: (Score:2)
I'm using Ruby for portable code, and plain C for Android-only. There are lots of options. The world is full of plenty.
I do still end up writing a few lines of glue in Java, though.
Re: (Score:2)
Re: (Score:2)
Can anyone explain why some people have such an irrational hatred of Ruby?
There are some really bad languages out there (Ruby isn't one of them) but none seems to garner quite the same mindless abuse.
Re:Is this question from five years ago? (Score:5, Informative)
The first is the implementation of the language. You start with Smalltalk, take out the bits of Smalltalk that are difficult to compile, and then end up with an implementation of a language that is slower than something like Squeak / Pharo, which are simple bytecode interpreters. That doesn't fill anyone with confidence in the language. I can understand Ruby not being faster than a JIT-compiled Smalltalk, but there's no excuse for it not having been faster than a reasonable Smalltalk bytecode interpreter from day one.
Then there's the community. The Ruby community spent a good decade taking 30-year-old ideas and claiming that Ruby had made them possible, that Ruby developers had invented them, and this is why Ruby is so awesome. Rails is a good example of this. ORMs have existed since the '80s. WebObjects was arguably[1] the first ever web app development framework and it included EOF, which did the same thing as Rails in Objective-C (later in Java) and has had an open source reimplementation since the late '90s (GNUstepWeb, later SOPE, the latter of which is used by [Scalable] OpenGroupware.org). Oh, and WebObjects had much better developer tools than Rails, supported multithreading long before Ruby was able to run multithreaded, and was an order of magnitude or so faster.
[1] There's some disagreement, related to announcement / beta / shipping dates, but it's either the first or second.
Re:Is this question from five years ago? (Score:4, Funny)
I looked at the syntax of Ruby once, immediatly hated it, and never looked at it again.
Re: (Score:2)
Re: (Score:2)
Xamarin
Obviously one I'm not familiar with, but had you not said it was a programming language I would have bet heavily on it being a psych med.
Re: (Score:2)
Reminds me of the old days..
That's the only reason I do computers anymore. The new stuff is not so fun, even with arduino and rpi. I recently (re)started with my old atari computer. Still works after 36 years. Reading the retro sites, I never realized how much it was targeted toward gaming.
Re: (Score:2)
Re:So far, I don't (Score:5, Interesting)
For small programs, compiling C++ at -O0 takes under a second and the result runs faster than any interpreted language.
Re: (Score:2)
Root (Score:2)
How do you do c++ scripts?
You use a package like ROOT [root.cern.ch] which we use at CERN for data analysis. The original author had the idea that he would save physicists the time to learn a separate scripting language by using interpreted C++ as a scripting language. As you can imagine this did not work out very well. Firstly C++ has an appallingly bad syntax for scripting use and secondly there are many features they were unable to script like virtual functions.
The result that the scripting language was more of a C+/- which was badly docume
Re: (Score:2)
Re: (Score:2)
env.exec("bla bla bla blaa ");
why do you think you need scripts anyways?
So what language is "bla bla bla blaa " then? You're basically telling us that you write your bash scripts without proper syntax highlighting ;-)
Re:So far, I don't (Score:5, Interesting)
C/C++ is good for canned software meant for wide deployment where you have fine tweaking of the performance so it can run fast on a big set of software. However scripting languages are good for those internal jobs that need to be fast enough but programmed quickly without all the rigor, so you have a useful app running quickly.
Most of my programs I make are server side and I rely on scripting languages to do much of the grunt work because they can do it without the fuss of C.
Re:So far, I don't (Score:5, Funny)
So you are the one that writes all those scripts in the task scheduler with no error handling or logging that fail all the time and make my life a living hell.
Re: (Score:2, Insightful)
My sentiments exactly. I'm currently reverse engineering a major enterprise-level mission critical report- and it's data acquisition is based entirely in SSIS, DTS, and VBS scripts, over 300 of them, run from a task scheduler.
GRRRR.
Re: (Score:3)
Let me guess they are tied to some kind of integration and reporting services that combines many systems that really aren't services they are just a bunch of crap with no documentation and the moron that cobbled it together from a million articles he googled no longer works there.
Re: (Score:3)
He's a parts salesman who did this without checking with IT. So you're absolutely correct. Zero budget other than his own salary, that became two rogue servers living under his desk and his laptop.
Re: (Score:3)
Zero chance of that in this case. Too much dataflow, from 15 different systems near as I can tell. I just hope he doesn't quit suddenly requiring a policy password change- he's hardcoded passwords in EVERY FREAKIN SCRIPT!
Re: (Score:2)
Re: (Score:3)
Re: (Score:2)
Unless you are working on a team then you need to compromise on what language to use.