Alan Kay, kreinto de OOP, pri evoluo, Lisp kaj OOP

Alan Kay, kreinto de OOP, pri evoluo, Lisp kaj OOP

Se vi neniam aŭdis pri Alan Kay, vi almenaŭ aŭdis liajn famajn citaĵojn. Ekzemple, ĉi tiu citaĵo de 1971:

La plej bona maniero antaŭdiri la estontecon estas elpensi ĝin.
La plej bona maniero antaŭdiri la estontecon estas elpensi ĝin.

Alan havas tre buntan karieron en komputiko. Li ricevis Kioto-premio и Premio Turing pro lia laboro pri la objekt-orientita programa paradigmo. Li estis unu el la pioniroj en la kampo de personaj komputiloj kaj grafikaj interfacoj, li evoluigis Malgranda parolado estas unu el la unuaj plej influaj programlingvoj de ĉiuj tempoj.

En nia Hexlete, precipe en babilante, la demando "kio estas OOP" kaj "kion vere volis diri Alan Kay" estas konstante levita. Ĉi tiu afiŝo enhavas interesajn citaĵojn de Alan pri la stato de moderna evoluo, OOP kaj la lingvo Lisp.

Pri programaro-disvolviĝo

Alan Kay opinias, ke la komputila revolucio ankoraŭ estas venonta (La Reala Komputila Revolucio Ankoraŭ Ne Okazis), kaj programaro evoluas en inversa proporcio al la Leĝo de Moore: aparataro pliboniĝas ĉiujare, sed softvaro fariĝas nenecese ŝvela:

la problemo estas malforta, malbone skaleblaj ideoj kaj iloj, maldiligento, manko de scio, ktp.

Bone priskribas ĉi tiun situacion mallonga ŝerco:

Kion Andy donas, Bill forprenas
Andy donis, Bill prenis

Andy Grove, Ĉefoficisto de Intel, kaj Bill Gates, tiam Ĉefoficisto de Mikrosofto.

Plibonigi la nunan evoluan staton estis la celo de la esplorprojekto PAŜOJ Al La Reinvento de Programado (pdf). La celo estas atingi "Leĝon de Moore" en esprimkapablo per "reduktado de la kvanto de bezonata kodo je 100, 1000, 10000 fojojn aŭ pli."

En lia okulmalferma raporto Programado kaj Skalado (vidbendo) Ĉi tiu temo estas diskutata pli detale. Laŭ Alan, softvara inĝenierado ekhaltis kaj fariĝas forgesita scienco, kiu ne povas daŭrigi kun aparataro kaj aliaj sciencoj kaj inĝenieraj disciplinoj. Grandaj projektoj fariĝis kodaj rubejoj kaj atingis punkton kie neniu nekapabla kompreni 100 milionojn da linioj de MS Vista aŭ MS Word-kodo. Sed fakte, devus esti ordo de grandeco malpli da kodo en tiaj projektoj.

Alan konsideras la Interreton, TCP/IP-protokolojn, LISP-interpretistojn, Nilo (Math DSL por Vektora Grafiko) kaj OMeta (OO PEG) (PDF) ekzemploj de eleganta programaro kun minimuma kodo.

Li nomas la Interreton (TCP/IP) unu el la malmultaj grandskalaj softvarprojektoj kiuj estis desegnitaj ĝuste, kaj ĝia nivelo de komplekseco estas en ekvilibro kun la nivelo de komplekseco (komplikaĵo kontraŭ komplekseco). Kun malpli ol 20 linioj de kodo, la projekto funkcias kiel vivanta, dinamika sistemo kapabla je subteno de miliardoj da nodoj, kaj neniam iris senkonekta ekde sia komenca lanĉo en septembro 1969. Ni simple ĉesis konsideri la Interreton kiel normala programaro projekto kreita de homoj:

Interreto estas tiel bone evoluinta, ke multaj homoj traktas ĝin kiel naturan rimedon, kiel la Pacifikon, prefere ol produkton de homa laboro. Kiam la lastan fojon ni vidis tian stabilan, klaran, seneraran teknologion? Kompare, la Reto estas sensencaĵo. La reto estis kreita de amatoroj.

Pri objekt-orientita programado

La unua afero, kiu interesis min, estis lia originala OOP vizio. Lia sperto en mikrobiologio ludis gravan rolon:

Mi pensis pri objektoj kiel biologiaj ĉeloj, kaj/aŭ individuaj komputiloj en reto, kiu povus komuniki nur per mesaĝoj.

kaj sperto en matematiko:

Mia sperto pri matematiko igis min kompreni ke ĉiu objekto povas havi plurajn algebrojn, ili povas esti kombinitaj en familiojn, kaj tio povas esti tre utila.

Ideoj por malfrua ligado kaj potencaj meta-trajtoj de LISPa:

La dua fazo komprenas LISPa kaj uzas tiun komprenon por krei pli facilajn, pli malgrandajn, pli potencajn strukturojn kaj pli postan ligadon.

Kaj baldaŭ Alan komencis subteni la ideon, ke dinamikaj lingvoj estas la estonteco de programaro-disvolviĝo (pdf). Aparte, facileco de ŝanĝo gravas por li:

Malfrua ligado permesas ideojn kiuj venis poste en la evoluprocezo esti integrigitaj en la projekton kun malpli fortostreĉo (kompare kun pli fruaj ligitaj sistemoj kiel C, C++, Java, ktp.)

Kaj la potencialo por ŝanĝoj sur la flugo kaj pli rapidaj ripetoj:

Unu el la ĉefaj ideoj estas, ke la sistemo devas daŭre funkcii dum testado, precipe dum ŝanĝoj estas faritaj. Eĉ gravaj ŝanĝoj devus esti laŭgradaj kaj daŭri ne pli ol divison de sekundo.

kiu mankas en statike tajpitaj lingvoj:

Se vi uzas fruajn ligajn lingvojn, kiel la plej multaj homoj faras, tiam vi enŝlosas vin en tion, kion vi jam skribis. Ne plu eblos facile reformuli ĝin.

Surprize, liaj pensoj pri OOP estis limigitaj al ĉi tio:

OOP por mi estas mesaĝoj, loka tenado kaj protekto, ŝtata kaŝado kaj malfrua ligado de ĉio. Ĉi tio povas esti farita en Smalltalk kaj en LISP.

Kaj nenio pri heredo. Ĉi tio ne estas la OOP kiun ni hodiaŭ konas:

Mi dezirus, ke mi uzis la terminon "objekto" por ĉi tiu temo antaŭ longe ĉar ĝi kaŭzas multajn homojn koncentriĝi pri la malpli granda el la ideoj.

La granda ideo, ke modernaj statike tajpitaj OO-lingvoj mankas:

La granda ideo estas "mesaĝoj"

Li kredas je fokuso sur mesaĝoj, loza kuplado, kaj modulinteragoj prefere ol sur la internaĵoj de objekto:

La ŝlosilo por krei bonajn skaleblajn sistemojn estas ellabori la komunikajn mekanismojn inter moduloj, kaj ne ellabori iliajn internajn trajtojn kaj konduton.

Statike tajpitaj lingvoj ŝajnas al li misa:

Mi ne estas kontraŭ tipoj, sed mi ne konas iun tipsistemon kiu ne kaŭzas doloron. Do mi ankoraŭ ŝatas dinamikan tajpadon.

Iuj popularaj lingvoj hodiaŭ uzas la mesaĝon de Smalltalk pasigante ideojn, malfruan ligadon, kaj neKomprenasantaŭenAlvoko в Objective-Cmetodo_mankas в Rubeno и neniuTiaMetodo en Guglo sageto.

Detruu ĉion kaj kreu ion pli bonan

Alan havas interesan teorion pri la evoluo de komputiko:

Ŝajnas al mi, ke ekzistas nur unu speco de komputiko, kaj tiu scienco estas kiel konstrui pontojn. Iu konstruas pontojn, kaj iu detruas ilin kaj kreas novajn teoriojn. Kaj ni devas daŭre konstrui pontojn.

Pri LISP

Alan Kay kredas Lisp

plej bona programlingvo de ĉiuj tempoj

Kaj ke ĉiu diplomiĝinto pri komputilscienco devus studi ĝin:

Plej multaj homoj studantaj gradojn en CS ne komprenas la gravecon de Lisp. Lisp estas la plej grava ideo en komputiko.

Pri la ĝusta etoso kaj kunteksto

Li ofte memoras la unikan atmosferon en Fotokopio PARC и Harpo, kie "vizio estas pli grava ol celoj" kaj "financado de homoj, ne projektoj."

Vidpunkto valoras 80 IQ-poentojn.

Alan Kay diras:

La ARPA/PARC-rakonto montras kiel kombinaĵo de vizio, modesta financado, la ĝusta kunteksto kaj procezo povas magie naskiĝi novajn teknologiojn, kiuj ne nur influas civilizacion sed ankaŭ kreas grandegan valoron por socio.

Kaj ĝi estas vera. Rigardu la imponan liston de inventoj de PARC, multaj el kiuj ludis tre gravan rolon en la evoluo de nia mondo. Ekzemple:

  • Laseraj presiloj
  • Objekt-Orientita Programado / Smalltalk
  • Personaj komputiloj
  • Ethernet / distribuita komputado
  • GUI / komputila muso / WYSIWYG

Kaj en Harpo kreita ARPANET, kiu iĝis la prapatro de la Interreto.

PS Alan Kay respondas demandojn de la Hacker News-komunumo.

fonto: www.habr.com

Aldoni komenton