Fallet för "språkagnostisk" programmering

Lär dig koda? Begränsa dig inte till ett språk, råder Gil Tene, CTO för Java-plattformen Azul.

Som de flesta utvecklare vet är inte alla programmeringsspråk lika. Det finns de objektorienterade och de icke-objektorienterade; de funktionella arbetshästarna och de nischade flash-in-the-pan som har sitt ögonblick och är borta; de lättlästa och de som bara en erfaren utvecklare någonsin skulle kunna hoppas på att förstå… Du förstår.

Så varför är så många utvecklare till synes gifta med vilket språk de än använder? Du behöver inte leta för djupt för att hitta utvecklare som proklamerar sin kärlek till språket de använder; det här kan vara bra om du vill hitta en tre timmar lång YouTube-tutorial på Python, men inte så bra om du är en nybörjare som bara vill ha ett rakt svar på frågan: Vilket språk ska jag lära mig?

De dåliga nyheterna för nybörjarutvecklare är att frågan inte har ett enkelt svar. Det finns inget språk som styr dem alla.

För att få ett informerat perspektiv på frågan pratade vi med Gil Tene, som är teknikchef på ett företag som heter Azul. Han har många års erfarenhet av att arbeta med utveckling och han har sett många språk komma och gå och komma tillbaka igen.

Död, döende eller odöd?

En annan sak hyperboliska utvecklare gillar att göra är att hävda att olika språk är ”döda”. Du bör vara försiktig med den här typen av påståenden som i huvudsak motsvarar stamkonflikter inom teknikvärlden. Även Tene har sina egna fördomar; Azuls specialitet är Java så han kan det språket utan och innan. Andra kommer att berätta för dig att Java är död. En översiktlig genomsökning av internet visar dig att det har dött och återuppstått sedan 2011.

Tenes svar på frågan om vilka språk människor ska lära sig är väldigt opartiskt. Han refererar till sig själv som ”språkagnostiker” om än en språkagnostiker som kan mycket om Java.

”Jag tror att språkreligion inte är hälsosamt för utvecklaren, och utvecklare som bara kan ett språk eller bara kommer att arbeta på ett språk är självbegränsade – både i förståelse och kunskap och i jobbmöjligheter”, säger han.

”Du ser alltid de inbitna som tror att 'det här språket är det bästa' och kommer att argumentera för det, och jag tror att det faktiskt är väldigt viktigt för utvecklare att kunna minst tre språk väl för att utveckla ett agnostiskt tillvägagångssätt.”

Det är bara ett verktyg, inte ett sätt att leva

Språk är bara verktyg och utvecklare bör helst kunna tillräckligt många för att kunna välja och vraka. ”I slutändan kodar vi saker, och de här sakerna kör maskininstruktioner på någon CPU, och språket är bara ett sätt att översätta det ena till det andra”, säger Tene.

Ibland är de språk som utvecklare blir riktigt glada över inte de bästa att lära sig om du vill få ett tekniskt jobb. Till exempel säger Tene att många utvecklare är ”superexalterade” över funktionella språk som Haskell och Lisp, ”men de är en mycket liten del av den faktiska utvecklarvärlden ur ett jobbperspektiv”.

”Jag tror att om du tittar på populariteten … populariteten inte bara ur en popularitetstävlingssynpunkt, utan ur en synvinkel av mycket utbredd och mycket varaktig användning, kan du se några språk som helt klart inte försvinner.”

Som Java? Tene säger att även språkfamiljen C har skrivits av i förtid tidigare. ”C++, lika mycket som folk fortsätter att leta efter en ersättare, C++ och C finns här länge. Linux-kärnan är byggd i C och i C++. Det kan få lite rost i det nu, men C++ används för många systemapplikationer på många ställen där människor vill ha väldigt statiskt, förutsägbart beteende.”

Den mindre arbetshästen och de mer funktionella språken tenderar att vara vad Tene beskriver som ”mycket små delar av utvecklaruniversumet”.

”Så, de är tekniskt sett mer utmanande. Det gör dem också mer intressanta. Men om du tittade på hur många jobb, hur många applikationer som använde dessa språk, skulle det vara en liten bråkdel.”

Det bästa av båda världar

Vad rekommenderar han att lära sig för utvecklare som vill ha det bästa av två världar – alltså populärt och långvarigt?

”I toppen av språken ur en popularitets- eller varaktig popularitetssynpunkt har vi förmodligen Java, Node JS och JavaScript,” säger han.

”Och (du har) Python, och så är det det här stora lägret av C# och F# och andra saker… Och så de intressanta nyare exotiska lovande språken. Och jag menar inte bara saker som precis kommit ut, utan också saker som Lua, som utvecklades i SysAdmin-världen från början men som nu har blivit väldigt, väldigt populär inom spel.”

Han tror att Rust är ”mycket lovande” som en potentiell ersättning för vissa C++-uppgifter. Go är också värt besväret med tanke på sin nisch inom systemprogrammering. Summan av kardemumman är att inte vara självbegränsande.

Som Tene säger kommer språket som används bara att vara lika snabbt och lika bra som utvecklaren som använder det.

Ta reda på hur nya tekniska trender förändras i morgon med vår nya podcast, Future Human: The Series. Lyssna nu SpotifyÄpple eller var du än får dina poddar.