Fënnef Froen iwwer Programméierungssprooch Design

Fënnef Froen iwwer Programméierungssprooch Design

Guiding Philosophie

1. Programméiere Sprooche fir Leit

Programméierungssprooche si wéi d'Leit mat Computer schwätzen. De Computer wäert frou all Sprooch ze schwätzen déi net eendeiteg ass. De Grond firwat mir Sproochen op héijem Niveau hunn ass well d'Leit keng Maschinnsprooch handhaben. De Punkt vu Programméierungssproochen ass et ze verhënneren datt eis aarm, fragil mënschlech Gehirer vun ze vill Detailer iwwerwältegt ginn.

Architekten wëssen datt e puer Designproblemer méi alldeeglech sinn wéi anerer. E puer vun de kloersten an abstraktste Designproblemer sinn den Design vu Brécke. An dësem Fall ass Är Aarbecht déi néideg Distanz mat sou wéineg Material wéi méiglech ze iwwerdecken. Um aneren Enn vum Spektrum ass Stull Design. Stulldesigner sollten hir Zäit iwwer d'Hënn vun de Leit denken.

Software Entwécklung huet en ähnlechen Ënnerscheed. Entwerfen Algorithmen fir Daten duerch e Netzwierk ze routen ass e flotten, abstrakte Problem, wéi Brécken ze designen. Wärend Programméierungssproochen designen ass wéi Stänn designen: Dir musst mat mënschleche Schwächen këmmeren.

Dëst ass schwéier fir déi meescht vun eis ze realiséieren. Elegante mathematesch Systemer designen kléngt fir déi meescht vun eis vill méi attraktiv wéi d'mënschlech Schwächen z'ënnerhalen. D'Roll vun der mathematescher Eleganz ass datt e gewësse Grad vun Eleganz Programmer méi einfach ze verstoen mécht. Mee et ass net alles ëm Eleganz.

A wann ech soen datt Sprooche solle entworf ginn fir mënschlech Schwächen z'empfänken, mengen ech net datt Sprooche solle fir schlecht Programméierer entworf ginn. A Wierklechkeet sollt Dir Software fir déi bescht Programméierer designen, awer och déi bescht Programméierer hunn hir Grenzen. Ech denken net, datt iergendeen an enger Sprooch programméiere géif, wou all Variabelen mam Bréif "x" mat ganz Zuelen Abonnementer bezeechent goufen.

2. Design fir Iech selwer an Är Frënn

Wann Dir d'Geschicht vun de Programméierungssprooche kuckt, sinn déi meescht vun de beschte Sprooche entwéckelt fir vun hiren eegenen Autoren ze benotzen, an déi meescht vun de Schlëmmste ware fir aner Leit entworf ze benotzen.

Wann Sprooche fir aner Leit entworf sinn, ass et ëmmer eng spezifesch Grupp vu Leit: d'Leit sinn net sou schlau wéi d'Creatoren vun der Sprooch. Dëst ass wéi Dir eng Zong kritt, déi Iech erof schwätzt. Cobol ass dat prominentst Beispill, awer déi meescht Sprooche si mat dësem Geescht duerchgesat.

Et huet näischt domat ze dinn, wéi héich d’Sprooch ass. C ass zimmlech niddereg, awer et gouf erstallt fir vu sengen Autoren ze benotzen, dofir hunn d'Hacker et gär.

D'Argument fir Sprooche fir schlecht Programméierer ze designen ass datt et méi schlecht Programméierer gëtt wéi gutt. Vläicht ass dat esou. Awer dës kleng Zuel vu gudde Programméierer schreift disproportional méi Software.

Meng Fro ass, wéi erstellt Dir eng Sprooch déi un déi bescht Hacker appelléiert? Et schéngt mir datt dës Fro identesch ass mat der Fro wéi eng gutt Programméierungssprooch ze kreéieren?, awer och wann et net ass, ass et op d'mannst eng interessant Fro.

3. Gëff de Programméierer esou vill Kontroll wéi méiglech

Vill Sproochen (besonnesch déi fir aner Leit entworf) handelen wéi Nannies: si probéieren Iech vun Saachen ze warnen, déi se mengen, wäerten Iech net nëtzlech sinn. Ech huelen de Géigendeel Vue: ginn de Programméierer sou vill Kontroll wéi Dir kënnt.

Wéi ech d'Lisp fir d'éischt geléiert hunn, wat ech am meeschte gefall hunn, war datt mir als Gläichen geschwat hunn. An deenen anere Sproochen, déi ech bis dee Moment geléiert hunn, gouf et eng Sprooch, an et war mäi Programm an där Sprooch, a si existéieren ganz separat. Awer am Lisp waren d'Funktiounen a Makroen, déi ech geschriwwen hunn, déiselwecht wéi d'Sprooch selwer geschriwwe gouf. Ech kéint d'Sprooch selwer iwwerschreiwe wann ech wollt. Et hat deeselwechten Appel wéi Open Source Software.

4. Brevity ass d'Schwëster vum Talent

Kuerzegkeet ass ënnerbewäert a souguer veruecht. Awer wann Dir an d'Häerzer vun Hacker kuckt, gesitt Dir datt se wierklech Kuerzegkeet gär hunn. Wéi oft hutt Dir Hacker gär héieren iwwer wéi, an, soen, APL, se erstaunlech Saache maache mat nëmmen e puer Zeilen Code? Ech denken, datt wierklech intelligent Leit wierklech gär op dës oppassen.

Ech gleewen datt bal alles wat Programmer méi kuerz mécht eng gutt Saach ass. Et solle vill Bibliothéiksfunktiounen ginn, alles wat implizit ka sinn, soll esou sinn; Syntax soll méi präzis sinn; souguer Entitéitennimm solle kuerz sinn.

An net nëmme Programmer solle kuerz sinn. D'Handbuch soll och kuerz sinn. E gudden Deel vun den Handbücher ass voll mat Erklärungen, Verzichterklärungen, Warnungen a spezielle Fäll. Wann Dir d'Handbuch muss verkierzen, ass déi bescht Optioun d'Sprooch ze korrigéieren déi sou vill Erklärung erfuerdert.

5. Erkennen wat Hacking ass

Vill Leit wëllen Hacking fir Mathematik ze sinn, oder op d'mannst eppes ähnlech wéi Wëssenschaft. Ech mengen Hacking ass méi wéi Architektur. D'Architektur ass iwwer d'Physik an deem en Architekt muss e Gebai designen dat net falen, awer dat richtegt Zil vun engem Architekt ass e super Gebai ze kreéieren, net Entdeckungen am Beräich vun der Statik ze maachen.

Wat Hacker gär hunn ass super Programmer ze kreéieren. An ech mengen, op d'mannst an eisen eegenen Gedanken, mir sollten drun erënneren datt d'Schreiwen vun super Programmer eng wonnerbar Saach ass, och wann dat Wierk net einfach an déi üblech intellektuell Währung vu wëssenschaftleche Pabeieren iwwersetzt. Vun engem intellektuellen Siicht ass et grad esou wichteg eng Sprooch ze designen déi Programméierer gär hunn wéi et ass eng schrecklech ze designen déi eng Iddi verkierpert iwwer déi Dir e Pabeier publizéieren kënnt.

Oppen Emissiounen

1. Wéi grouss Bibliothéiken ze organiséieren?

Bibliothéike ginn e wichtege Bestanddeel vun de Programméierungssproochen. Si ginn esou grouss datt et geféierlech ka sinn. Wann et méi laang dauert fir eng Funktioun an enger Bibliothéik ze fannen déi mécht wat Dir braucht wéi déi Funktioun selwer ze schreiwen, da mécht all Code näischt anescht wéi Äert Handbuch méi déck ze maachen. (D'Symbolesch Handbücher waren e Beispill dovun.) Also musse mir de Problem vun der Bibliothéikorganisatioun léisen. Idealerweis designt se sou datt de Programméierer ka roden wéi eng Bibliothéiksfunktioun gëeegent ass.

2. Sinn d'Leit wierklech Angscht virum Präfix Syntax?

Dëst ass en oppene Problem am Sënn datt ech zënter e puer Joer driwwer nodenken an nach ëmmer net d'Äntwert weess. Präfix Syntax schéngt mir ganz natierlech, ausser vläicht fir seng Notzung an der Mathematik. Mee et kann sinn, datt vill vun der Onpopularitéit vum Lisp einfach un der ongewéinlecher Syntax läit... Ob et derwäert ass, eppes dergéint ze maachen, wann dat stëmmt, ass eng aner Saach.

3. Wat braucht Dir fir Server Software?

Ech mengen déi meescht Uwendungen, déi an den nächsten zwanzeg Joer geschriwwe ginn, wäerte Webapplikatiounen sinn, am Sënn datt Programmer op engem Server wunnen a mat Iech iwwer e Webbrowser kommunizéieren. A fir esou Applikatiounen ze schreiwen brauche mir nei Saachen.

Eng vun dëse Saachen ass Ënnerstëtzung fir en neie Wee fir Serverapplikatiounen ze verëffentlechen. Amplaz vun enger oder zwee grousser Verëffentlechung pro Joer, wéi Desktop Software, gëtt Server Software an enger Serie vu klenge Ännerunge verëffentlecht. Dir hutt vläicht fënnef oder zéng Verëffentlechungen den Dag. A jidderee wäert ëmmer déi lescht Versioun hunn.

Wësst Dir wéi Dir Programmer designt fir ënnerhaltbar ze sinn? Server Software muss konzipéiert sinn fir verännerbar ze sinn. Dir sollt fäeg sinn et einfach z'änneren, oder op d'mannst wëssen wat eng kleng Ännerung bedeit a wat wichteg ass.

Eng aner Saach, déi an der Serversoftware nëtzlech ka sinn, ass op eemol d'Kontinuitéit vun der Liwwerung. An enger Webapplikatioun kënnt Dir eppes benotzen wéi CPSfir den Effet vun Routinen an der staatloser Welt vu Web Sessiounen ze kréien. Kontinuitéit vun der Versuergung ze hunn ass et wäert wäert sinn wann d'Feature net ze deier ass.

4. Wéi eng nei Abstraktioune bleiwen nach ze entdecken?

Ech sinn net sécher wéi raisonnabel déi Hoffnung ass, awer perséinlech géif ech wierklech eng nei Abstraktioun entdecken - eppes wat sou sënnvoll kéint sinn wéi éischtklasseg Funktiounen oder Rekursioun oder op d'mannst Standardparameter. Vläicht ass dëst en onméiglechen Dram. Esou Saachen ginn dacks net entdeckt. Awer ech verléieren d'Hoffnung net.

Kleng bekannt Geheimnisser

1. Dir kënnt all Sprooch benotzen Dir wëllt

Virdrun huet d'Schafung vun Uwendungen d'Schafung vun Desktop Software gemengt. An an Desktop Software gëtt et eng grouss Viraussetzung fir Uwendungen an der selwechter Sprooch ze schreiwen wéi de Betribssystem. Also virun zéng Joer huet Schreiwen Software am Allgemengen gemengt Software Schreiwen am C. Um Enn huet sech d'Traditioun entwéckelt: Applikatioune sollen net an ongewéinleche Sprooche geschriwwe ginn. An dës Traditioun huet sech esou laang entwéckelt, datt net-technesch Leit wéi Manager a Venture Kapitalisten et och geléiert hunn.

Server Software zerstéiert dëse Modell komplett. Mat Server Software kënnt Dir all Sprooch benotzen Dir wëllt. Bal kee versteet dat nach (besonnesch Manager a Venture Kapitalisten). Awer e puer Hacker verstinn dëst, dofir héiere mir iwwer Indy Sprooche wéi Perl a Python. Mir héieren net iwwer Perl a Python well d'Leit se benotze fir Windows Uwendungen ze schreiwen.

Wat bedeit dat fir eis, Leit, déi un der Programméierungssproochdesign interesséiert sinn, datt et e potenzielle Publikum fir eis Aarbecht gëtt.

2. Geschwindegkeet kënnt vu Profiler

Sproochentwéckler, oder op d'mannst Sproochimplementer, schreiwen gär Compileren déi séier Code generéieren. Awer ech mengen dat ass net dat wat Sprooche séier fir Benotzer mécht. De Knuth huet viru laanger Zäit festgestallt datt d'Geschwindegkeet vun nëmmen e puer Flaschenhals hänkt. A jidderee deen probéiert huet e Programm ze beschleunegen, weess datt Dir net kënnt roden wou de Flaschenhals ass. Profiler ass d'Äntwert.

Sproochentwéckler léisen de falsche Problem. D'Benotzer brauche keng Benchmarks fir séier ze lafen. Si brauchen eng Sprooch, déi kann weisen, wéi eng Deeler vun hirem Programm ëmgeschriwwe musse ginn. Zu dësem Zäitpunkt ass d'Vitesse an der Praxis néideg. Also vläicht wier et besser wann d'Sproochimplementateuren d'Halschent vun der Zäit verbréngen, déi se verbréngen fir de Compiler ze optimiséieren an et fir e gudde Profiler ze schreiwen.

3. Dir braucht eng App déi Är Sprooch entwéckelt

Dëst ass vläicht net déi ultimativ Wourecht, awer et schéngt datt déi bescht Sprooche sech zesumme mat den Uwendungen entwéckelt hunn an deenen se benotzt goufen. C gouf vu Leit geschriwwen déi Systemprogramméiere gebraucht hunn. De Lisp war deelweis fir symbolesch Differenzéierung entworf, an de McCarthy war sou eifreg fir unzefänken datt hien souguer ugefaang huet Differenzéierungsprogrammer am éischte Lisp Pabeier am Joer 1960 ze schreiwen.

Dëst ass besonnesch gutt wann Är Applikatioun e puer nei Probleemer léist. Dëst dréckt Är Sprooch fir nei Features ze hunn déi Programméierer wëllen. Perséinlech sinn ech interesséiert fir eng Sprooch ze schreiwen déi gutt ass fir Serverapplikatiounen.

[Wärend der Diskussioun huet de Guy Steele dëst och gesot, a bäigefüügt datt d'Applikatioun net sollt bestoen aus engem Compiler fir Är Sprooch ze schreiwen, ausser Är Sprooch ass entwéckelt fir Compileren ze schreiwen.]

4. D'Sprooch muss gëeegent sinn fir eng Kéier Programmer ze schreiwen.

Dir wësst wat e One-Shot Programm heescht: et ass wann Dir e begrenzte Problem séier muss léisen. Ech gleewen datt wann Dir Iech ronderëm kuckt, fannt Dir vill sérieux Programmer déi als One-Offs ugefaang hunn. Ech wier net iwwerrascht wann déi meescht vun de Programmer als eemoleg ugefaang hunn. Also, wann Dir eng Sprooch wëllt erstellen déi gëeegent ass fir Software ze schreiwen am Allgemengen, da sollt et och gëeegent sinn fir eemoleg Programmer ze schreiwen, well dëst d'éischt Etapp vu ville Programmer ass.

5. Syntax ass mat Semantik verbonnen

Et gëtt traditionell ugeholl datt Syntax a Semantik ganz verschidde Saachen sinn. Dëst kléngt vläicht schockéiert, awer et ass net. Ech denken, wat Dir an Ärem Programm erreechen wëllt, huet mat wéi Dir et ausdréckt.

Ech hunn viru kuerzem mam Robert Morris geschwat, an hien huet festgestallt datt d'Operateur Iwwerlaaschtung e grousse Plus ass fir d'Victoire vu Sproochen mat Infix Syntax. A Sprooche mat Präfix Syntax, all Funktioun déi Dir definéiert ass tatsächlech en Bedreiwer. Wann Dir wëllt eng nei Zort Zuel bäiginn, déi Dir gemaach hutt, kënnt Dir einfach eng nei Funktioun definéieren fir se ze addéieren. Wann Dir dëst an enger Sprooch mat Infix Syntax maacht, gesitt Dir datt et e groussen Ënnerscheed ass tëscht engem iwwerlaaschte Bedreiwer ze benotzen an eng Funktioun ze ruffen.

Iddien déi mat der Zäit zréckkommen

1. Nei programméiere Sproochen

Wann Dir op d'1970er Jore kuckt, war et moudesch nei Programméierungssproochen z'entwéckelen. Dat ass elo net de Fall. Awer ech gleewen datt d'Serversoftware erëm d'Moud fir nei Sproochen erstallt gëtt. Mat Serversoftware kënnt Dir all Sprooch benotzen déi Dir wëllt, also wann een eng Sprooch erstellt déi besser schéngt wéi de Rescht, da wäerten et Leit ginn déi decidéieren se ze benotzen.

2. Zäit Deele

De Richard Kelsey ass mat dëser Iddi komm, där hir Zäit erëm komm ass an ech ënnerstëtzen se voll. Meng Rotschléi (a Microsoft och) ass datt vill Informatik vum Desktop op Remote Serveren réckelen. An anere Wierder, Time Sharing ass zréck. Ech mengen dat brauch Ënnerstëtzung um Niveau vun der Sprooch. Zum Beispill hunn de Richard an de Jonathan Reeves vill Aarbecht gemaach fir Prozessplang am Schema 48 ëmzesetzen.

3. Effizienz

Viru kuerzem huet et geschéngt datt Computere scho séier genuch waren. Mir héieren ëmmer méi iwwer Bytecode, wat op d'mannst fir mech heescht datt mir e bësse Kraaft an der Reserve hunn. Mee ech mengen, datt mat Server Software, mir hunn et net. Eppes muss fir d'Serveren bezuelen, déi d'Software lafen, an d'Zuel vun de Benotzer déi de Server pro Maschinn ënnerstëtzen kann en Divisor vun hiren Kapitalkäschte sinn.

Ech mengen, d'Effizienz wäert wichteg sinn, op d'mannst am Informatik Fläschhals. Dëst wäert besonnesch wichteg fir I / O Operatiounen sinn, well Serverapplikatiounen vill vun esou Operatiounen ausféieren.

Um Enn kann et erausstellen datt Bytecode net d'Äntwert ass. Sonn a Microsoft schéngen de Moment Kapp zu Kapp am Bytecode Feld ze goen. Awer si maachen dëst well Bytecode eng praktesch Plaz ass fir sech an e Prozess z'integréieren, net well Bytecode selwer eng gutt Iddi ass. Et kann sech erausstellen datt dës ganz Schluecht onnotéiert bleift. Et wier witzeg.

Schnéi a Schnéi

1. Clienten

Dëst ass just eng roden, awer et ass datt déi eenzeg Uwendungen déi profitéieren déi sinn déi komplett Server-Säit sinn. Software ze designen déi op der Virgab funktionnéiert datt jiddereen e Client wäert hunn ass wéi eng Gesellschaft ze designen baséiert op der Virgab datt jiddereen éierlech wäert sinn. Et wier definitiv bequem, awer Dir musst unhuelen datt et ni geschitt.

Ech mengen et gëtt eng rapid Erhéijung vun Web-aktivéiert Apparater ginn, a mir kënnen dovun ausgoen, datt se Basis HTML a Formen ënnerstëtzen. Hutt Dir e Browser op Ärem Handy? Wäert Äre PalmPilot en Telefon hunn? Wäert Är Blackberry e méi groussen Ecran hunn? Kënnt Dir op den Internet vun Ärem Gameboy Zougang? Vun Ärer Auer? Ech wees net. An ech muss net erausfannen ob ech wetten datt alles um Server wäert sinn. Et ass just vill méi zouverlässeg all d'Gehir um Server ze hunn. .

2. Objektorientéiert programméiere

Ech mierken datt dëst eng kontrovers Ausso ass, awer ech denken net datt OOP sou wichteg ass. Ech mengen dat ass e passende Paradigma fir spezifesch Uwendungen déi spezifesch Datestrukture brauchen, wéi Fënstersystemer, Simulatioune, CAD Systemer. Mee ech verstinn net firwat et fir all Programmer gëeegent soll sinn.

Ech denken, datt d'Leit a grousse Firmen OOP gär hunn, zum Deel, well et vill Saache mécht, déi wéi Aarbecht ausgesinn. Wat selbstverständlech als eng Lëscht vun ganz Zuelen duergestallt ka ginn, kann elo als Klassesall duergestallt ginn mat all Zorte vu Steieren, Geschwëster.

Aner attraktiv Fonktioun vun OOP ass, datt Methoden Iech e puer vun den Effet vun éischt Klass Funktiounen ginn. Awer dëst ass keng Neiegkeet fir Lisp Programméierer. Wann Dir richteg éischtklasseg Funktiounen hutt, kënnt Dir se einfach op all Manéier benotzen, déi d'Aufgab op der Hand passt, anstatt alles an eng Kesselplat vu Klassen a Methoden ze drécken.

Ech mengen, wat dat fir Sproochgestaltung bedeit ass, datt Dir OOP net ze déif dran abeet. Vläicht ass d'Äntwert méi allgemeng, fundamental Saachen ze bidden, an d'Leit all Objektsystemer als Bibliothéiken ze designen.

3. Design vum Comité

Wann Är Sprooch vun engem Comité entworf ass, da sidd Dir gefaangen, an net nëmmen aus Grënn déi jidderee weess. Jidderee weess datt Comitée éischter lumpy, inkonsistent Sproochentwécklungen kreéieren. Awer ech mengen déi grouss Gefor ass datt se keng Risiken huelen. Wann eng Persoun zoustänneg ass, hëlt hien Risiken, déi de Comité ni géif zoustëmmen ze iwwerhuelen.

Muss Dir Risiken huelen fir eng gutt Sprooch ze kreéieren? Vill Leit kënnen de Verdacht hunn datt d'Sproochdesign ass wou Dir zimmlech no bei der traditioneller Wäisheet muss bleiwen. Ech wetten, datt dat net de Fall ass. An alles wat d'Leit maachen, ass d'Belounung proportional zum Risiko. Also firwat soll d'Sprooch Design anescht sinn?

Source: will.com

Setzt e Commentaire