Quantcast
Channel: Hacker News
Viewing all articles
Browse latest Browse all 25817

Ask HN: What “old” programming languages will you still be using in 2017?

$
0
0

Many folks have said it here but I'll say it again: Common Lisp.

I have been using it professionally for 5+ years as a full-time employee at various companies. Some big-name ones, some smaller start-up ones. The mean Lisp team size has been around 4, but I did work on a project of 15 Lisp programmers. None of these projects were legacy code. Some were in places you wouldn't expect (embedded, multi-processor systems on custom-designed boards, for example). In every single case, we had no additional trouble hiring a Lisp or Lisp-capable programmer as compared to hiring for any other language, including Python. (In fact, Python was more difficult to hire for because the market is saturated with beginners who claim expertise.)

Lisp is one of those languages where the ratio of long-term benefits and productivity vs. good initial impressions is at a record high. It doesn't look like C or Python or JS, with all the parentheses, so people brush it off.

Lisp isn't the pinnacle of every great idea to come about in computer science and software engineering, but it is one of the most robust, macroscopically well designed, and most productive languages for translating arbitrary abstract ideas into maintainable, production code. Even if it doesn't look initially very pretty in the eyes of a career Python programmer.


>In every single case, we had no additional trouble hiring a Lisp or Lisp-capable programmer as compared to hiring for any other language, including Python

Doesn't that imply an over-supply?

I did my grad research on a highly specialized topic, involving plenty of math/physics.

Then I worked in industry applying my skills for 4 years.

Then I switched to programming - nothing related to my engineering degrees. This job requires only a BS (and not really that - one of my coworkers has no degree).

The highly specialized job was the one where I had little leverage, lower pay, and a miserable experience. Why? Fewer jobs than supply.

Whereas for programming, the supply is much larger than for the specialized work, but the demand is even larger than the supply.

The geek in me yearns for a job where I can go back to numerical algorithms and physics. But frankly, those jobs tend to suck when you don't have much leverage.


Does it indicate over-supply? Maybe, but it's probably a bit more complicated than that. There is a very large supply of self-proclaimed Python programmers. (There's no official accreditation of this, of course, so we can only go by self-proclamation.) But this is unlike, say, raw materials supply for building a bridge. A lot---and by "a lot", I mean enough to be noticed when hiring---of the "Python programmer supply" is under-skilled. So, in reality, and limited to my own experience, the supply of skilled, knowledgeable Python programmers is much less than that of the total supply, so I'm not sure I'd label it as "over-supply".

With that said, though, and especially with huge companies like Google using Python as one of their main languages, the supply of qualified Python programmers is no doubt larger than that of Lisp. But, it's a fallacy to believe that the supply of qualified programmers correlates inversely to the time spent searching for them. It's sometimes easier to find needles that standout in the haystack.

As for software jobs in the domain of math/physics/etc., they're out there, but just harder to seek out. The world hasn't run out of hard science problems to solve, and many companies would go to great lengths to hire brilliant individuals who have both scientific acumen and programming skills.


If you have become a truly skilled industrial programmer, you can very easily go back. There are a lots of interesting scientific programming jobs, but your typical Ph.D or post-doc is only half trained for them, at best.

There are fewer pure research positions, and unless you are very good there is a leverage problem there because every year dozens of new grads come looking for essentially that job. Something to bear in mind if your desire is primarily to work in matlab/python/R on things that look a bit like your thesis did.


- sh (I really don't use bash features in scripting)

- awk

- perl

- sed, if that counts as language.

It's funny that a course that I took in university almost 29 years ago, for learning the use of Unix scripting tools, is one of the most useful learning experiences in my daily work today - even if my job is not really a programmer. But very often I see colleagues (project managers, architects etc) struggle with processing information in ways that involve a lot of repetition and manularity. Scripting solves those things.

(For some things also Excel and VB perhaps counts as an "old" programming language; it is also often quite useful. And I probably will end up doing something in C again this year.)


Too true. When I was 13 or so, I read the DOS 5.0 manual from cover to cover. If I recall, a lot of it was about batch files (autoexec.bat and stuff). Batch was really my first "programming" experience.

Then when I was 22, after a good computer science education, my first job was working at EA, and the build system involved a bunch of batch files. That knowledge from nearly a decade before came in handy! The CS stuff didn't come up until later.


I'm not a native English speaker. I could throw in that the best thing regarding learning I did (in addition to buying a home computer) was to get J.R.R. Tolkien's The Hobbit (which came with the adventure game) which in turn led me to read LOTR and then other books in English, and generally become much more fluent.

Later on, wasting time reading NNTP news at the uni was also actually a good investment for learning the language in a way that is useful at work.

For my kids, the games have again been the same thing, along with Harry Potter books.


Absolutely! Can I ask if you are taking these nodes the old fashioned way with pen and paper or are you using a program to do this?

I myself have found out that during meetings I prefer to use a pen and paper but it is mostly just notes that I take for myself.


I am not who you were asking, but I exclusively use pen and paper during meetings. I try to keep my laptop closed and transcribe action items to a personal trello board after the meeting is done.

The trello part is more recent, but I have notebooks going back to my first internship in 2012(which I know isn't that long for most here). It's pretty interesting to see old notes I took and the problems I had at the time.


I love that I'm at a company that I haven't had to use SQL. I don't know if I could even find a relational database here.

But in a classic meme sense: "It isn't you I hate SQL, it's what I have to think about when I use you." I don't want to spend my time thinking about database indexes, query plans, or other complicated bits. I just want to get my data out.

Sometimes I struggle, and I'd give anything for a plain inner join, but on the whole I like this tradeoff.


I still teach SQL, via SQLite, as a first language to students, even though in practice I do 90% of my data analysis through the command line or Pandas. But SQL is very direct and clear as a language, and the overhead of SQLite is...well, light. Making an index is just one more line of code that for many datasets, you run once and never touch again.

What do you find simpler in terms of data querying and management?


I love sql myself. I'm not sure why I love it so much and other people hate it. Sometimes I think that coming up with reasons is just after the fact justification (do I really like it because it has a solid mathematical foundation in the relational calculus, or does that just sound like a good reason to say I like it)?

Pandas is an excellent contribution to data analysis, but I gotta tell you, I was absolutely delighted to learn about pandasql and realize I could write selects, group by, order by, and so forth, converting data frame to data frame through sql.

What can I say? I truly encourage people to give SQL a real chance. I'm happy to use ORMs that save me some typing on simple queries, and certainly I use a combination of pandas and sql, there are some things much better accomplished through a programming language. But I'm willing to drop to SQL pretty quickly if I sense that the programming language or library is really just forcing me to re-learn a new implementation of sql.


The functionality of SQL is great but I really wish it would like more look like other programming languages. I wonder how SQL would look like if someone would design it now.

It also should integrate easier with other languages. Using SQL from C# or C++ is a real pain with tons of casts and string manipulation. Better debugging would also be nice.


Hard to imagine how it's to live in a company that has no database. But I do take issue with that:

> It isn't you I hate SQL, it's what I have to think about when I use you.

Do you live at the fringe of performance like that? Nobody spends much time thinking about those things, and the few times that require thinking about them would require thinking about much more complicated things if you weren't using a database.


C++ has this weird evolution curve where as you start using features things improve up to a point then go downhill, but then go uphill again with new modern features

If you limit yourself to using the STL with C++11 stuff but don't go crazy with inheritance and templating in your classes it can be nice


Well, I was using the term a little sarcastically since it is (I think) usually applied to multi-tier web service architectures.

In my case I have an embedded system with a touch screen display, running a bunch of tasks to drive peripherals. There is a task that handles communication with the touch screen (serial). Then there is a set of slow tasks that handles states and modes, for example the runtime representation of a modulator or an RF amplifier. This got extended because we are adding "remote control" support over RS-232 and USB and so this runtime representation has to support more of a multiple model-view-controller. This can be done with queues and a lot of functions but it was simpler to represent it as a tree of stateful values that can be updated via remote commands or via the touch screen and have "downstream" updates. So that's what I mean by the "business logic" -- higher-level than, say, a driver and task for talking to a digital potentiometer or a DAC.


Hands down the best thing about C++ for me is that with modern C++ you can write relatively safe clean code while taking advantage of decades of robust libraries.

Yeah, Rust is a big step forward in some respects, but it'll be almost a decade before we see it catch up to C++'s incredible ecosystem. C++ is almost the lingua franca of finance, for instance.


Lisp, and specifically Common Lisp although the latter isn't that old.

It first appeared in 1984 and the ANSI specification was finished in 1994, but it traces its lineage directly back to Lisp 1.5 from 1962. It can run Lisp sources decades older than it trivially.

It is a very practical, multi-paradigm language with high quality, high performance implementations on many platforms.

Its main issue is that it is not very popular, but that might also be a blessing.


I found expect (which is Tcl + some extensions, I believe) to be quite useful.

Implementing something like modem initialization - "Send AT command to modem/wait for a reply matching one of several patterns or a timeout/handle result/rinse, lather, repeat until done" - is quite trivial to do with expect.

It's not something I use every day, but it's one of those useful things to keep in your mental toolbox.


C (I hate C++)

assembler (various) (I've even learned x86_64 well after being a RISC aficionado, it's actually kinda neat)

sed

bash

LaTex

I used to use YACC/LEX but that's been replaced with ANTLR for awhile now.

What language am I starting to use? Rust and R.

I wrote something in PERL once but when I woke up the next day I couldn't really read it. So that was that.


Delphi

I'm in the process of "inheriting" a company whose sole product is a multi million LOC behemoth written in Delphi. The product itself is a highly customizeble/parametrizeable control software for business processes/alarm management build around a rule engine for rules drawn in a graphic editor.


I inherited a Delphi program written in-house for our accounting department. Thankfully it's only about 10,000 lines of codes, and the code is quite readable. But I still have to explain to our accountants how little I know about accounting (it has something to do with money, right?).

On the plus side, Delphi is quite easy to read. I got started with no prior knowledge in Delphi or Pascal, and I was able to roughly understand significant parts of the application within a few days.


Pascal/Delphi

Before there was an internet of lightbulbs and smoke detectors, there was an internet of industrial process things.

And they used windows 2000 and Delphi. They still do.


Delphi/Pascal ran the call center telephony system at a company I worked at, and it ran it well. It was very performant and stable, and ran things for around 14 years.

Spent a while writing and modifying Delphi apps there, I really enjoyed it. I'm actually surprised it isn't used more today, it was definitely "rapid development" at the time.

One thing it was great for was making small, dependency free executables. Similar to today's concept of "Microservices" we often wrote small executable services and applications for tasks and it was very straightforward and simple. You could whip something up in a couple hours that accomplished a lot. Push the .exe file somewhere, add it into the process and forget about it.

Not surprised people are still out there using this stuff.


I am working on 20 years old codebase that runs accounting, warehouse management, time tracking, invoicing and whatnot monster that power most of the roofing companies in Austria. It is still Delphi 5 + Paradox, developed on Windows XP (I run it from VM on Mac), but work on modern Windows as well. Networking is a bit of problem, but nothing we can't deal with.

On the other side, I don't think that Delphi/Pascal is dead and I am starting new project this month: control software for laboratory equipment. I can't find any other tool that will let me create multiplatform desktop software that interface directly with hardware. This new software will be written in Lazarus instead of Delphi.


"Before there was an internet of lightbulbs and smoke detectors"

Hahaha. That was good.

Delphi is used heavily at my company to process millions of transactions a day, in the credit card industry.

I myself am a C# developer though. But I respect Delphi's performance and relatively clean syntax.


Hence why I consider a big error to have created the CLR in first place.

Now we kind of got .NET Native, but it still isn't 100% done.


I learned to program with Delphi and this was 2.5 years ago, since then I've been actively working with.

My only problem is that I have to maintain legacy codebases without OOP code.


There are still a bunch of modern Windows desktop applications written in Delphi and C++Builder – I work on one of them. ^_^

I really like Delphi actually. It's a shame Embarcadero doesn't really seem to care about it.


I spent time recently in the webcasts for the new version of Delphi, and from what I saw they're doing some good work. The mobile development for example is enticing.

But, and I asked during the webcasts, who's going to buy into a new project now?

For myself I have a couple of old D7 apps for clients that have been running for a decade now.


As a hobby this year I'm beginning to experiment with mechanical computer designs, implemented in Lego Technics (yes, really). That's going to involve looking back to Turing machines, Babbage's difference engine, the Pascaline, and various other contraptions. I guess you could consider the means of encoding instructions for such machines to be programming languages, albeit very primitive ones.

Here's a couple of machines that others have built:

https://www.youtube.com/watch?v=FTSAiF9AHN4

https://www.youtube.com/watch?v=i_u3hpYMySk


Siemens Step5 (for maintaining an installed base of S5 PLCs - the most indestructible piece of computing hardware ever designed, IMHO.)

Also, some work in MPASM (Assembly for the Microchip PIC series of microcontrollers - same reason)

Edit: I am not sure just when S5 got introduced, but I've got installation media - on 5.25" floppies - for CP/M in my office. Made in West Germany.

That old.

Luckily, the IDE has also been ported to more contemporary operating systems.


I do scientific computing in academia.

Secretly, it's just fortran all the way down, and LaTeX for document preparation.

Piled on top of that is a fair amount of matlab, simulink, and python.


Perl is one of those languages that nobody likes at my work, but that is impossible to get rid of.

Java is in the same boat, but at least it's still marketable so engineers don't mind working with it as much.


I once worked at a place that basically just used perl server side. In this decade (2010s). The codebase was just one tangled mess.

They told a story of a guy who failed the cultural interview because he told a VP "you can't write a large web app in perl", and of course they had done just that. With the reflection of hind sight I think despite the obvious empirical counter factual, he was on to something. It really was an uphill battle against the language to do things large scale.


It's not impossible, it's a cultural mismatch. Perl is obscenely permissive, which makes it a really interesting and weird language.

But when you work in a big team and make something complex, you want something that's consistent. All of that permissiveness and flexibility bites you.

Now, with good styling guides and linting, you can make it work for complex software with a big team, but that's culturally pretty anti-perl. We're trying to do that with Javascript now, which isn't as weird as perl, but has many of the same excesses that you want to reign in with a style guide.


Emacs Lisp. I want to port all my remaining sh awk and perl stuff to it, and I'll havee some time to do that in the coming weeks.

Also, m4. I use it together with awk and bmake for a couple websites. I plan to port awk scripts to sth. else though, I keep forgetting awk.


Emacs lisp is just so immensely sticky... once you cross the initial "what's up with this crappy lisp?" threshold, and have a finger caught in its web, you suddenly just want to put your hands all in. And then find more hands to add to the pot.

I expect it to stay around a good, decent while :)


uses PHP and JS

Those aren't old enough to count, I guess

googles age of PHP

Holy crap! PHP is almost 23 years old. Probably still not considered "old" though...


JS is actually 21 now. According to wiki, it was developed under codename "Mocha" and shipped with Netscape Navigator 2.0. [1] "May 23, 1995" Personally, I'm pretty sure the version of "JS" when it was first released and more modern JS share very little other than logic and symbology, I think that can be said for many programming languages.

[1] - https://en.wikipedia.org/wiki/JavaScript


Perl and Javascript.

I make web apps and started using Perl for cgi scripts back in `97 and still use it. Most of my app code now runs on the client side with Javascript so I don't do much with perl anymore but I still use it for most everything on the backend.

Learning to code something with new or different languages is not something I do without good cause and/or necessity. I haven't ran into that much building web apps.


I've just being doing some work in B (C's predecessor).

I suspect I may have the only B compiler in the world for the VideoCore IV processor.


Perl 5, of course!

It's an awesome language and both the language and the ecosystem is getting better and better all the time


I have written a number of Perl scripts (both CGI and batch) to make up for shortcomings in our ERP system, and to hook up our ERP system to our PDM and financial accounting systems.

Also, I have written a couple of reporting scripts to watch over our Active Directory (look for computers that do not exist any more but still have their AD accounts, stuff like that).

Oh yeah, and a couple of Nagios plugins, too.

For these tasks, there are not many languages that can match Perl in versatility and productivity. It's not the prettiest language, but it's extremely useful.


For the last 2.5 years I've been doing RPG - both the newer free form and older fixed. I can imagine I'll be doing it a lot more within the next year also. A lot of people give it hate, but it's a pretty simple language after you use it a lot.

It's possible I will start to write C++ also.


Have you seen the game called Human Resource Machine?

This is not actually a joke comment -- it teaches assembly language programming. Not 6502 specifically, but the fake architecture looks a lot like 6502. You work up through a set of more and more challenging assignments until you have to write a sort. I really enjoyed it and would consider it a great introduction to basically any assembly language.


Mostly, I'll be writing a lot of fairly old fashioned C++ (my current project is yet to use a single smart pointer or lambda, lots of templates though) for high performance numerical work.

Also, I guess writing code in Python 2 is considered outdated nowadays, so that too. Plus the usual shell scripting (bash on Linux and simple batch files on Windows).

I do hope to avoid writing any new Fortran this year, so there's that. Some of the less performance critical code will instead involve Julia, and I've been experimenting with D and Rust for fun. Not sure which category Java and C# fit in, but in all probability I'll also use those at some point.

And finally, LaTeX. Very old and, unfortunately, indispensable.


Lisp. For all purposes. It conquered my brain in 1988 and ever since then it's the first thing I turn to whenever it's an option. My favorite Lisp ever was Ralph. My favorite nowadays is Common Lisp. Generally speaking, I like any Lisp better than anything else, but I prefer those that preserve the whole interactive programming-as-teaching culture in all its glory.

Python for when someone needs me to work on Django, and also for helping my younger daughter learn programming, because it's a pretty accessible place to start.

C when I need to be that close to the machine and there's some reason not to use Lisp.


What's old? Anyway, I'll be using:

Ruby, age 21. Web development, some text processing scripts. Design started on February 24, 1993 first release on December 21, 1995. [1]

Python, age 25, almost 26. Web development. Implementation started in December 1989. First release on February 1991. [2]

JavaScript, age 21. Web development. Designed and released in May 1995. [3] However if Ruby and Python are clearly the same languages they were 20+ years ago plus the natural evolutions, I don't know if the JavaScript we're using today has anything more that a resemblance with what it was back in 1995. After all we say we're using bash (Bourne Again SHell, it couldn't be more explicit) and not sh, speaking of which:

Bash, age 27. Scripting. Coding started on January 10, 1988 and released on June 8, 1989 [4] If we count the Bourne shell, that is from 1977 (age 39), coding started in 1976 [5]

Erlang, age 28. First prototypes running in 1988, work on BEAM started in 1992, in production as we know it in 1998 [6] Actually I'll be using Elixir for backend coding. Sometimes all what an Elixir module does is calling Erlang modules so it's handy to code that directly in Erlang. The Elixir compiler handles compiling and linking Erlang well.

[1] https://en.wikipedia.org/wiki/Ruby_(programming_language)#Hi...

[2] https://en.wikipedia.org/wiki/History_of_Python

[3] https://www.w3.org/community/webed/wiki/A_Short_History_of_J...

[4] https://en.wikipedia.org/wiki/Bash_(Unix_shell)#History

[5] https://en.wikipedia.org/wiki/Bourne_shell

[6] https://en.wikipedia.org/wiki/Erlang_(programming_language)#...

Considering that PHP, Java, C++, Perl are also in their 20s (and Objective-C is 30+), should we really call them old languages or old should that be reserved to something dating back to the 70s or the 60s? (C, COBOL, Fortran).


I have written a number of CGI scripts (in Perl, of course) at work, and my relationship with it oscillates back and forth between love and hate.

I would like to replace it very much, because I don't like Perl 5's type system very much (and something like Moose is overkill, IMHO, for a 500-line-script).

But it's just so damn useful, and most of the time I can get something to work faster than with Python or Go. So I might not love Perl, but you could say I respect it very much.


Fortran, COBOL.

Though I don't consider Fortran "old" as it has many shiny features.


Amazon, Facebook, WhatsApp and a lot of companies use Erlang. It's not only used in telecom even though it was made by Ericsson.

EDIT: Removed the "naive" part.


IBM's High-Level Assembler and JCL mostly.

I develop mainframe software.


- python: my general purpose go-to language

- sh/awk/sed (I don't really think of these as separate languages): mainly for scripting things that aren't worth firing up python for or that are easier to script this way

- javascript: for web front ends

- html/css: ditto

- possibly c: for particular things where I need more speed/control over memory than python can provide


Lua feels awkward to me when used as a standalone scripting language.

When embedded into a C host applications, it is really nice, though. There is also a port of Lua 5.2 to Go, which has a slighty confusing API (to me, at least), but the documentation makes up for that.


bash (27 years) - I tend to write for bash 3 and up, totally happy for my scripts to not work on Bourne shell

powershell (11 years) - basically just a better version of bash with 'select' and 'where' replacing scraping for text with grep/sed/awk

javascript (21 years) - finally ES5 and 6 have added some stupidly obvious things like multiline strings, array.includes(), destructuring, etc - it's actually a pretty good language now.


I had not even thought of that. But yeah, if SQL counts, I'll probably be writing a couple of hundred lines of SQL in the coming year.

It can be surprisingly fun to see if I can get something done in "pure" SQL without any procedural code.

I feel a little sorry for the poor soul who may one day inherit that code, but on the other hand, at least I write comments to explain why I do things in a certain way, which is more than my predecessor did.


http://freepascal.org/ is a thing.

Also, there is Lazarus which seems to be the FreePascal-alternative to Delphi. I took a look at it when inheriting a Delphi application at work, but it crashed on me a lot. Still, it's there.


ActionScript 3

purpose: sysadmin, automation, server-side programming, daemon, shell / interactive shell, command-line tools etc.

well ... it's not that old (cerca 2006) but it is considered dead LOL


Believe it or not, I actually deal with Progress too.

I feel your pain. :-D


Why FreePascal over Qt for cross platform gui applications?

I had a contract doing C++/qt stuff 2015/2016. So I could conjure up my own reasons for and against. But I am curious about yours as I am largely ignorant of pascal.


C/C++ for the usual embedded and backend stuff. And a tiny bit of legit COBOL, because our orginization is married or perhaps chained to it. The COBOL code is mostly for UI work, sort of a VisualCOBOL, as well as legacy reports.

And of course the usual Linux scripters: bash, awk, sed, etc.


Lucky - you get to rewrite it.

Our COBOL comes from a software vendor, so rewriting it means waiting for them to decide that the cost of redeveloping decades of complex business logic in a new language/toolset outweighs the cost of supporting and enhancing these COBOL programs.

Fortunately it's a mostly read-only codebase. The number of times we've changed the COBOL code ourselves can probably be counted on one hand.


Common Lisp for all of my hobby programming.

Edit: Well not all of it. I'm also learning rust and scheme in my free time.


DataFlex - used for business apps, gets plenty of use in medical, accounting and banking and some web integrations.

Delphi - crossplatform development, tools

SQL - see above

C++/C# - tools

bash - scripting, mostly for managing servers


For my day job, Python (it's 25, that's old) mostly. Primarily as the machine learning platform (all of it, from models to infrastructure) for the products my team develops for the company.

For my spare time work mostly Fortran, C and C++ qualify as old languages I'll be using. These I use to dabble in research (physics) more for fun than anything else.


C - Wanted to get into some embedded programming. I was going to do some Rust for this, but I figure I might as well learn some C as well.

Bash - I already know some Bash, but I want to become a bash guru.


6502 assembly.

I just enjoy cracking old Apple ][ games in my spare time, it's an incredibly rewarding challenge.


For some historical reference:

Generics came with C# 2.0 in November 2005 (12 years old)

LINQ came with C# 3.0 in November 2007 (9 years old)


Powerbuilder!!!!

We have a bunch of mission critical desktop application that run on Powerbuilder.


Old programming languages don't die, they just slowly fade away.

The oldest thing I periodically touch is VBA for Excel


- bash

- Python (esp. Django, which is for some reason uncool)

I also have this weird desire to jump back into C, just to refresh myself.


C++98 with a few C++11 features for work (our compiler is not really C++11 compliant at all, but it does have move semantics).

Ada for fun, though I'd say Ada 2012 is a bit like C++11 in terms of “basically a new language”. People do seem to have a perception of Ada as ‘old’, though I'm not sure why (it is, by my account, more ‘modern’ than, say, Go – actually, it's not unlike Go with a nice generics system).


Viewing all articles
Browse latest Browse all 25817

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>