On 04 May 2019, xqtr said the following...
Exactly that! because today someone with knowledge in java/script can
find more easy a job, than in C... new people tend to learn ONLY
those... which is a big mistake, in my opinion.
The flip side of this argument is that a lot of people who
learned programming through C and Pascal don't understand
higher level abstractions because they're too fixated on
low-level details.
From a pedagogical standpoint, I'd rather not bog students
down with the minutiae of dealing with pointers and manual
memory allocation and other machine-level details when trying
to teach, say, algorithms or type systems.
Sure, if one is learning compilers or operating systems one
must necessarily understand the machine, but even then, the
higher level one can get the better. Writing a compiler
itself is much more pleasant in a language with actual garbage
collection than in something like C or Pascal.
I recently attended a dissertation defense by a student who
argued forcefully for writing an OS in a high level language
with garbage collection; part of the argument is that managed
languages allow some kinds of optimizations that you simply
can't get otherwise. For example, garbage collection
facilitates the use of unlocked atomic reads racing with
locked writes in structure-sharing data; with a tracing garbage
collector there's no need for further synchronization in the
fast path, but without something like that you need atomic
ops for reference counts, which limits scalability and
throughput.
A similar example... in HAM radio, at least in Greece, when you take the exam for the more advance license, you don't have to learn Morse code anymore... in the past it was mandatory to know it. The result... more
ham radio operators but with less knowledge of things... and one of
their big argument to be a ham radio op. is to help in ex. natural disasters and so... but what if the network is down? and you would be
able to transmit only in morse? for example? the same thing applies to many preppers/ham operators...
I've heard this argument many times in the amateur radio
community and it is, frankly, kind of silly. Knowing Morse
code doesn't mean you actually know more about how radios
work or are a better operator -- it just means that you know
Morse code. I've met RF engineers who got into amateur
radio once the code requirement was dropped who know tons
more than someone who's main skill is that s/he can pass
traffic at 30WPM in CW.
I have yet to see a natural disaster situation where one is
transmitting on HF and can't use SSB or a digital mode, and
as a former military communicator I can say definitively
that no one uses CW in a combat environment.
Simply put, there are no realistic situations where CW is
the _only_ choice for communications. And hey, I say that
as a guy who enjoys homebrewing QRP CW rigs!
So the void that is being created and the lack of C programmers, it may hunt as in the future.
That may be true, but it's going to be a dusty deck problem.
I remember when people said much the same thing about FORTRAN
and COBOL or any number of assembly languages for different
machines.
The fact is that there are billions of lines of useful C code
out there, but most people don't understand how C works. It
is a dangerous language and its use should be discouraged.
As an example, consider this code sequence:
unsigned short
mul(unsigned short a, unsigned short b)
{
return a * b;
}
Is the behavior of `mul` always well-defined?
People are used to machines with many MIPS and
don't understand that the first cpus in space were 8086s ;)
That's simply not true. The Gemini digital computer was
the first "CPU" in space and was most certainly not an 8086;
it predated that by over a decade. The Apollo guidance
computer was similarly not an 8086. The first microprocessor
in space was a Honeywell HDC 402 on Viking 1; Voyager used a
custom 4-bit CMOS CPU and the space shuttle used redundant
IBM APA-101S microprocessors.
[...] The same
applies in internet bandwidth... we use too much! for stupid things like movies/porn and don't understand that with much less we can do great things. Thats a reason i like textmode/bbsing ;)
There's an economic argument that's missing here. The scarce
resource isn't generally bandwidth these days; it's programmer
and consumer time. Text is all well and good, as is computational
efficiency, but _most_ of the time it just doesn't matter. Most
folks consuming content from the Internet aren't interested in
text and only text; similarly, most of the areas for optimization
or expansion in programs aren't worth the time it takes to
implement the optimization.
Furthermore, when it comes to optimization, a lot of conventional
wisdom that applied 20 years or so ago is simply irrelevant now,
or even wrong. A great example is looking at the asymptotic time
complexity of algorithms: in most theoretical models, memory access
is assumed to take uniform time, and that was true on real machines
for a long time. But it's not true anymore; today, we have three
levels of separate instruction and data caching on top of a
virtual memory subsystem with its own translation caching substrate,
and that may be layered on top of persistent storage technologies
with high non-uniform timing characteristics. As a result, locality
often dominates algorithmic considerations, to the extent that one
may _prefer_ a linear or even quadratic or cubic algorithm or data
structure that fits into a cacheline over an O(lg n) or even O(1)
algorithm with poor locality or false sharing. Perhaps the canonical
example of this is that it's almost always better to use a vector
instead of a tree or hash table for repeated lookups in a small data
set. Even doing binary search in a sorted vector may be slower than
a sequential scan because of branching overhead and negating the
efficacy of CPU speculation.
--- Mystic BBS v1.12 A43 2019/03/03 (Raspberry Pi/32)
* Origin: ACiD Underworld // acidunderworld.com:31337 (21:1/188)