>
>> >>
>>> Most computer languages look somewhat like Basic apart from APL & Forth.
>>> (and a few exotic modern CompSci languages like Haskell)
>>
>> I guess that depends on how you define "like".
>>
>> Coding in any of the LISP dialects is likely a rude awakening for
>> the uninitiated. Ladder logic?
Remiss of me not to mention LISP as one of the earliest entirely different to Basic languages (aka Lots of Irritating Single Parenthesises). I once long ago worked on a Lisp compiler.
>
>> Much of the similarity is a consequence (IMO) of the serial
>> way that humans tend to think -- esp when it comes to algorithms...
>> it's almost always a set of *steps* instead of a network.
So do all mathematical proofs and for that matter proofs of correctness of software systems - one step at a time built on solid foundations. I had a play with Z and VDM a few decades ago but found them unweildly (and distinct overkill for the reliability we needed).
Computer programming is most always procedural. When parallel things
> neeed to be done, it's usually broken into threads or processes with
> semiphores, locks, blocks, interrupts, flags, fifos, things like that.
> Most programmers never use state machines.
You have some very funny ideas. Computer science uses all of the methods available to it and more besides.
> FPGA design is done in synchronous clocked logic in nonprocedural
> languages; everything happens everywhere all at once. Crossing a clock
> boundary is recognized as something to avoid or handle very carefully.
> Computer programming is a lot like old-style hairball async logic
> design and has correspondingly many bugs.
And the FPGA program is designed and implemented in the software that you so despise. How can you possibly trust it to do the right thing?
You should be hand coding it manually single bit by bit since you have made the case so cogently that no software can ever be trusted to work.
>>
>>>> Computing languages are fad driven, and that drives good things out of
>>>> circulation, a sort of Gresham's Law of computing.
>>>
>>> I don't think that is true at all. The older computer languages were limited by
>>> computing power and hardware available at the time. Modern languages harness
>>> the huge computing resources available today to take some of the tedious grunt
>>> work out of coding and detecting errors.
>>
>> I think the BSPs, HALs, OSs, etc. are more guilty of that. Folks don't code
>> on bare metal anymore -- just as they don't put a CPU on a schematic any
>> longer. They are "sold" the notion that they can treat this API as
>> a well-defined abstraction -- without ever defining the abstraction well! :>
>> They don't know what their implementations "cost" or how to even *measure*
>> performance -- because they don't know what's involved.
>>
>> OTOH, a lot of "coding" is taught targeting folks who will be building
>> web pages or web apps where there is no concern for resource management
>> (it works or it doesn't).
>
> Coding has no theory, no math, and usually little testing. Comments
Software development has a hell of a lot of maths and provably correct software is essentially just a branch of applied mathematics. It is also expensive very difficult to do and so most practitioners don't do it.
My universities computing department grew out of the maths laboratory and were exiled to a computer tower when their big machines started to require insane amounts of power and acolytes to tend to their needs.
are rare and usually illiterate. Bugs are normal because we can always
> fix them in the next weekly or daily release. Billion dollar projects
> literally crash from dumb bugs. We are in the Dark Ages of
> programming.
I reckon more like Medieval cathedral building - if it still standing after 5 years then it was a good 'un. If it falls down or the tower goes wonky next time make the foundations and lower walls a bit thicker.
UK emergency 999 system went down on Sunday morning (almost certainly a software update gone wrong) and guess what the backup system didn't work properly either. It took them ~3 hours to inform the government too!
Same happened with passport control a couple of weeks ago - a fault deemed too "sensitive" (ie embarrassing) to disclose how it happened.
Who said "Anybody can learn to code" ?
It is true that anybody can learn to code but there are about three orders of magnitude difference between the best professional coders (as you disparagingly choose to call them) and the worst ones. I prefer the description software engineer although I am conscious that many journeyman coders are definitely not doing engineering or anything like!
I have known individuals who quite literally had to be kept away from important projects because their ham fisted "style" of hack it and be damned would break the whole project resulting in negative progress.
One of the snags is that at university level anyone who has any aptitude for the subject at all can hack their assessment projects out of solid code in no time flat - ie. ignore all the development processes they are supposed to have been taught. You can get away with murder on something that requires less than 3 man months work and no collaboration.