Bill Shannon er død

Bill Shannon er død.

Selvom han har et meget langt CV, hvor "medarbejder nummer 11 hos Sun" står et pænt stykke nede, er han nok mest kendt i Java sammenhæng.

Jeg tror nok jeg har mødt ham, men det var til et "Wizard-Party" under en USENIX konference, så der er ikke meget yderligere at tilføje.

Nogle af nekrologerer noterer sig Java's turnerende tidlige liv, "indtil det fandt sin rette hylde til backend og backoffice applikationer" som en af dem opsummerede det.

Rette hylde ?!

Jeg mener personligt at Java er ligeså uegnet til den slags, som det er til alt muligt andet.

Men jeg bestrider bestemt ikke at Java bliver brugt meget i det felt: Der går sjældent en uge hvor man ikke rammes af et af de karakteristiske backtraces i sin browser.

Min alternative hypotese er at Java EE's popularitet er en direkte konsekvens af en forfejlet uddannelsesstrategi.

Der var en masse læreanstalter der åd PR-materialet råt og gav sig til udelukkende at uddanne i Java "fordi det var fremtidens programmeringssprog" - som en rektor for et dansk universitet belærte mig.

Det medførte en masse nyuddannede der først skulle lære et programmere i andre sprog før de kunne bruges til noget.

Det er ikke en hobby små virksomheder har råd til.

Men for banker, forsikringsselskaber, offentlige styrelser og deres IT-leverandører, går der under alle omstændigheder altid et par måneder før en ny medarbejder er produktiv.

Faktisk har danske IT-uddannelser altid været så dårlige og dårligt tilpassede, at det var helt normalt at store IT-virksomheder hyrede folk som først skulle lære at programmere.

De Javamoderamte blev derfor i stort omfang ansat til at køre TN3270 mod en IBM mainframe.

Når disse virksomheder senere kastede sig ud i et stort IT projekt og estimerer at de skulle bruge 25+ IT folk, var det eneste realistiske programmeringssprog de "gode gamle" ... eller Java.

Hvis projektet var solgt som en "modernisering" var Java ikke til at komme udenom.

Når store organisationer skriver store projekter i Java, er der gode jobmuligheder hvis man har en uddannelse i Java, så det giver mening at uddanne flere folk i Java.

Med andre ord: Java er blevet det nye COBOL og/eller PL/1: Ikke specielt velegnet, men det alle bruger fordi det er det alle bruger.

Det er dog indiskutabelt et fremskridt.

Men som den rigtige PH sagde: Det varer lang tid før fremskridtet går for vidt.

phk

Kommentarer (26)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#2 Nis Schmidt

Inden din nekrolog over Bill Shannon udvikler sig til et rant over Java EE, som jeg ikke helt forstår, er du faktisk på sporet i nogen tid - alt for kort, desværre.

Cirka her falder jeg af:

Det medførte en masse nyuddannede der først skulle lære et programmere i andre sprog før de kunne bruges til noget.

Hvad mener du?

Java's problem var fra starten at "alle folk" og hans mo(n)ster gav sig til at udvikle underliggende biblioteker, så rammen blev fyldt med gylle. Apple-vejen havde været bedre - her, men det blev til "Guru meditationer"!

Okay, her løb jeg også af sporet - med alle vogne:

Til Adams afløb om [Monty] Python, kan jeg kun tilføje: Tjek 6.172 på https://ocw.mit.edu lektion 1 Pythons performance består - mig bekendt - af biblioteker skrevet i C? Er Adam ironisk?

Flaget på halv for WS!

  • 5
  • 0
#3 Troels Henriksen

Der var en masse læreanstalter der åd PR-materialet råt og gav sig til udelukkende at uddanne i Java "fordi det var fremtidens programmeringssprog" - som en rektor for et dansk universitet belærte mig.

Hvem sagde det? Jeg var ikke selv i universitetsmiljøet da Java-feberen var højest, men jeg ved at KU i hvert fald ikke har været ren Java på noget som helst tidspunkt - mig bekendt blev det aldrig værre end et enkelt blokkursus i objektorienteret programmering på bacheloruddannelsen. ITU ville ud fra stereotyperne slå mig som det mest oplagte bud (især fordi jeg ikke tror rektorerne på de andre universiteter ville ane hvad Java er), men de har vist længe været glade for Microsoft-teknologi. Måske var det Java før .NET; det er lidt før min tid.

  • 3
  • 0
#4 Eskild Nielsen

Jeg gik på DtH i sidste halvdel af 70'erne. I datalogifagene var sproget AlgolW, selvom at alle vidste ingen ville skrive produktionskode i det sprog.

Set i bakspejlet tror jeg at det ville have været godt hvis vi havde haft en lektion der gennemgik * Hvorfor AlgolW var vlgt som undervisningssprog * Hvorfor man IKKE ville vælge det til produktion * Hvorfor man alligevel mente det var et godt valg til datalogiundervisningen

Og jeg tænker at den samme gennemgang burde ledsage ethvert valg af første programmeringssprog, uanset om deet var AlgolW, Pascal, Java , Python eller....

  • 10
  • 1
#5 David Kjær

Der er også universiteter i Jylland :).

Jeg var indskrevet på DAIMI fra 05 til 10, og kan bekræfte, at instituttet dengang var fuldstændig marineret i Java. Især på bachelordelen hvor programmeringsopgaverne var lidt mindre "frie". Så grelt var det, at vores compilerkursus bestod i at skrive en oversætter af en delmængde af Java 1.3 til JVM byte code - i Java 1.5.

  • 5
  • 1
#7 Jacob Gorm Hansen
  • 4
  • 0
#8 Michael Cederberg

Men for banker, forsikringsselskaber, offentlige styrelser og deres IT-leverandører, går der under alle omstændigheder altid et par måneder før en ny medarbejder er produktiv.

Først skal jeg sige at jeg hader Java af et godt hjerte. Jeg bryder mig ikke om verbosity i sproget og specielt den latterlige implementering af generics. Men økosystemet til Java er lysår foran alt andet. Det er Java's styrke og det skal man ikke undervurdere.

Med hensyn til valg af sprog til nye projekter, så er det altid en god ide at være konservativ på den front. Programmeringssprog kommer og går. Nogle af de systemer der bliver bygget nu kommer til at leve i 40-50 år. Java vil være et outdatet sprog om 40 år (ja, det er det også i dag) men der vil stadigvæk være et community. Der er ingen garanti for at det vil være tilfældet med Javascript, Python, Rust, Scala, Go, Swift, ...

  • 2
  • 1
#9 Nis Schmidt

Ulykkelig læsning herover. Heldigvis er der måske stadig håb. Hos IAR System kan man stadig lære at skrive en interrupt handler - til Atmel MCU'er formodentlig - "hjernerne" i Arduino (IoT). Egentlig synes jeg MIPS er en bedre platform at bvegynde på, men - nu hvor DEC/PDP er svær at skaffe. Jeg har dog ikke fundet en simulator, som inkluderer interrupt handling, kun SPIM (nu QtSPIM).

Et andet problem er (blackhat) hackere; der er utallige vejledninger i denne form for udnyttelse i den såkaldte open source verden.

Et tredje problem er IT-begejstrede personers urealistiske forventning til ydelse - høfligt omskrevet.

Burde IDA og Version2 ikke kunne bidrage til imødegåelse af forfaldet i dansk IT? Ellers er der om få år ikke flere, der kan.

  • 4
  • 3
#10 Bjarne Nielsen

Først skal jeg sige at jeg hader Java af et godt hjerte.

Det er meget nemmere at blive enige om ikke at kunne lide Java, end det vil være at blive enige om, hvad det præcist er, at der er forkert ved Java - også selvom der er nogle oplagte punkter, hvor der helt sikkert kunne skabes et bredt konsensus.

Men økosystemet til Java er lysår foran alt andet.

For det første, så er man - hvis man vil tappe ind i det økosystem - ikke bundet til sproget, men til platformen. Og ja, JVMen har sandelig også sine underligheder og uhensigtsmæssigheder; grundlæggende forhold, som man ikke kan sætte sig ud over som alternativt sprog på den platform.

For det andet, så er der nok mange lysende stjerner på den himmel; stjerner som vil lyse mange år endnu, og som har inspireret mange til mangt og meget. Men hvor er de nye stjerner? Stjernetågerne, der hvor de nye stjerner fødes, er i dag et andet sted. Java prøver desparat at følge med, men er fanget i et krydspres fra traditionen om nærmest ubetinget bagudkompatibilitet, og så bliver det ofte kluntet og underligt, grænsende til det pinlige.

Men jeg hælder mere og mere til, at det største problem ved Java er, at alt partout er en klasse. Der er mange fine ting ved objekt-orientering, men at skulle presse alt ned i den form, er ikke hensigtsmæssigt.

Og hvis vi lige sætter os ud over graden af sproglige kulhydrater, så deler Java faktisk mange af sine problemer med andre udbredte og populære alternativer. Især hvis man prøver at bruge til dem noget, som de ikke er egnede til. Og det skal man også huske, når man elsker at hade.

PS:

Egentlig synes jeg MIPS er en bedre platform at bvegynde på, men - nu hvor DEC/PDP er svær at skaffe.

Nostalgi er ikke længere, hvad det har været ... :-D

  • 2
  • 0
#11 Torben Rune

Jeg gik på DtH i sidste halvdel af 70'erne. I datalogifagene var sproget AlgolW, selvom at alle vidste ingen ville skrive produktionskode i det sprog.

Det gjorde jeg også, og er helt enig i betragtningerne i forhold til programmeringssprog. MEN! jeg synes man skal passe på med at dømme for kraftigt - du lærer ikke at programmere for at lære et programmeringssprog. Programmering er et universelt håndværk - sproget er et redskab. Derfor er det lidt ligegyldigt at tænke til bage på hvilket tilfældigt sprog der var i vælten lige på det tidspunkt hvor man selv gik gennem uddannelsesmøllen.

For mit vedkommende så listen over sprog der kom ind nogenlunde således ud (har forsøgt med en vis kronologi):

Standard Basci COMAL, Algol W, Fortran IV, Pascal, Simula 67, PL/M, Prolog, APL, SQL, Informix, Perl, C, C++, Java, PHP, .NET, VBScript, VHDL, Python

Ud over sprog er det blevet til:

8080 assembler, 6809 assembler, 68000 assembler, x86 assembler, PDP11 assembler, ARM assembler

Nostalgikere kan se hele programmeringssprogstidslinjen her: https://en.wikipedia.org/wiki/Timeline_of_programming_languages

  • 6
  • 0
#12 Eskild Nielsen
  • 3
  • 0
#13 Torben Mogensen Blogger

Det er meget nemmere at blive enige om ikke at kunne lide Java, end det vil være at blive enige om, hvad det præcist er, at der er forkert ved Java

Michael nævte da nogle årsager: Verbositet og en halvhjertet implementering af generics. Jeg har aldrig selv været tilhænger af den objektorienterede model, så det er endnu en årsag set herfra.

På DIKU har det første sprog, de studerende lærer, aldrig været Java. Da jeg startede i '79 var det Pascal, og det var det i mange år. Sidenhen blev det en kort overgang LISP, og så i mange år Standard ML, og er nu F#, primært fordi vi slog kurset med Standard ML sammen med Java-kurset (som kom lige bagefter) og gerne ville samle begreberne i et sprog. Undervisningen i F# starter med funktionel programmering, og derefter imperativ og objekt-orienteret programmering.

  • 3
  • 0
#14 Knud Larsen

Det er det samme som jeg ville sige om valget af teorierisk statistik på DtH i stedet froodet oplagte at vælge anvendt statistik. Men undervisener kom fra KU og kunne nok ikke andet. Meget trist for rigtig mange ingeniører et spildt studieår vil mange kunne bevidne.

  • 0
  • 2
#16 Sune Marcher

Rette hylde ?!

Jeg mener personligt at Java er ligeså uegnet til den slags, som det er til alt muligt andet.

(...)

Med andre ord: Java er blevet det nye COBOL og/eller PL/1: Ikke specielt velegnet, men det alle bruger fordi det er det alle bruger.

Åh, come on.

Java er verbost (selv med local type inference), der blev taget dårlige beslutninger såsom type erasure ved generics, standard libraryet bærer (som andre gamle sprog) præg af at man er blevet klogere undervejs, og nogle frameworks er overdesignet ud i tåbelige mængder bloat.

Men der er gode økosystemer, og en moderne JVM performer ganske udmærket. Jeg er glad for det er blevet Java og C# der dominerer general-purpose programming, hvis alternativerne skulle være C, (til dels) C++, Python, PHP, Ruby, Javascript og lignende.

Hvad ville en god platform være for dig, hvis vi kunne tage et eksisterende sprog, og give det Java/C#-niveau af popularitet og økosystem?

Jeg har personlige kriterier der inkluderer at det skal være nemt at komme igang med, men ikke handicappe professionelle i at lave elegante løsninger, og at det skal være forholdsvist sikkert (hvilket ikke nødvendigvis indebærer garbage collection, men C dumper hårdt).

  • 4
  • 0
#17 Baldur Norddahl

Sidenhen blev det en kort overgang LISP, og så i mange år Standard ML, og er nu F#

I skulle have holdt fast i Standard ML. Der er meget man kan lære af det sprog og så synes jeg det var pædagogisk smart at stort set ingen kunne sproget i forvejen. Selvfølgelig var vi nogle der havde nok erfaring til hurtigt at kunne lære sproget, men nok også en del der fik lidt sund realisme om at man ikke bare kommer sovende igennem studiet, bare fordi man har leget lidt med gængse sprog.

  • 2
  • 0
#18 Anders Vind Ebbesen
  • 0
  • 0
#19 Torben Mogensen Blogger

Hvad ville en god platform være for dig, hvis vi kunne tage et eksisterende sprog, og give det Java/C#-niveau af popularitet og økosystem?

Standard ML. Udover at det har behov for et større standardbibliotek, er der dog behov for nogle små tilføjelser: Unicode i strings, pattern guards, og overloading af brugerdefinerede operatorer.

F# har disse ting, men det er lidt af en monstrum, og der er mange uelegante elementer.

  • 0
  • 0
#20 Sune Marcher

Go opfylder de kriterier ganske fint.

Mjah, det er bare som om designerne ikke har kigget ret meget på sprogudvikling siden C.

Jeg har sympati for "hold sproget simpelt så man kan forstå det" (i den anden ende af spektret er C++ og Scala – jeg holder af begge, men de er for komplekse og specielt C++ har for mange quirks hvor selv professionelle programmører kan lave småfejl der er katastrofale).

Go rammer sådan et lidt mærkeligt sted. Jeg har det svært med sprog der ikke har generics og (ikke-klodsede) lambdaer. Og man får garbage collection, med de fordele og ulemper det giver, men skal stadig forholde sig til pointere. Der er ikke destructors, så fejl- og resourcehåndtering bliver noget klodset (defer hjælper, men er stadig klodset ifht fx C++ RAII). Og så hele "vi er Google, vi bruger monorepos, så vi gider ikke lige bygget et fornuftig modulversioneringssystem" issuet...

Sproget har meget andet godt kørende for sig, det er fx forholdsvist nemt at skrive parallel kode, det er super lækkert at man kan bygge forholdsvist små free-standing binaries, de indbyggede profiling tools er nemme at bruge, og performance er fornuftig selv med forholdsvist idiomatisk kode.

Så der er ting jeg klart ville savne til hverdagsprogrammering, og det er ærgerligt at jeg sidder med følelsen af at det kunne have været et rigtigt godt sprog, hvis man havde kigget lidt på hvad der er sket siden C :-)

  • 1
  • 0
#21 Sune Marcher

Standard ML. Udover at det har behov for et større standardbibliotek, er der dog behov for nogle små tilføjelser: Unicode i strings, pattern guards, og overloading af brugerdefinerede operatorer.

Jeg har aldrig leget med SML, så har ikke anden erfaring med det end lidt overfladisk skimning - syntaksen ser ikke forfærdelig ud, og "TL;DR" listen på https://www.smlnj.org/sml.html lyder fornuftig.

Mit førstehåndsindtryk er at det kunne være et ganske fint undervisningssprog, men skalerer det til store real-world systemer? Jeg indrømmer gerne at jeg har et klart bias til fordel for OOP sprog, de fleste sprog jeg har anvendt siden jeg startede med Turbo Pascal 6 har enten været OOP eller multi-paradigme :)

  • 0
  • 0
#22 Troels Henriksen

Mit førstehåndsindtryk er at det kunne være et ganske fint undervisningssprog, men skalerer det til store real-world systemer? Jeg indrømmer gerne at jeg har et klart bias til fordel for OOP sprog, de fleste sprog jeg har anvendt siden jeg startede med Turbo Pascal 6 har enten været OOP eller multi-paradigme :)

Standard ML er/var et fremragende (omend ikke perfekt) design, og det har faciliteter til at konstruere enddog ganske store systemer. Man kan endda med rimelighed men at SML i visse sammenhænge fokuserer for meget på store systemer, på bekostning af at enkle ting bliver mere klodsede.

Men SML er nok ikke et specielt godt valg i dag af praktiske årsager, med mindre valget står mellem SML og et tilsvarende halvdødt sprog (lad os sige Pascal). Der er en håndfuld mere eller mindre aktive oversættere der alle er inkompatible hvad angår mange ting udenfor grundsproget, hvilket bl.a. betyder at der ikke rigtigt er noget økosystem for tredjepartsbiblioteker til Standard ML. I en alternativ virkelighed ville standardiseringen af SML i 1997 have resulteret i videre vækst og udvikling, men det er desværre ikke den virkelighed vi lever i.

  • 3
  • 0
#23 Sune Marcher

I en alternativ virkelighed ville standardiseringen af SML i 1997 have resulteret i videre vækst og udvikling, men det er desværre ikke den virkelighed vi lever i.

Yeah, det er grunden til mit spørgsmål var "Hvad ville en god platform være for dig, hvis vi kunne tage et eksisterende sprog, og give det Java/C#-niveau af popularitet og økosystem?" – jeg er uenig i PHKs præmis om at Java er noget bras, men interesseret i at høre hans og andres holdning til hvad der kunne være godt.

I den virkelige verden er "det er ikke populært nok" (desværre!) en OK grund til ikke at anvende en given teknologi, men et parameter jeg synes man bør se bort fra i "hvad kunne du tænke dig?" :-)

  • 3
  • 0
#26 Hans Dybkjær

På DIKU har det første sprog, de studerende lærer

Nok så væsentligt var DIKU aldrig sprog X fra start til slut. Vi lærte 2-4 nye sprog om året i de tre obligatoriske år, med meget forskellige egenskaber og formål. Så vi lærte netop ikke et sprog, men om programmering, programmer og datastrukturer. Det er svært at være en seriøs datalogiuddannelse hvis man i overvejende grad kun ser et sprog. Det ville svare til en lingvist der kun lærte et sprog, eller en kok der kun lærte en ret.

  • 3
  • 0
Log ind eller Opret konto for at kommentere