Computing skills

The computing skills of Rursus/Tomas Kindahl:

  • General computing:
    • University level maths, analysis, linear algebra
    • University level computer science c:a bachelor
    • CompTIA A+ certification 2011
    • CompTIA Network+ certification 2011
  • PL:s:
    • C expert
    • C++ advanced
    • SQL proficient
    • Python newbie
    • Java newbie
  • W³:
    • HTML: fluently, preferrably hand editing it
    • XML: fluently, prefer XHTML before HTML because of the embeddability
    • some JavaScript: the PL/1 of bloat and memtrashing
    • CSS: fluently
    • SVG: very nice

Programming languages

What are the programming languages generally for?

  • Semi-religious cults: people are socializing and building groups by praising or condemning certain programming languages (and software and operating systems), for the purpose of "teambuilding", generally an informal and destructive "teambuilding" that counteract the general purpose of being a professional technician – such usages must be explicitly rejected, and especially, using that destructive mechanism as a marketing method is extra objectionable.
  • Programming and problem solving: voilá! The general classes of programs are:
    • batch processors: batch conversion, generation, and extraction – a static data structure that is already there is transformed into another data structure, the transformation process runs and ends without user interuption, and the new data structure is stored in the same static storage (almost always a file) as the original structure – sternons’ mkmap is a typical batch processors written in C: input is a map file, output is a star map file. Compilers are always strictly batch processors.
    • interaction loop: a program awaiting incoming signals and synthetizing and acting on these signals – all GUI:s are either simple interaction loops, or clustered sets of interaction loops: they await user commands synthetizes by looking up its inner state, and acts by exhibiting graphics, usually buttons, popping menues and dialogs.

Programming languages:

  • C:
    • purpose: systems programming (operating system, embedded, real-time systems)
    • unsuitable for: object oriented programming
    • advantages: available everywhere, pretty portable
    • disadvantages: extremely poor type system, bad type control, primitive string handling, providing most important functionality as std clib API, no object orientation
    • status: C is the material aspect in the cultic GNU trinity: C, Posix and GPL. C will simply never die. It won't be replaced by anything else, and then it doesn't matter how much better that anything else be. C, however terse and limited, will forever keep a substantial part (i.e. >25%) of the PL market, in year, let's say, 2300 AD.
    • I like: so-so, neutral
  • C++:
    • purpose: application programming
    • unsuitable for: advanced parallel processing systems
    • advantages: available everywhere, pretty portable, provides object orientation
    • disadvantages: terse, complex and unreliable for parallel process programs, all disadvantages of C excluding object orientation, extremely complex, malformed template system
    • status: C++ is sometimes the programmers nightmare, but have attained its niche and stabilized on a comparatively widespread level. It is thriving within that niche.
    • I like: so-so, sometimes love, sometimes detest
  • Java:
    • purpose: application programming
    • unsuitable for: script programming, everything besides application programming
    • advantages: available everywhere, portable, provides object orientation, provides a huge standard API
    • disadvantages: all disadvantages of C++, except a better type control, relies on implicit garbage collection and a huge runtime environment, standard GUI API:s heavily criticized
    • status: Java has reached its apogee, and will slowly decline, but probably never perish entirely, c.f. COBOL that still survives!
    • I like: very little experience, I'm gravely sceptical against the alleged fantastiqualness of it, but think it might actually be pretty usable,
  • PHP:
    • purpose: web server page generation (HTML)
    • unsuitable for: anything else
    • advantages: web adapted API,
    • disadvantages: typeless, interpreted
    • status: PHP competes with VB ASP on Microsoft platforms, which is not available on anything else than Microsoft platforms. PHP will prevail and slowly improve version by version – PHP have the advantage of being enough similar to C, while Microsoft stick to the elsewhere detested programming language BASIC,
    • I like: no – some ignorant programmers praise typeless systems for being typeless, but type systems saves a lot of coding trouble; PHP is a crippled C with objects and dynamic data structures, and with a mature API – nevertheless, it's not my prototypical mature and sane language – PHP should be replaced by a typed and compiling but otherwise similar programming language with the same API
  • SQL plus plpgSQL, PL/SQL:
    • purpose: relational database scripting
    • unsuitable for: anything else whatsoever, conversions within the database
    • advantages: one of the few programming languages with a type system adapted to the rich type system of SQL relational databases (RDBs),
    • disadvantages: not usable for conversions of data within a database, a text character scanning loop will run until doomsday to process all rows in a database
    • status: SQL and RDBs were allegedly doomed to extinction when object oriented databases occurred – SQL RDBs still prevail – the 'extinction' babble was just a market fluctuation with a slight tint of hysteria
    • I like: like cats and dogs: they're pretty unusable, but hairy and cute, and purrs when I'm stroking their heads and speaks to them nicely,
  • JavaScript:
    • purpose: dynamic web
    • unsuitable for: systems programming
    • advantages: makes a web dynamic with a pretty portable language,
    • disadvantages: JavaScript is really really dangerous because unchecked code from Internet executes on the local machine, including malicious code (spyware, adware), JavaScript is garbage collecting, with generally low quality garbage collector implementations, the language is designed for heavy memory allocation, which means that the garbage collectors are heavily taxed,
    • status: someone said: JavaScript is so blatantly bad, that it will become a future widespread computing standard – I partially disagree, it will reach a high apogee, until usage practice decides that the theoretical problems with its kind of garbage collection philosophy is unsurmountable – then a new incompatible incarnation or a very similar language will replace it, such a language must have a statical memory allocation that requests the guest operating system for a memory chunk that is never extended, similarly a HTML parser with this quality must bne implemented
    • I like: like a lethally poisonous snake – it's fascinating and terrible but extremely dangerous.

Operating systems

I think:

  1. In the long run, Windows will die. It has lower potential than Linux, because of the proprietary structure of Microsoft, and that it is essentially ignored in the third world – the future economic powers.
  2. I used to hate Windows, because when maintaining it and installing updates, it almost always required reboot, which implied that it is unavailable for other usage during say 15-20 minutes each update, saving, closing applications, rebooting, opening applications, reopening the saved files, nowadays I only feel pity: Windows shares this quality with all Linuxen excluding Debian that I run.
  3. I used to hate Windows for all the messages and popups that disturbed the working activity, but sadly this occurs on all Linuxen too, although to a generally lesser extent.
  4. I can work actively with supporting Windows, if I simultaneously have the opportunity to actively work with Linuxen – the systems are pretty similar in usage quality, but most maintenance and some troubleshooting activity is easier and performed differently on Linuxen. I simply would like to safeguard my future carreer by keeping updated on Linux workings.
  5. To be honest, Windows have improved pretty much up to and including Windows XP and 7 (excluding the criticized Vista), but its stability will never ever reach that of Linux: I get really mad hangups and bluescreens on Windows, much more often and serious than on Linux. The bluescreen counterpart on Linux – a kernel panic – occured once only: that was after I configured and compiled a Linux kernel the wrong way. In the long run Linux'es advantage before Windows will infallibly increase without limits.
  6. Fewer blockbuster games are available on Linux. That's an advantage to Linux, not the other way around: Linux is really a productivity environment. I wish that Window kept all its games till doomsday, so that it can survive, and a little remnant of Microsoft is kept for museal purposes, but it won't happen that way. Some day everything will be Linux, including the God-damned addictive games (f.ex. WoW) that destroys our youth.