[NA] Which programming language is the worst?

What is the worst language you've had to code in?

  • Perl

    Votes: 5 13.5%
  • C

    Votes: 1 2.7%
  • Cobol

    Votes: 6 16.2%
  • Fortran

    Votes: 6 16.2%
  • Assembly

    Votes: 4 10.8%
  • LISP

    Votes: 6 16.2%
  • Java

    Votes: 4 10.8%
  • C++

    Votes: 3 8.1%
  • Some proprietary non-sense

    Votes: 14 37.8%
  • Basic

    Votes: 4 10.8%

  • Total voters
    37
- In concert with above, how about some feedback that the program/app/whatever is waiting on data from somewhere else? "I thought I pressed the button, did I really do so? I'll press it again! Now I have two instances of a web page or something!"

ya mean like the progress bar with "estimated time remaining" that has no basis in reality?
 
ya mean like the progress bar with "estimated time remaining" that has no basis in reality?
That's better than no response at all. At least I know the system is reacting to me. It's better than "I'll press the button again because nothing seems to be happening" and starting the process all over again!
Good programming languages should also let the user know some version of "this is taking too long- here are your options:"

I'm sure that the experts here could come up with something usable.
 
That's better than no response at all. At least I know the system is reacting to me. It's better than "I'll press the button again because nothing seems to be happening" and starting the process all over again!
Good programming languages should also let the user know some version of "this is taking too long- here are your options:"

I'm sure that the experts here could come up with something usable.

that's not the programming language, that's the user interface
 
A bit of history. In most modern languages, new versions may be named by year of acceptance or even sequential. For example, Python 2.x evolved to Python 3.x. Versions of FORTRAN were year-based, e.g. Fortran 66, Fortran 77, Fortran 90 and the ultimate obscenity, Object-Oriented Fortran (yuck). Bjorn loved C but wanted more, so he invented C++. The ++ is the increment operator in C++, among other languages, which means increment the value of the variable by one. Hence C++ was one increment better than C. COBOL, not one to miss the boat, has an improved version, named ADD_1_TO_COBOL.
C++ always bothered me as a name as it uses the postfix operator, which implies that although a new version of C is produced, you get to use the old one.

It should have been called '++C'.

BASIC will always have a special place in my heart because it's what I first learned to program with back in the early eighties on a Sinclair ZX81 (Timex Sinclair 1000 in the US). Fun fact: Mike Busch was involved in the development of the original BASIC at Dartmouth College while he was a student.
 
Past me has screwed me more than anybody else in my career. I also occasionally leave apologies in the comments for myself or others when I leave something I know is a mess to be dealt with later. And, of course, the "woe unto thee" if you try to modify this procedure warnings. Convoluted problems sometimes require convoluted solutions.
100% Yes.
And sometimes client requirements, which aren't really convoluted but arrive to you piecemeal and evolve (or devolve) throughout development, also leads to convoluted solutions just to get it done in a reasonable amount of time.

I've been drip-fed changing requirements on enough occasions where I usually try to do a mockup of the final product and propose 20 different things before we start, just so we can avoid late stage alterations that should fundamentally change how it works.
Therefore, whenever I'm "finished" and I hear a sentence matching this structure: "we were thinking it'd be good to add in .+", I know I'm gonna wanna blow my brains out at what comes next.
 
that's not the programming language, that's the user interface
And isn't the user interface written with at least one of several programming languages? Hence, they all suck!

There's a bit of sarcasm here with me mentioning user interface issues in a language thread. Maybe some of the programmers will read and understand.
 
Last edited:
100% Yes.
And sometimes client requirements, which aren't really convoluted but arrive to you piecemeal and evolve (or devolve) throughout development, also leads to convoluted solutions just to get it done in a reasonable amount of time.

I've been drip-fed changing requirements on enough occasions where I usually try to do a mockup of the final product and propose 20 different things before we start, just so we can avoid late stage alterations that should fundamentally change how it works.
Therefore, whenever I'm "finished" and I hear a sentence matching this structure: "we were thinking it'd be good to add in .+", I know I'm gonna wanna blow my brains out at what comes next.
That's the one advantage to Fed contracting....oh, you want to add this? No problem, it'll cost this much, take this much time because it's not in the contract.
 
Therefore, whenever I'm "finished" and I hear a sentence matching this structure: "we were thinking it'd be good to add in .+", I know I'm gonna wanna blow my brains out at what comes next.
That's why it always works out that at 90% completion, you're halfway to the end of the project.
 
Me: "This doesn't make any sense. Who was the idiot that wrote this code?"
Coworker: "You. You wrote it, that's why I'm asking you about it."
I've been at my current gig long enough now that this is happening with regularity. Now, I just start with, "Am I the idiot that wrote this?"
 
Me: "This doesn't make any sense. Who was the idiot that wrote this code?"
Coworker: "You. You wrote it, that's why I'm asking you about it."
I have had someone come to me begging me to explain how some code works and I swore I had no idea, and had never worked on it until he showed me dozens of commits (including the original version) with my name on them. So I changed tactics and responded "do you really want to get advice about it from someone that can't even remember they worked on it?" To my dismay, they still did.
 
One time at work, years ago, a team approached an engineer, asking him why the specification had "3567" as a requirement (for the purpose of this discussion, it doesn't matter what). They knew he was responsible for writing the requirements document a few years earlier.

The engineer was really baffled as to why he had put "3567" as the requirement.

Finally it dawned on him... he recalled that he was being badgered to "pick a number, we need a number". 3567 was his phone extension.
 
In the 90's I worked with a guy that liberally used unions in C so he could use variables for two purposes in a function without allocating more memory. If he needed a variable a hundred lines into the function (yeah, I know, lots of issues here) he'd just find one of the type he needed and create a union for the new name and start using it for that from then on. When I had to work on his code the first thing I would do is get rid of all the unions. Most of the time that was all that was needed to fix the bug, but on at least one occasion, it created a bug due to the fact that the code sometimes expected the variable to be shared memory. Absolutely insane to think anyone would do something so crazy.
Taking a guess? Borland's C compiler wouldn't let you have variable space exceed 64k I think, even on a 386 in large memory model. An undocumented bug. Did I mention Intel's memory models are lousy? Oh, and I loved turbo C, but not that going from a command line app to windows GUI made hello world go from one line to something like 300. About when I put my books on the shelf and only did programming for fun in some version of assembler or another.

Worst apps I've seen? A non-programmer, non-dba writing Access apps. Let's query the whole database over a wan a couple of times, even better if you figure out how to do a cross join at the same time with a set of data you didn't need anyway. Then ask the network team why your app doesn't work. Make it better by doing all of the forms with some sort of undecipherable java script/VB stuff on fields, rather than just using the fields as-is. I don't miss sysadmin work.
 
LOL....yup.

When I was fresh out of grad school, I got a contract to clean up a small business dBase project that was coming apart. Basic accounting and inventory mamagement stuff - the usual.

I got the source code and immediately saw the problem. The project lead (a cute blonde programming student), thought that it was a great idea to use animal names for variables. Seriously. Instead of "Float32InvoiceAmt" or "IntQtyInStock" she had written the entire project using "Cat", "Dog", "Bear", "Snake", etc. :mad2:

Apparently, some CS professor along the way had told her that variable names didn't matter.

Solution? Apply grep liberally.......
Oof. I had to maintain a project where all the variables were “X”, “Y”, “X1”, “Y1”… except for one labeled “hypotenuse”.
 
C++ always bothered me as a name as it uses the postfix operator, which implies that although a new version of C is produced, you get to use the old one.

It should have been called '++C'.
This. This is the level of pedantry I aspire to. Well done, sir. :rofl:
 
Taking a guess? Borland's C compiler wouldn't let you have variable space exceed 64k I think, even on a 386 in large memory model. An undocumented bug. Did I mention Intel's memory models are lousy?
This was the 90's, even then we had enough memory available to spare two more bytes for another int variable. I'm not talking about huge arrays of data, or complex data types. There was no defensible reason to do such idiotic things. I'd say it was job protection, but he was lazy and didn't care if we worked in his code. Perhaps it was sadism.
 
Oof. I had to maintain a project where all the variables were “X”, “Y”, “X1”, “Y1”… except for one labeled “hypotenuse”.
I think I've told this story before....on a classified USAF project DEC computers, late 80s. DEC had just introduced FORTRAN with 32 character, upper/lower case variable names. But DOD specs still lived in F66 and insisted on 6 character variable names. As the technical lead, I assured the contracting officer we would absolutely follow the policy, altho I pointed out that the 32 characters provided for much better documentation.

The first occurring variable would be named AAAAAA, the next would be AAAAAB, the next AAAAAC and so on. As the developers, however, we would create a dictionary that explained and described in detail the variable AAAAAA, etc. But it would be DEC property and not part of the delivery. The contracting officer, who really was a good guy, looked at me with panic then started laughing. "You made your point, 32 character descriptive variable names works".

I try not to get into these types of discussions unless I know I have a 90% chance of winning.

I impress this on my students - that variable names should be descriptive, and make sense in context of the system. In my advanced classes, I make the students trade off programs and make changes without being able to talk to anyone.
 
The first occurring variable would be named AAAAAA, the next would be AAAAAB, the next AAAAAC and so on. As the developers, however, we would create a dictionary that explained and described in detail the variable AAAAAA, etc. But it would be DEC property and not part of the delivery. The contracting officer, who really was a good guy, looked at me with panic then started laughing. "You made your point, 32 character descriptive variable names works".
If, in lieu of sensible variable names, someone handed me a data dictionary/legend of every cryptically named variable in the program, I'd use that heft of that thick documentation binder to bludgeon them :)
 
Unfortunately I got my start in VBA - which isn't case sensitive on variables, and I would lazily type without worrying about case. Oh, the problems that caused me later on with others.
One thing that helps is to declare "Option Explicit" in a module. This forces one to declare variables (a good programming practice), and also it allows VBA to correct the capitalization.
 
The most frustrating bug I ever fought was due to the use of l as a variable name and with the font used by the system a 1 and a l looked exactly the same. I had 5 programmers around my desk as I stepped through the debugger and a variable was set to “1” but when inspecting it the value was not 1. We seriously thought we found a compiler bug or something. Eventually I noticed the variable named “l” but it was crazy the number of man hours we spent on that one.
 
I've programmed in many languages but I am far from a "hard core" developer. None jump out at me as being particularly worse. I'm always frustrated on my first couple projects w/ a new language only b/c it's just different. Python's indentation approach drove me nuts. What I find more frustrating are frameworks which are supposed to make coding easier which I find is only true for simple use cases. I seem to find edge cases where the framework isn't doing what I expect and I spend more time figuring that out than I ever would writing the code myself. Spring Boot did that for me when implementing FlightsForBites.com Where I work, low/no code tools are all the rage. Same deal. They abstract the technical details so much that you're completely stuck when you need to do something they didn't expect. We recently required a vendor patch to support a somewhat complicated Hadoop query. The patch took ~2 months!
 
I've programmed in many languages but I am far from a "hard core" developer. None jump out at me as being particularly worse. I'm always frustrated on my first couple projects w/ a new language only b/c it's just different. Python's indentation approach drove me nuts. What I find more frustrating are frameworks which are supposed to make coding easier which I find is only true for simple use cases. I seem to find edge cases where the framework isn't doing what I expect and I spend more time figuring that out than I ever would writing the code myself. Spring Boot did that for me when implementing FlightsForBites.com Where I work, low/no code tools are all the rage. Same deal. They abstract the technical details so much that you're completely stuck when you need to do something they didn't expect. We recently required a vendor patch to support a somewhat complicated Hadoop query. The patch took ~2 months!
low/no code tools just put the code in a proprietary configuration that limits what you can do. I despise the concept. I even hate spring for that reason and that it results in developers writing code that they actually have no idea how it works. When it breaks, nobody knows what to do.

Get off my lawn!
 
Where is “VBA + Excel”? The amount of corporate tooling that relies on Excel and some insanely fragile VBA nonsense is insane. I will never understand engineers who spend their day in Excel.

I banned Excel macros and data links in my company. Had a guy quit over the data links. Well, actually I fired him.
 
Where's RPG? PL-1? Python?
 
I've been at my current gig long enough now that this is happening with regularity. Now, I just start with, "Am I the idiot that wrote this?"
Yeah you don’t have to be a programmer to have that problem. I just assume when they bring me a problem that i was part of creating it.
 
Where is “VBA + Excel”? The amount of corporate tooling that relies on Excel and some insanely fragile VBA nonsense is insane. I will never understand engineers who spend their day in Excel.
I use VBA a lot. Unfortunately, it is a royal pain for me to get programming tools other than those in other programs. I once had to do a inventory control project for some of our customers. Their lab equipment would send the amount and type of consumables used to a server that stored the data in a database. My task was to replace the product after a box was used. I also looked at usage and tried to anticipate what else they would need soon so as to consolidate the shipment and save a little money. I asked for appropriate programming tools for databases, and I was told "We have such tools but you work in sales and marketing so you aren't entitled to such tools". My response was "OK, thanks for your time" and did the whole thing in Excel VBA. It worked really well. It was easy to update things when we added other consumables some years later. When IT found out, they seriously considered disabling VBA across the company because "I could access any of their databases". My response was that they would need to work with all of us who had little VBA programs for local tasks- in other words, increase their workload. They didn't recall that I needed user id and passwords to access the databases even with Excel. Although I'm listed in sales and marketing, I do much more customer support, and manufacturing and engineering support.

I use VBA for quick automation and calculations, sometimes I don't use the spreadsheet. I have a program that reads our datafiles so I can do other calculations or move the data to a high-end graphing program such as Origin.

Any programming language can be used to create "fragile code". See, for example, post #78. At least part of the reason for the "fragile code" are people who really weren't trained on good programming practices.
I banned Excel macros and data links in my company. Had a guy quit over the data links. Well, actually I fired him.
See above- I'm not allowed tools that are more appropriate to some of my tasks. Excel VBA allows me to share code with my colleagues and rare customers more easily because there is no installation needed. We can't install software, but we can share spreadsheets. I try to make my programs professional, though that is a matter of opinion. The other nice thing is that for the data I use, the spreadsheet is a useful user interface for the data that I can manipulate as needed.
 
I banned Excel macros and data links in my company. Had a guy quit over the data links. Well, actually I fired him.
What if the Excel files are macro free but you have VBA code OUTSIDE of Excel that does what you want it to inside of Excel. I do this routinely for exported/imported data
:stirpot:
 
What if the Excel files are macro free but you have VBA code OUTSIDE of Excel that does what you want it to inside of Excel. I do this routinely for exported/imported data
:stirpot:

That's beyond my technical level to comment on. But the specific issue that led to my draconian ban was pricing. We lost bids for government contracts due to broken links on pricing volumes. The pricing analysts would leave a link in to pull some commonly used numbers, which worked fine on our internal cloud drive, but failed when it was emailed to the customer. Government rules are pretty strict and they can and will toss a bid for non compliance for stuff like that.
 
See above- I'm not allowed tools that are more appropriate to some of my tasks
This is the fundamental issue. When people are not allowed tools appropriate to the task, they will use the only tools they have and produce solutions that are difficult to read and maintain at best, fragile and dangerous at worst. I have seen (and wrote) somewhat complex aerodynamic analyses in Excel with VBA because we were not permitted to use much better tooling. Excel + VBA is very difficult to place under version control properly, that should be a no go from the beginning when it comes to programming. It also very strictly couples the data itself with the generating and post-processing code, making it much harder to produce good abstractions and interfaces which is pretty important to writing useful and re-usable code.
 
You're my hero of the month. Sometimes you just have to stop stupid in its tracks.
If I'm being totally honest, I fired him for calling my HR director a F'ing Witch, except he misspelled Witch with a B. But excel links were a key trigger in the event. Only person I have ever told to put his keys on the table and GTFO.
 
This is the fundamental issue. When people are not allowed tools appropriate to the task, they will use the only tools they have and produce solutions that are difficult to read and maintain at best, fragile and dangerous at worst. I have seen (and wrote) somewhat complex aerodynamic analyses in Excel with VBA because we were not permitted to use much better tooling. Excel + VBA is very difficult to place under version control properly, that should be a no go from the beginning when it comes to programming. It also very strictly couples the data itself with the generating and post-processing code, making it much harder to produce good abstractions and interfaces which is pretty important to writing useful and re-usable code.
It really depends on the person writing the code. Bad code can be written in any language. Strict data coupling isn't a bad thing for an excel (or other VBA) since the data is usually associated with a particular spreadsheet or task. It isn't a good thing if one needs to work outside of a task or workbook. We seem to place my VBA under version management (not that there is a lot of it). IIRC, we use PVCS. I send to file to a software engineer who checks it in. I ask them to check it out and send it to me if I need to make changes.
See under "ACCQPrep HP" here: https://www.teledynelabs.com/support/software-firmware Some of my VBA code is here. It is the "ACCQPrep Sample Queue Generator 1-7". The word document describing what is going on is inexplicably in a different place: https://www.teledynelabs.com/en-us/...es/ACCQPrep-Sample-Queue-Programmer-Guide.pdf

I will say that my code is far from being the best. but people seem to understand it. There's comments, readable variable names that are declared, and the function/sub names are mostly self descriptive.
Note that the "columns" are chromatography columns", not those in Excel! Those who need the program will know that distinction. Why VBA? It is accessible to nearly all our users and they can download it easily without too much rigmarole for installation.
 
Last edited:
I use VBA a lot. Unfortunately, it is a royal pain for me to get programming tools other than those in other programs.

See above- I'm not allowed tools that are more appropriate to some of my tasks. Excel VBA allows me to share code with my colleagues and rare customers more easily because there is no installation needed. We can't install software, but we can share spreadsheets. I try to make my programs professional, though that is a matter of opinion. The other nice thing is that for the data I use, the spreadsheet is a useful user interface for the data that I can manipulate as needed.
Some of my former colleagues are in a similar environment, locked down by security or other constraints. It's either Excel/VBA or nothing. I call that redneck programming but there is a huge volume of it. Some dedicated souls get Matlab licenses but those are the exception. Not too many years ago there was a good bit of legacy Fortran in the division, still running, still useful. But slowly squeezed out along with decades of domain knowledge.
 
If I'm being totally honest, I fired him for calling my HR director a F'ing Witch, except he misspelled Witch with a B. But excel links were a key trigger in the event. Only person I have ever told to put his keys on the table and GTFO.

Was your HR director a F'ing B? I'm trying to think of HR personnel I would describe any other way -- that or "self-loading potato" or "failed realtor" :)
 
Back
Top