Alan Kay, krijues i OOP, rreth zhvillimit, Lisp dhe OOP

Alan Kay, krijues i OOP, rreth zhvillimit, Lisp dhe OOP

Nëse nuk keni dëgjuar kurrë për Alan Kay, të paktën keni dëgjuar thëniet e tij të famshme. Për shembull, ky citim nga viti 1971:

Mënyra më e mirë për të parashikuar të ardhmen është ta shpikni atë.
Mënyra më e mirë për të parashikuar të ardhmen është ta shpikni atë.

Alan ka një karrierë shumë të gjallë në shkencat kompjuterike. Ai mori Çmimin e Kiotos и Çmimi Turing për punën e tij në paradigmën e programimit të orientuar nga objekti. Ai ishte një nga pionierët në fushën e kompjuterëve personalë dhe ndërfaqeve grafike, ai zhvilloi Muhabet është një nga gjuhët e para më me ndikim të programimit të të gjitha kohërave.

Në tonë Hexlete, vecanerisht ne bisedoj, pyetja "çfarë është OOP" dhe "çfarë do të thoshte në të vërtetë Alan Kay" ngrihet vazhdimisht. Ky postim përmban citate interesante nga Alan për gjendjen e zhvillimit modern, OOP dhe gjuhën Lisp.

Rreth zhvillimit të softuerit

Alan Kay beson se revolucioni kompjuterik nuk ka ardhur ende (Revolucioni i vërtetë kompjuterik nuk ka ndodhur ende), dhe zhvillimi i softuerit zhvillohet në përpjesëtim të zhdrejtë me Ligjin e Moore: hardueri përmirësohet çdo vit, por softueri bëhet i fryrë në mënyrë të panevojshme:

problemi janë idetë dhe mjetet e dobëta, të shkallëzuara dobët, dembelizmi, mungesa e njohurive, etj.

E përshkruan mirë këtë situatë shaka e shkurtër:

Atë që jep Andi, Billi ia merr
Andi dha, Bill mori

Andy Grove, CEO i Intel, dhe Bill Gates, atëherë CEO i Microsoft.

Përmirësimi i gjendjes aktuale të zhvillimit ishte qëllimi i projektit kërkimor HAPAT Drejt Rishpikjes së Programimit (pdf). Qëllimi është të arrihet "Ligji i Moore" në ekspresivitet duke "reduktuar sasinë e kodit të kërkuar me 100, 1000, 10000 herë ose më shumë."

Në raportin e tij hapës sysh Programimi dhe shkallëzimi (video) Kjo temë diskutohet më në detaje. Sipas Alan, inxhinieria e softuerit ka ngecur dhe po bëhet një shkencë e harruar që nuk mund të vazhdojë me harduerin dhe shkencat e tjera dhe disiplinat inxhinierike. Projektet e mëdha janë shndërruar në hale kodesh dhe kanë arritur në një pikë ku никто në pamundësi për të kuptuar 100 milionë rreshta të kodit MS Vista ose MS Word. Por në realitet, duhet të ketë një rend të madhësisë më pak kod në projekte të tilla.

Alan merr parasysh internetin, protokollet TCP/IP, interpretuesit LISP, Nile (DSL matematike për grafikë vektoriale) dhe OMeta (OO PEG) (PDF) shembuj të softuerit elegant me kod minimal.

Ai e quan internetin (TCP/IP) një nga projektet e pakta softuerike në shkallë të gjerë që është projektuar në mënyrë korrekte dhe niveli i kompleksitetit të tij është në ekuilibër me nivelin e kompleksitetit (ndërlikim kundrejt kompleksitetit). Me më pak se 20 rreshta kodi, projekti funksionon si një sistem i gjallë, dinamik i aftë për të mbështetur miliarda nyje dhe nuk ka dalë kurrë jashtë linje që nga fillimi i tij në shtator 1969. Ne thjesht ndaluam së konsideruari internetin si një projekt normal softuerësh të krijuar nga njerëzit:

Interneti është aq i zhvilluar saqë shumë njerëz e trajtojnë atë si një burim natyror, si Oqeani Paqësor, dhe jo si produkt i punës njerëzore. Kur ishte hera e fundit që pamë një teknologji kaq të qëndrueshme, të qartë dhe pa gabime? Për krahasim, Web-i është i pakuptimtë. Rrjeti u krijua nga amatorë.

Rreth programimit të orientuar drejt objektit

Gjëja e parë që më interesoi ishte e tij origjinale Vizioni OOP. Përvoja e tij në mikrobiologji luajti një rol të rëndësishëm:

Mendova për objektet si qeliza biologjike, dhe/ose kompjuterë individualë në një rrjet që mund të komunikonin vetëm përmes mesazheve.

dhe përvojë në matematikë:

Përvoja ime në matematikë më bëri të kuptoj se çdo objekt mund të ketë disa algjebra, ato mund të kombinohen në familje dhe kjo mund të jetë shumë e dobishme.

Ide për lidhje të vonshme dhe meta-veçori të fuqishme të LISPA:

Faza e dytë është kuptimi i LISPA-s dhe përdorimi i këtij kuptimi për të krijuar struktura më të lehta, më të vogla, më të fuqishme dhe më vonë të detyrueshme.

Dhe së shpejti Alan filloi të mbështeste idenë se gjuhët dinamike janë e ardhmja e zhvillimit të softuerit (pdf). Në veçanti, lehtësia e ndryshimit është e rëndësishme për të:

Lidhja e vonshme lejon që idetë që erdhën më vonë në procesin e zhvillimit të përfshihen në projekt me më pak përpjekje (krahasuar me sistemet e mëparshme të lidhura si C, C++, Java, etj.)

Dhe potenciali për ndryshime në lëvizje dhe përsëritje më të shpejta:

Një nga idetë kryesore është që sistemi duhet të vazhdojë të funksionojë gjatë testimit, veçanërisht gjatë kohës që po bëhen ndryshime. Edhe ndryshimet e mëdha duhet të jenë graduale dhe të zgjasin jo më shumë se një pjesë e sekondës.

e cila mungon në gjuhët e shtypura në mënyrë statike:

Nëse përdorni gjuhë të hershme lidhëse, siç bëjnë shumica e njerëzve, atëherë mbylleni në atë që keni shkruar tashmë. Nuk do të jetë më e mundur të riformulohet lehtë.

Çuditërisht, mendimet e tij për OOP ishin të kufizuara në këtë:

OOP për mua janë mesazhe, mbajtje dhe mbrojtje lokale, fshehje e shtetit dhe lidhje e vonë e gjithçkaje. Kjo mund të bëhet në Smalltalk dhe në LISP.

Dhe asgjë për trashëgiminë. Ky nuk është OOP që ne njohim sot:

Do të doja të kisha përdorur termin "objekt" për këtë temë shumë kohë më parë, sepse kjo bën që shumë njerëz të fokusohen në idetë më të vogla.

Ideja e madhe që gjuhëve moderne OO të shtypura statike u mungon:

Ideja e madhe është "mesazhet"

Ai beson në fokusimin në mesazhe, lidhje të lirshme dhe ndërveprime të moduleve sesa në brendësinë e një objekti:

Çelësi për krijimin e sistemeve të mira të shkallëzueshme është të përpunohen mekanizmat e komunikimit ndërmjet moduleve dhe të mos përpunohen vetitë dhe sjelljet e tyre të brendshme.

Gjuhët e shtypura në mënyrë statike i duken atij me të meta:

Nuk jam kunder tipave, por nuk njoh ndonje lloj sistemi qe nuk shkakton dhimbje. Kështu që më pëlqen ende të shkruarit dinamik.

Disa gjuhë të njohura sot përdorin idetë e transmetimit të mesazhit të Smalltalk, lidhjen e vonë dhe Nuk Kuptonthirrje përpara в Objektiv-Cmetoda_mungon в rubin и joMetodë e tillë në Google shigjetë.

Shkatërroni gjithçka dhe krijoni diçka më të mirë

Alan ka një teori interesante në lidhje me zhvillimin e shkencës kompjuterike:

Më duket se ekziston vetëm një lloj i shkencës kompjuterike dhe se shkenca është si ndërtimi i urave. Dikush ndërton ura, dhe dikush i shkatërron ato dhe krijon teori të reja. Dhe ne duhet të vazhdojmë të ndërtojmë ura.

Rreth LISP

Alan Kay beson Lisp

gjuha më e mirë programuese e të gjitha kohërave

Dhe që çdo i diplomuar në shkenca kompjuterike duhet ta studiojë atë:

Shumica e njerëzve që ndjekin diploma në CS nuk e kuptojnë rëndësinë e Lisp. Lisp është ideja më e rëndësishme në shkencën kompjuterike.

Rreth atmosferës dhe kontekstit të duhur

Ai shpesh kujton atmosferën unike në të Xerox PARK и ARPA, ku "vizioni është më i rëndësishëm se qëllimet" dhe "financimi i njerëzve, jo projektet".

Pikëpamja vlen 80 pikë IQ.

Alan Kay thotë:

Historia ARPA/PARC tregon se si një kombinim i vizionit, financimit modest, kontekstit dhe procesit të duhur mund të lindë në mënyrë magjike teknologji të reja që jo vetëm ndikojnë në qytetërim, por gjithashtu krijojnë vlera të mëdha për shoqërinë.

Dhe është e vërtetë. Hidhini një sy listës mbresëlënëse të shpikjeve të PARC, shumë prej të cilave luajtën një rol shumë të rëndësishëm në zhvillimin e botës sonë. Për shembull:

  • Printera lazer
  • Programim i orientuar nga objekti / Smalltalk
  • Kompjuterët personalë
  • Ethernet / informatikë e shpërndarë
  • GUI / miu kompjuterik / WYSIWYG

Dhe në ARPA krijuar ARPANET, i cili u bë paraardhësi i Internetit.

PS Alan Kay u përgjigjet pyetjeve nga komuniteti Hacker News.

Burimi: www.habr.com

Shto një koment