Odată cu apariția UNIX în anii 1970, limbajul său standard de sistemare C a devenit rapid lingua franca din lumea programării. Pentru o vreme, C a fost practic obligatoriu pentru fiecare programator. Ca atare, faptul că C a influențat aproape fiecare limbaj de programare care a venit după el într-un fel sau altul nu este deloc surprinzător, din două motive:
- Când proiectăm un nou limbaj, este logic să să-și bazeze sintaxa, acolo unde este posibil, pe un limbaj popular popular care poate fi presupus de cunoștințe comune.
- Este mai probabil ca un nou limbaj să aibă succes dacă curba de învățare este superficială și o sintaxă care seamănă cu o limbă deja cunoscută este în general mai ușor de învățat (cu excepția cazului în care se comportă radical diferit în ciuda asemănărilor aparente). Așadar, limbile care împrumută sintaxa de la C câștigă, în general, o acțiune mai rapidă decât cele care nu au.
Dar alte limbi au existat și încă există, unele dintre ele chiar precedând C – acolo familia LISP (CL, Clojure și Scheme fiind cele mai populare dialecte moderne), familia ML (cu mai multe dialecte moderne), există „o întreagă armată de dialecte BASIC (VB.NET și VBA sunt implementări moderne), acolo este Pascal și rudele sale (Delphi fiind cel mai cunoscut) și multe limbi „ciudate” care au luat influențe din multe alte limbi și au inventat ele însele câteva lucruri; Exemplele includ Go, Python, Lua, Haskell (și predecesorul său, Miranda), Prolog și Erlang. Deși niciuna dintre aceste limbi (cu excepția Python) nu se află în top 10, multe dintre ele au o bază stabilă de utilizatori și o comunitate activă; cu siguranță nu vor dispărea.
De asemenea, trebuie remarcat faptul că cantitatea de influență a C în aceste limbi diferă extrem de mult, variind de la aproape 100% limbile compatibile C C ++ și Objective-C, până la Python (care abandonează în mod deliberat multe dintre caracteristicile de sintaxă ale lui C). Și aceasta este doar sintaxa: în ceea ce privește semantica, majoritatea limbajelor de pe această listă nu au multe în comun cu C. Majoritatea covârșitoare are managementul memoriei încorporat în limbaj și, în consecință, copieze semantica, trecerea argumentelor, etc., sunt foarte diferite. JavaScript, de exemplu, are influențe semantice puternice de la Scheme, în timp ce sintaxa sa a fost concepută pentru a semăna cu Java (care, la rândul său, își bazează sintaxa de biți și piese pe C, dar nu și semantica sa). Alte diferențe (cu excepția C ++ și Objective-C, care sunt în mare parte compatibile cu C) includ gestionarea erorilor, reguli de aplicare, biblioteci standard, includerea codului extern (#include
), și faptul că multe dintre aceste limbaje sunt „virtualizate”, adică rulează pe un interpret, un compilator JIT sau o mașină virtuală.
Python, apropo, are o anumită influență C, dar cu siguranță nu se „bazează pe„ C. Atât sintaxa, cât și semantica diferă destul de radical de C, iar acest lucru este prin design. Python împrumută doar caracteristici de la C, unde alte alternative sunt la fel de „bune” (conform „Zen of Python” – tastați import this
într-un interpret python).
În ceea ce privește viitorul programării; predicțiile variază. Influența lui C nu dispare, dar dezvoltările recente în hardware (mașinile multi-core devin obișnuite, GPU-uri puternice, CPU încetând să fie blocajul tipic de performanță, conexiunile de rețea rapide fiabile etc.) necesită abordări radical diferite la programare în general.Oricine a scris vreodată o aplicație distribuită multithread într-un limbaj imperativ poate spune că este incredibil de greu, în timp ce limbile precum Haskell au caracteristici care elimină majoritatea problemelor tipice și oferă o abordare mai abstractă și mai structurată a distribuției, concurenței și procesare paralelă (puritatea fiind un concept important în acest context). Limbaje de programare mai noi (de exemplu, C # sau D) includ deja multe caracteristici pentru a susține un astfel de idiom. În orice caz, nici impactul puternic pe care C l-a avut asupra programării, nici existența limbile non-C dispar.
Comentarii
Dacă creați un nou limbaj de programare, având o sintaxă similară cu limbajele existente populare, face ca învățarea să fie mai ușoară pentru noii dvs. utilizatori. Mai ales dacă multe concepte sunt similare între limbi.
De asemenea, cred că sintaxa în stil C este relativ ușor de citit. Pentru a compara cu Pascal, folosirea simbolurilor „{” și „}” pentru blocuri de cod este mai lizibilă decât „începe” și „sfârșit”, care optic sunt foarte asemănătoare cu identificatorii. Python este chiar mai lizibil, dar includerea spațiului alb în sintaxă deschide un nou set de probleme cu editarea. Un alt exemplu: Lisp și JavaScript împărtășesc câteva idei, dar atunci când același lucru este scris în sintaxă în stil C, este mai puțin obscur.
Sunt sigur că mulți oameni nu ar fi de acord cu al doilea paragraf, deoarece toată lumea are propriul limbaj preferat, dar cred că popularitatea sintaxei în stil C este parțial o coincidență istorică, dar parțial arată, de asemenea, că autorii lui C au luat câteva decizii bune.
Limbajele de programare evoluează în timp la fel ca limbajele naturale, unele limbi mai vechi influențând această evoluție într-un mod mai puternic decât altele , în timp ce alții se estompează în obscuritate, iar influența lor este mai greu de urmărit la nivelul suprafeței, adică sintaxă.
Influența lui C provine din mai multe surse – nivelul său scăzut, răspândit, a avut un sprijin în ambele cercuri Unix și Microsoft. Este, de asemenea, supraviețuirea celei mai potrivite probleme – este ușor de văzut sintaxa asemănătoare C-ului avea mai multă atracție decât sintaxa detaliată derivată de Algol a lui Pascal și a altor concurenți din C în anii 1970 și 1980. Prin urmare, a fost adoptat pe scară largă de limbile care au urmat-o.
Având în vedere creșterea actuală a importanței programării multithread și a limbajelor funcționale fiind deosebit de potrivite pentru aceasta, aș spune că vom vedea că influența lor crește în viitorul. Caz la punct: Python, care a făcut chiar lista respectivă în postarea întrebării.
O vizualizare frumoasă a cronologiei istoriei limbilor pe care să o meditez
Comentarii