Door Anoniem: Door Bladie: Wanneer "beheers" je een taal?
Inderdaad. Als ik op een rijtje zet met welke talen ik intensief genoeg heb gewerkt om er vaardig, handig, vlot in te zijn geworden dan zijn dat er een stuk of 8. Maar niet tegelijk, vaardigheden slijten weer als je ze niet gebruikt.
Goede vraag, maar ik denk dat jullie beiden mischien iets te recht-door-zee willen zijn. Tenminste, als je het vergelijkt met de vele mensen die zeggen meester te zijn in d'ene of d'andere taal en vervolgens niets presteren ("Brillant Paula Bean"), waar er ook best het een en ander van rondhobbelt. Maargoed, die moet je ook niets vragen, leren Dunning en Kruger ons.
Persoonlijk tel ik talen waar ik redelijk wat mee gestoeid heb, waar ik me senang bij voel, en waar ik, zij het zo, zij het met een beetje hulp uit de handboeken, gedaan in krijg wat ik gedaan wil krijgen. Wat dan opgaat voor C, C++, bourne shell, awk, (x86) assembly, zelfs (Turbo) Pascal al heb ik dat al jaren niet meer gebruikt, en nog zo een paar.
Dat is dus een duidelijk lagere lat dan bijvoorbeeld niveautje "Language Lawyer", waar ik voor sommige talen zelfs wel in de buurt ben geweest maar dat ben ik eigenlijk allemaal vergeten.
Maar het is wel een hogere lat dan "plug ieder (deel)probleem in google en kijk welk gekopieerde antwoord op stackoverflow lijkt te werken dan tenminste de minste errors geeft", wat voor sommige talen zelfs de main usage mode blijkt te zijn. (Je weet zelf wel welke talen en als je die hebt meegeteld, nouja, dan ligt jouw lat dus lager.)
Als ik kijk naar met welke talen ik genoeg in aanraking ben geweest om er iets van op te steken dat ik van werken met andere talen niet leerde,
Tellen "wat een vreselijke taal is dit toch!" en "waarom leggen mensen serieus hun ziel en zaligheid in deze rommel?!?"?
Met iets leren bedoel ik behalve wezenlijke concepten als functioneel programmeren of objectoriëntatie ook bijvoorbeeld leren hoe totaal fucked up een zwak getypeerde taal is waar de +-operator op twee invoervelden een stringconcatenatie is behalve wanneer in beide velden alleen cijfers zijn ingetypt, dan is het opeens de optelling van twee integers.
De WAT talk en/of "a fractal of bad design" documenteren twee zulke taaltjes, maar er zijn er vast meer.
Gerelateerd is "execution in the kingdom of nouns", ook al is dat een totaal andere failure mode.
En hoeveel talen ik nu beheers? Dat is er denk ik maar 1 (en dat is het antwoord dat ik geef). De rest heb ik al tijden niet of nauwelijks gebruikt. Dat wil niet zeggen dat ik de beheersing van talen die inmiddels niet al te sterk veranderd zijn niet in een hoog tempo zou kunnen oppikken als ik er weer mee zou gaan werken, ik denk dat ik net als mijn vaardigheid om te fietsen bepaalde manieren van denken, met hun mogelijkheden en beperkingen, in essentie nog heb. Maar als ik op een COBOL-, Perl-, Java- of C#-"fiets" stap zal ik vast wel eerst een tijdje slingeren voor ik weer stabiel rijd, en dat noem ik niet "beheersen".
Het punt is natuurlijk dat je vrij vlot ophoudt met zwalken, waar iemand die net begint duidelijk meer tijd nodig zal hebben, of er zelfs helemaal nooit zal komen. (Niet iedereen kan bijvoorbeeld pointers leren, gek genoeg--was ooit een draft paper over.) En als je meer talen gezien hebt, zeker binnen dezelfde klasse talen, dan breng je niet alleen meer gezichtspunten mee maar leer je ook makkelijker en sneller deze taal. Als de enige manier om dat uit te drukken in "aantal talen" is, nou, wees dan maar een klein beetje minder strikt.
Valt trouwens ook op dat degene die de poll geklust heeft zoveel overlap in de opties heeft laten zitten. Dat was vast geen (kundig) programmeur, want die zien dat onmiddelijk.
Door Anoniem: Door Briolet: En wanneer is iets een scripting taal en wanneer een echte programmeertaal?
Elke taal die Turing-compleet is is wat mij betreft een echte programmeertaal, inclusief de meeste scripttalen.
Dan valt SQL er ook onder, sinds RECURSE. En allerlei esotherische grapjes als brainfuck, intercal, en malbolge.
Het de betekenis van het woord script in de automatisering lijkt afgeleid te zijn van de betekenis draaiboek, niet van geschrift.
Dit klopt wel aardig.
Het wordt gebruikt voor een programma dat een of meer andere programma's aanstuurt.
Ik denk dat dat nog zelfs een beetje te strikt is, maar het komt in de buurt. Bourne shell bijvoorbeeld is specifiek voor dit aansturen bedoeld. Maar je kan dan ook een C-programma van een paar regels waar de hoofdmoot bestaat uit system() oid ook als "script" beschrijven ondanks dat ik C niet snel een scripttaal zal noemen omdat dat niet de hoofdmoot is van waar de taal voor gebruikt wordt.
Die categorieën zijn niet scherp te begrenzen.
Niet echt, en er zit ook een stukje overlap in met gecompileerd versus geinterpreteerd.
Ik schrijf wel eens kleine stukjes C om een klein taakje te vervullen in een groter geheel dat aanelkaar gelijmd wordt door bourne shell. Die stukjes zie ik ook als behorende bij de categorie "script". Terwijl een shell script dat zich gedraagt als programma, met een usage, opties, nette foutafhandeling, etc. ook al is het puur command line, wat mij betreft al aardig richting "programma" schuift.
Er zijn meerdere standalone interpreters voor bijvoorbeeld JavaScript, en die taal wordt ook server-side gebruikt op een manier die ik niet meer scripting zou noemen.
Dat stuurt dan de webserver aan. Ook al zou de webserver ondertussen in javascript geschreven zijn. Noem me maar bevooroordeeld, ik heb echt moeite om die rommel voor vol aan te zien. Heb ik met wel meer taaltjes, naar mijn mening met reden.
In Python kan je volwaardige applicaties schrijven en het is ook goed in te zetten als "glue language",
Dat laatste ben ik met je eens. Dat eerste... hmmm, ongeveer net zo volwaardig als java: Je moet een hele bak ellende installeren voordat je je net geinstalleerde "volwaardige applicatie" kan gaan bekijken. Dat vind ik als eindgebruiker niet prettig. En dat sentiment blijft geldig ook als de vereisten "toch al" op mijn computer aanwezig zouden zijn vanwege een andere "volwaardige applicatie". Er zijn wel meer taaltjes die daar last van hebben, wat dan maar al te makkelijk tot een hele dierentuin aan "volwaardige applicatie"-vereisten op m'n arme systeempje kan leiden. Niet prettig.
wat mij betreft vaak makkelijker dan bijvoorbeeld bash-scripts omdat het geëmmer van bijvoorbeeld argumenten met spaties erin goed afhandelen al snel de eenvoud van shell-syntax overschaduwt.
Heb ik niet zoveel problemen mee, maar het telt wel mee in mijn gereedschapskeuze om het onderhavige probleem op te lossen.
Als categorieën niet scherp te begrenzen zijn dan kan je je afvragen hoe betekenisvol ze eigenlijk zijn.
Niet heel erg, maar het zegt wel iets over de typen gebruik die je ervan kan verwachten. Ondertussen zie je dat de industrie verschoven is naar bijkans zoveel mogelijk hulpbronnen verpatsen, dus dan hebben minder efficiente taaltjes een streepje voor en dat draagt ook bij aan het vervagen van het onderscheid.
Zoals ik al aangaf is wat mij betreft is de vraag of iets wel of geen scripttaal is oninteressant en gaat het erom of de gebruikte taal geschikt is voor het doel waarvoor je hem wilt inzetten.
Voor de vraagstelling hier maakt het zeker niet uit.
Je kan je wel afvragen wat "een programmeertaal" is cq. wanneer houdt de ene op en begint een andere? Tel je scheme en common lisp als een of als twee talen? MBASIC, GW-BASIC, Q-BASIC en Visual Basic? VB en VBA? En zo verder.