Miért befolyásolja számos népszerű programozási nyelvet a C? [zárt]

Megjegyzések

  • A c-szintaxis birtoklása nem azonos a c-n alapulóval.
  • Ezenkívül A TIOBE egy szemétindex.
  • Inkább megkérdezhetem, miért népszerűbbek a C alapú programozási nyelvek?
  • Mivel a C az ALGOL leszármazottja, és az ALGOL blokk-hatókörű imperatív felírja, amit Ab a raham keresztényeknek, zsidóknak és muszlimoknak szól.
  • A PHP-ről és a Pythonról szóló idézeteid nem ' t mondják, hogy ' befolyásolja a C – és bár a PHP van, a Python nem úgy tűnik, hogy '.

Válasz

Az UNIX 1970-es évekbeli megjelenésével a C szabványos programozási nyelve gyorsan a programozási világ lingua franca jává vált. Egy ideig a C gyakorlatilag minden programozó számára kötelező volt. Mint ilyen, az a tény, hogy a C szinte minden programozási nyelvet befolyásolt, ami ilyen vagy olyan módon következett be, aligha meglepő, két okból is:

  • Új nyelv tervezésénél van értelme a szintaxisát, ahol lehetséges, egy népszerű létező nyelvre alapozza, amelyről feltételezhető, hogy közismert.
  • Egy új nyelv nagyobb valószínűséggel lesz sikeres, ha a tanulási görbe sekély, és egy olyan szintaxis, amely már ismert nyelvre emlékeztet általában könnyebben megtanulható (hacsak a látszólagos hasonlóságok ellenére sem gyökeresen viselkedik). Tehát azok a nyelvek, amelyek kölcsönveszik a szintaxist a C-től, általában gyorsabban nyernek tapadást, mint azok, amelyek nem használnak.

De léteztek más nyelvek, és még mindig vannak, néhányuk még a C-t is megelőzi. a LISP család (CL, a Clojure és a Scheme a legnépszerűbb modern nyelvjárások), az ML család (több modern nyelvjárással), a BASIC dialektusok egész serege (a VB.NET és a VBA modern megvalósítások), ott a Pascal és rokonai (mivel a Delphi a legismertebb) és sok “furcsa” nyelv, amelyek sok más nyelv hatását vették át, és maguk találtak ki néhány dolgot; Ilyen például a Go, a Python, a Lua, a Haskell (és elődje, a Miranda), a Prolog és az Erlang. Bár ezek közül a nyelvekből (a Python kivételével) egyik sem tartozik az első 10-be, sok közülük stabil felhasználói bázissal és aktív közösséggel rendelkezik; ezek biztosan nem múlnak el.

Emellett meg kell jegyezni, hogy ezekben a nyelvekben a C-befolyás nagymértékben különbözik, a szinte 100% C-kompatibilis C ++ és Objective-C nyelvektől kezdve egészen a Python (amely szándékosan elhagyja a C sok szintaxis funkcióját). És ez csak a szintaxis: a szemantika szempontjából a listán szereplő nyelvek többségének nincs sok közös vonása C-vel. A túlnyomó többségben memóriakezelés van beépítve a nyelvbe, következésképpen a szemantika másolása, az argumentumok átadása stb., nagyon különbözőek. Például a JavaScript erős szemantikai hatással bír a Scheme-ről, míg a szintaxisát úgy tervezték, hogy hasonlítson a Java-ra (amely viszont a bitek és darabok szintaxisát a C-re alapozza, de nem a szemantikáját). További különbségek (a C ++ és az Objective-C kivételével, amelyek többnyire visszafelé kompatibilisek a C-vel) a hibakezelés, a hatókör szabályai, a standard könyvtárak, a külső kódok felvétele (#include), és az a tény, hogy ezek közül a nyelvek közül sok “virtualizált”, vagyis tolmácson, JIT fordítón vagy virtuális gépen fut.

A Pythonnak egyébként van némi C hatása, de a szintaxis és a szemantika sem gyökeresen különbözik a C-től, és ez tervszerűen történik. A Python csak olyan funkciókat kölcsönöz a C-től, ahol más alternatívák egyaránt “jóak” (a “Python Zen” -jéhez hasonlóan – írja be a import this szót egy python-tolmácsban).

Ami a programozás jövőjét illeti; az előrejelzések változnak. A C hatása nem szűnik meg, de a hardver legújabb fejleményei (a többmagos gépek általánossá válása, az erőteljes GPU-k, a CPU megszűnése a tipikus teljesítményszűkület, a gyors, megbízható hálózati kapcsolatok stb.) Gyökeresen eltérő megközelítéseket követelnek meg a programozáshoz általában.Bárki, aki valaha írt többszálas elosztott alkalmazást imperatív nyelven, elmondhatja, hogy ez hihetetlenül nehéz, míg a Haskellhez hasonló nyelvek olyan jellemzőkkel rendelkeznek, amelyek eltávolítják a tipikus problémákat, és elvontabb és strukturáltabb megközelítést kínálnak az elosztott, egyidejű és párhuzamos feldolgozás (a tisztaság fontos fogalom ebben az összefüggésben). Az újabb programozási nyelvek (pl. C # vagy D) már tartalmaznak számos funkciót egy ilyen idióma támogatásához. Mindenesetre sem a C-nek a programozásra gyakorolt erős hatása, sem a a nem C-szerű nyelvek megszűnnek.

Megjegyzések

  • Szép válasz, de " CPU megszűnik lenni a tipikus teljesítmény szűk keresztmetszet "? Tapasztalataim szerint a teljesítményproblémák bővelkednek – CPU, IO, akkor nevezd meg. Ha nem, akkor a profilozókra nincs szükség, pedig nem nagyon hatékony.
  • @MikeDunlavey: Általában a szűk keresztmetszeteket az I / O, n okozzák etworking, CPU cache teljesítmény, busz áteresztőképesség és (nem hatékony) interprocess kommunikáció. A napokban szinte elkerülhetetlenül a CPU jelentette a szűk keresztmetszetet; ez már nem igaz ' t.

Válasz

Ez nagyon hasonlít arra a kérdésre, hogy miért az angol a domináns nyelv az Egyesült Államokban. Miért nem spanyol vagy francia? Többet irányítottak az Egyesült Államok területén, mint az angol gyarmatok. Miért nem holland? Az első amerikai főváros egy volt holland gyarmaton volt. Nem vagyok biztos benne, hogy erre lehet “válasz”.

Azonban a “Számítógépes nyelvelőzmények” idővonal ( http://www.levenez.com/lang/ ) minden lehetséges választ megad.

Megjegyzések

  • Mivel Nagy-Britannia az 1600-as évekből -1880 volt nagyjából a világ legfontosabb ipari és pénzügyi erőműve, amelyet az Egyesült Államok követett 1880-tól napjainkig (< –debatable). Ez a nemzetközi üzleti nyelv lett, és világszerte több mint 2 milliárd ember folyékonyan beszél. Ezt senki sem akarja spanyolul vagy hollandul beszélni 🙂
  • @maple_shaft – " senki sem akar spanyolul beszélni "?! … tudod egyáltalán, hány országban beszélik? hu.wikipedia.org/wiki/Spanyol_nyelv
  • @ S.Lott: Arra a részre gondol, ahol a Brit Birodalom volt a legnagyobb birodalom, amely valaha létezett, és az ent ire világ ' felülete? Ez a fajta " nem erőteljes "?
  • @DeadMG: I ' m nem beszélek a világról. ' Az Egyesült Államokról beszélek az 1700 ' években, ahol a franciák a briteket a part mentén egy kis területre szegélyezték. ' Csak arról beszélek, hogy a britek csak ebben a színházban veszítik el katonai elkötelezettségüket. A franciák egyértelműen irányították annak nagy részét, ami USA-ba vált. Még. Az Egyesült Államok felszámolta az angol nyelvet. Nem francia. Ugyanez az elemzés vonatkozik C-re is. Ez ' egy összetett történelem, sok befolyásoló tényezővel. ' nincs triviális, pat válasz.
  • @ S.Lott A franciák nem nyertek ' találkozás. Észak-Amerikát tekintve többséget szereztek; de az NA 5 nagy csatája közül 4 elvesztése az 1559/60 során hatalmas vereséget eredményezett a színházban. Az erődök Ticonderoga és Niagara elfoglalása, az Ábrahám síksága és a restigouchei csata mind brit győzelem volt. Az ellátás megszüntetésével / megerősítésével a francia Sainte-Foy-i győzelem lényegtelenné vált.

Válasz

Ha új programozási nyelvet készít, a meglévő népszerű nyelvekhez hasonló szintaxissal megkönnyíti az új felhasználók számára a tanulást. Különösen, ha sok fogalom hasonló a nyelvek között.

Továbbá úgy gondolom, hogy a C stílusú szintaxis viszonylag könnyen olvasható. Összehasonlítva a Pascal-val, a “{” és “}” szimbólumok használata a kódblokkoknál olvashatóbb, mint a “kezdet” és “vég”, amelyek optikailag nagyon hasonlítanak az azonosítókra. A Python még olvashatóbb, de a szóköz beillesztése a szintaxisba új problémákat nyit meg a szerkesztéssel. Egy másik példa: a Lisp és a JavaScript megoszt néhány ötletet, de ha ugyanazt a dolgot C-stílusú szintaxissal írják, az kevésbé homályos.

Biztos vagyok benne, hogy sokan nem értenek egyet a második bekezdéssel, mert mindenki saját kedvenc nyelvük van, de úgy gondolom, hogy a C-stílusú szintaxis népszerűsége részben történelmi egybeesés, de részben azt is mutatja, hogy a C szerzői néhány jó döntést hoztak.

Válasz

A programozási nyelvek az idők folyamán éppúgy fejlődnek, mint a természetes nyelvek, és néhány régebbi nyelv erősebben befolyásolja ezt az evolúciót, mint mások míg mások homályba merülnek, és hatásukat a felszín szintjén nehezebb nyomon követni, vagyis a szintaxis.

C befolyása sok forrásból származik – alacsony, széles körben elterjedt, támogatta Unix és Microsoft körök egyaránt. Ez a legmegfelelőbb probléma túlélése is – könnyű belátni, hogy a rövid C-szerű szintaxis nagyobb vonzerővel bír, mint Pascal és a C többi versenytársa bonyolult Algol-eredetű szintaxisa az 1970-es és 1980-as években. Ezért széles körben elfogadták az utána következő nyelvek.

Mivel a többszálú programozás és a funkcionális nyelvek jelentősége különösen jól alkalmazkodik hozzá, azt mondanám, hogy hatásuk nőni fog a jövő. Példa: Python, amely még fel is tette ezt a listát a kérdésbejegyzésbe.

A nyelvtörténet szép idővonal-nézete, amin elgondolkodhatunk

megjegyzések

  • Tévedtél. A PASCAL és a C egyaránt ALGOL leszármazott.
  • Igaz, de maga Algol Fortran leszármazott, és kiválasztotta az ott hivatkozott konstrukciók egy részét (program, vég, alprogram a c zárójelek). Ennek ellenére valójában Algol-szerű szintaxis volt a fejemben. Szerkesztve.
  • a szűk C-szerű szintaxis nagyobb vonzerővel bír, mint Pascal és más C versenytársak Algol-eredetű szintaxisa a 70 ' s és 80 ' s +1 ehhez. kezdet a programozók is emberek vége kezdődik azok, akik azt hitték , hogy ez ' alkalmas az írásjelek olyan szavakra való feltérképezésére, mint a kezdet-vég, elvesztették a göndör zárójeles csatát a történet vége
  • nem látok bizonyítékot hogy a C szintaxis kevésbé homályos, kivéve abban az értelemben, hogy a legtöbb fejlesztő ismeri a C-t vagy valamilyen C-hez kapcsolódó nyelvet, és ezért ismertebbnek tűnik. AFAICT, C felépítése miatt megnyerte a Pascalt, és az a tény, hogy a megvalósításoknak nem a szintaxisuknak, hanem a saját összekapcsolásuknak kell lenniük.
  • @ David- Amire emlékszem, az egyik oka annak, hogy C megnyerte a többi nyelvet, az a C-ben található memória (azaz a mutatók) viszonylagos könnyű elérése volt. Tudom, hogy most nagyon elkeseredtek, de akkoriban, amikor 1 KB RAM volt a sok memória, ez a nyelv nagyon hatékony jellemzője volt. Tudom, hogy más nyelvek olyan mutató jellegű funkciókat szolgáltattak, de egyik sem olyan egyszerű, mint a C.

Válasz

A legtöbb az Ön által felsorolt nyelveknek a lényegtelen szintaktikai hasonlóságokon kívül gyakorlatilag semmi köze a C-hez. A két tényleges C-származék csak az Objective-C és a C ++.

Megjegyzések

  • Ha nem vesszük fontolóra a szintaxist, akkor az egyetlen nyelv közötti különbség az általános nyelvi konstrukciók (ciklusok, feltételek, változók, ezek absztrakciói, például osztályok és bezárások stb.) rendelkezésre állása, és ezek mind megegyeznek a gépi kód viselkedésével. Minden alacsony szintű nyelv hasonló egymáshoz, és minden magas szintű nyelv rendkívül hasonló egymáshoz.
  • Nem szabad ' gondolkodni nyelv, mint milyen funkcionalitással rendelkezik, de hogyan kommunikálja az alkalmazás viselkedését. A forráskód a legalacsonyabb szintű dokumentáció, és az egyik forráskódot ír emberek és NEM gépek számára. Ha szigorúan gépekre írnánk kódot, akkor mindannyian az összeállításban kódolnánk.
  • @maple_shaft: Nagyon helyes! Egy interjúban arra kértek, magyarázzam el a gépi nyelv (assembler) és a programozási nyelv közötti különbséget. A válaszom a következő volt: " A gépnyelv a gépeké, a programozási nyelv a programozóké. A szintaxis nem releváns a ' emberek vel való kommunikáció szempontjából. Ha egy angol szót más helyesírással cserélnék, akkor az angol továbbra is ugyanaz a nyelv lenne. A szintaktikai forma lényegtelen, ami a ' s kommunikatív, az a nyelvi szemantika.
  • @DeadMG: De a kérdés a szintaxisról szól. A szintaktikai hasonlóságokat lényegtelennek tekintheti, de a kérdező azt akarja tudni, hogy miért ezek a lényegtelen hasonlóságok léteznek .

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük