Alan Kay, tagalikha ng OOP, tungkol sa pag-unlad, Lisp at OOP

Alan Kay, tagalikha ng OOP, tungkol sa pag-unlad, Lisp at OOP

Kung hindi mo pa narinig ang tungkol kay Alan Kay, narinig mo man lang ang kanyang mga sikat na quote. Halimbawa, ang quote na ito mula 1971:

Ang pinakamahusay na paraan upang mahulaan ang hinaharap ay ang pag-imbento nito.
Ang pinakamahusay na paraan upang mahulaan ang hinaharap ay ang pag-imbento nito.

Si Alan ay may napakakulay na karera sa computer science. Natanggap niya Kyoto Prize ΠΈ Turing Award para sa kanyang trabaho sa object-oriented programming paradigm. Isa siya sa mga pioneer sa larangan ng mga personal na computer at graphical interface, na binuo niya tahimik na usapan ay isa sa mga unang pinaka-maimpluwensyang programming language sa lahat ng panahon.

Sa aming Hexlete, lalo na sa chat, ang tanong na "ano ang OOP" at "ano ba talaga ang ibig sabihin ni Alan Kay" ay patuloy na itinataas. Ang post na ito ay naglalaman ng mga kagiliw-giliw na panipi mula kay Alan tungkol sa estado ng modernong pag-unlad, OOP at ang Lisp na wika.

Tungkol sa pagbuo ng software

Naniniwala si Alan Kay na darating pa ang computer revolution (Ang Tunay na Computer Revolution ay Hindi pa Nangyayari), at ang pagbuo ng software ay bubuo sa kabaligtaran na proporsyon sa Batas ni Moore: ang hardware ay bumubuti bawat taon, ngunit ang software ay nagiging hindi kinakailangang bloated:

mahina ang problema, mahinang nasusukat na mga ideya at kasangkapan, katamaran, kakulangan ng kaalaman, atbp.

Mahusay na naglalarawan sa sitwasyong ito maikling biro:

Kung ano ang ibinibigay ni Andy, inaalis ni Bill
Si Andy ang nagbigay, si Bill ang kumuha

Andy Grove, CEO ng Intel, at Bill Gates, pagkatapos ay CEO ng Microsoft.

Ang pagpapabuti ng kasalukuyang estado ng pag-unlad ay ang layunin ng proyekto ng pananaliksik MGA HAKBANG Tungo sa Muling Pag-imbento ng Programming (pdf). Ang layunin ay upang makamit ang "Moore's Law" sa pagpapahayag sa pamamagitan ng "pagbabawas ng halaga ng kinakailangang code ng 100, 1000, 10000 beses o higit pa."

Sa kanyang pagbukas ng mata na ulat Programming at Scaling (video) Ang paksang ito ay tinalakay nang mas detalyado. Ayon kay Alan, ang software engineering ay natigil at nagiging isang nakalimutang agham na hindi makakasabay sa hardware at iba pang agham at mga disiplina sa engineering. Ang malalaking proyekto ay naging code dump at umabot sa punto kung saan walang sinuman hindi maintindihan ang 100 milyong linya ng MS Vista o MS Word code. Ngunit sa katotohanan, dapat mayroong isang order ng magnitude na mas kaunting code sa mga naturang proyekto.

Isinasaalang-alang ni Alan ang Internet, TCP/IP protocol, LISP interpreter, Nile (Math DSL para sa Vector Graphics) at OMeta (OO PEG) (PDF) mga halimbawa ng eleganteng software na may kaunting code.

Tinatawag niya ang Internet (TCP/IP) na isa sa ilang malalaking proyekto ng software na idinisenyo nang tama, at ang antas ng pagiging kumplikado nito ay balanse sa antas ng pagiging kumplikado (complication vs. complexity). Sa mas kaunti sa 20 linya ng code, ang proyekto ay gumagana bilang isang buhay, dynamic na sistema na may kakayahang suportahan ang bilyun-bilyong node, at hindi kailanman naging offline mula noong unang paglunsad nito noong Setyembre 1969. Itinigil lang namin ang pagsasaalang-alang sa Internet bilang isang normal na proyekto ng software na ginawa ng mga tao:

Napakahusay ng pagkakabuo ng Internet kaya tinatrato ito ng maraming tao bilang isang likas na yaman, tulad ng Karagatang Pasipiko, sa halip na isang produkto ng paggawa ng tao. Kailan ang huling pagkakataon na nakakita kami ng ganoong matatag, malinaw, walang error na teknolohiya? Sa paghahambing, ang Web ay walang kapararakan. Ang web ay nilikha ng mga baguhan.

Tungkol sa object-oriented programming

Ang unang bagay na interesado sa akin ay sa kanya orihinal OOP paningin. Ang kanyang karanasan sa microbiology ay may mahalagang papel:

Naisip ko na ang mga bagay ay parang mga biological cell, at/o mga indibidwal na computer sa isang network na maaari lamang makipag-usap sa pamamagitan ng mga mensahe.

at karanasan sa matematika:

Napagtanto ko ng aking karanasan sa matematika na ang bawat bagay ay maaaring magkaroon ng maraming algebra, maaari silang pagsamahin sa mga pamilya, at ito ay maaaring maging lubhang kapaki-pakinabang.

Mga ideya para sa late binding at makapangyarihang meta-feature ng LISPa:

Ang ikalawang yugto ay ang pag-unawa sa LISPa at paggamit ng pag-unawang iyon upang lumikha ng mas madali, mas maliit, mas makapangyarihang mga istruktura at mamaya na nagbubuklod.

At sa lalong madaling panahon nagsimulang suportahan ni Alan ang ideya na ang mga dynamic na wika ay kinabukasan ng software development (pdf). Sa partikular, ang kadalian ng pagbabago ay mahalaga sa kanya:

Ang late binding ay nagbibigay-daan sa mga ideya na lumabas sa susunod na proseso sa proseso ng pagbuo na maisama sa proyekto na may kaunting pagsisikap (kumpara sa mga naunang nakagapos na system tulad ng C, C++, Java, atbp.)

At ang potensyal para sa mga pagbabago sa mabilisang at mas mabilis na mga pag-ulit:

Ang isa sa mga pangunahing ideya ay ang sistema ay dapat na patuloy na gumana sa panahon ng pagsubok, lalo na habang ang mga pagbabago ay ginagawa. Kahit na ang mga malalaking pagbabago ay dapat na unti-unti at tumagal nang hindi hihigit sa isang segundo.

na nawawala sa statically typed na mga wika:

Kung gumagamit ka ng maagang-binding na mga wika, tulad ng ginagawa ng karamihan sa mga tao, pagkatapos ay ikulong mo ang iyong sarili sa kung ano ang naisulat mo na. Hindi na posible na i-reformulate ito nang madali.

Nakakagulat, ang kanyang mga iniisip tungkol sa OOP ay limitado dito:

Ang OOP para sa akin ay mga mensahe, lokal na hold at protektahan, pagtatago ng estado at huli na pagsasali ng lahat. Magagawa ito sa Smalltalk at sa LISP.

At wala tungkol sa mana. Hindi ito ang OOP na alam natin ngayon:

Sana matagal ko nang ginamit ang terminong "object" para sa paksang ito dahil nagiging sanhi ito ng maraming tao na tumuon sa mas maliit sa mga ideya.

Ang malaking ideya na kulang sa modernong statically typed OO na mga wika:

Ang malaking ideya ay "mga mensahe"

Naniniwala siya sa pagtutok sa mga mensahe, maluwag na pagkakabit, at mga pakikipag-ugnayan ng module sa halip na sa mga panloob ng isang bagay:

Ang susi sa paglikha ng magagandang scalable system ay ang paggawa ng mga mekanismo ng komunikasyon sa pagitan ng mga module, at hindi pag-aayos ng kanilang mga panloob na katangian at pag-uugali.

Ang mga wikang statically typed ay tila sa kanya may sira:

Hindi ako laban sa mga uri, ngunit wala akong alam na uri ng sistema na hindi nagdudulot ng sakit. Kaya gusto ko pa rin ang dynamic na pag-type.

Ang ilang mga sikat na wika ngayon ay gumagamit ng mga ideya sa pagpasa ng mensahe ng Smalltalk, late binding, at hindi NaiintindihanforwardInvocation Π² Layunin-Cmethod_missing Π² Mapula ΠΈ walangSuchMethod sa Google Sumibad.

Wasakin ang lahat at lumikha ng mas mahusay

Si Alan ay may isang kawili-wiling teorya tungkol sa pag-unlad ng agham ng computer:

Para sa akin ay may isang uri lamang ng computer science, at ang agham ay parang paggawa ng mga tulay. May gumagawa ng mga tulay, at may sumisira sa kanila at gumagawa ng mga bagong teorya. At kailangan nating patuloy na magtayo ng mga tulay.

Tungkol sa LISP

Naniniwala si Alan Kay kay Lisp

pinakamahusay na programming language sa lahat ng oras

At na dapat pag-aralan ito ng bawat nagtapos sa computer science:

Karamihan sa mga taong naghahabol ng mga degree sa CS ay hindi naiintindihan ang kahalagahan ng Lisp. Lisp ay ang pinakamahalagang ideya sa computer science.

Tungkol sa tamang kapaligiran at konteksto

Madalas niyang naaalala ang kakaibang kapaligiran sa Xerox PARK ΠΈ ARPA, kung saan "mas mahalaga ang pananaw kaysa sa mga layunin" at "pagpopondo sa mga tao, hindi mga proyekto."

Ang punto ng view ay nagkakahalaga ng 80 IQ points.

sabi ni Alan Kay:

Ang kuwento ng ARPA/PARC ay nagpapakita kung paano ang kumbinasyon ng vision, katamtamang pagpopondo, ang tamang konteksto at proseso ay maaaring magsilang ng mga bagong teknolohiya na hindi lamang nakakaapekto sa sibilisasyon ngunit lumikha din ng napakalaking halaga para sa lipunan.

At ito ay totoo. Tingnan ang kahanga-hangang listahan ng mga imbensyon ng PARC, marami sa mga ito ay gumanap ng napakahalagang papel sa pag-unlad ng ating mundo. Halimbawa:

  • Mga laser printer
  • Object-Oriented Programming / Smalltalk
  • Mga personal na computer
  • Ethernet / distributed computing
  • GUI / computer mouse / WYSIWYG

At sa ARPA nilikha ARPANET, na naging ninuno ng Internet.

PS Sinasagot ni Alan Kay ang mga tanong mula sa komunidad ng Hacker News.

Pinagmulan: www.habr.com

Magdagdag ng komento