Path: csiph.com!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail From: Paul Rubin Newsgroups: comp.arch.embedded Subject: Re: C++, Ada, ... Date: Mon, 19 Apr 2021 12:47:11 -0700 Organization: A noiseless patient Spider Lines: 40 Message-ID: <877dkygips.fsf@nightsong.com> References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: reader02.eternal-september.org; posting-host="9309f7be5b1d8e24271c45a8f9cf0e07"; logging-data="7383"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19hYn7aQpw41brVZlGN4g+y" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) Cancel-Lock: sha1:3Z+oFF7TYrwlS4u83gjmXTerTNA= sha1:C+KItBI/zBxX+B+saLv64ccnzMQ= Xref: csiph.com comp.arch.embedded:30521 Dimiter_Popoff writes: > On 4/19/2021 14:04, Niklas Holsti wrote: >> ...their HR departments say that they cannot find programmers trained >> in Ada. Bah, a competent programmer will pick up the core concepts >> quickly, says I. > > This is valid not just for ADA. An experienced programmer will need days > to adjust to this or that language. I guess most if not all of us have > been through it. No it's much worse than that. First of all some languages are really different and take considerable conceptual adjustment: it took me quite a while as a C and Python programmer to become anywhere near clueful about Haskell. But understanding Haskell then demystified parts of C++ that had made no sense to me at all. Secondly, being competent in a language now means far more than the language itself. There is also a culture and a code corpus out there which also have to be assimilated for each language. E.g. Ruby is a very simple language, but coming up to speed as a Ruby developer means getting used to a decade of Rails hacks, ORM internals, 100's of "gems" (packages) scattered over 100s of Github repositories, etc. It's the same way with Javascript and the NPM universe plus whatever framework-of-the-week your project is using. Python is not yet that bad, because it traditionally had a "batteries included" ethic that tried to standardize more useful functions than other languages did, but it seems to have given up on that in the past few years. Maybe things are better in the embedded world, but in the internet world any significant application will have far too much internal functionality (dealing with complex network protocols, file formats, etc) for the developers to get anything done without bringing in a mass of external dependencies. A lot of dev work ISTM now is about understanding and managing those dependencies, and also in connecting to a wider dev community that you can exchange wisdom with. "Computer science", such as knowing how to balance binary trees, is now almost a useless subject. (On the other hand, math in general, particularly probability, has become a lot more useful. This is kind of satisfying for me since I studied a lot of it in school and then for many years never used it in programming.)