Awk cum să faci bani

Introducere Pentru al doilea an consecutiv am avut şansa de a obţine o slujbă de vară la laboratoare Bell Bell Labs ale companiei Lucent. Aceste laboratoare de cercetare sunt printre cele mai prestigioase din lume, numărînd nu mai puţin de 11 premii Nobel. Schawlow, şi Charles H. Anul acesta mi-am luat inima în dinţi şi am solicitat un interviu domnului Brian Kernighan. Iată aici textul interviului transcris după înregistrarea făcută cu ajutorul unui calculator echipat cu un awk cum să faci bani.
Versiunea în limba engleză a interviului va fi disponibilă din pagina mea de web, pentru a demonstra că de fapt nu am inventat mare lucru. M:Care e modul corect în care se pronunţă numele dumneavoastră? Am auzit că nu este chiar cum ne-am astepta.
K:Se pronunţă Kărnihăn. Figura 1: Brian Kernighan M:Aţi ales să lucraţi în informatică într-o perioadă în care aceasta nu era cea mai evidentă alegere pentru o carieră. Ce ne puteţi spune despre cum aţi făcut această alegere şi ce gîndiţi retroactiv despre această decizie? K:E adevărat că am început să lucrez cu calculatoarele, probabil pe la mijlocul anilor şaizeci, cînd lucrurile erau destul de la început, şi am făcut-o din accident.
Cred că am văzut primul meu calculator înera un IBM destul de vechi; nu am început programarea serioasă decît prin cînd eram în student în ultimul an.
Cînd am mers la studii postuniversitare exista un program de informatică în departamentul de inginerie electrică de la universitatea Princeton; asta era destul de tipic pentru multe alte locuri: nu exista un domeniu academic separat al informaticii, ci doar o parte a unui departament care avea un calculator sau ceva oameni interesaţi de calcule, aşa că am intrat şi eu în domeniu, cost simbolic întregime accidental.
Dar a fost un accident norocos, pentru că în mod evident au fost o mulţime de întîmplări interesante în domeniu. M:Aţi lucrat în acest domeniu multă vreme, şi aţi fost un jucător important în evoluţia informaticii.
Unele din lucrările dumneavoastră au influenţat profund domeniul. Puteţi arăta unele dintre lucrurile pe care le consideraţi avansuri fundamentale în informatică în ultimii 30 de ani; ce schimbări de paradigmă crede,ti că s-au petrecut?
Să începem cu exemple simple
K:Cred că a fost un număr mare de schimbări, nu neapărat în informatică [ca ştiinţă], ci în calculatoare în general. Evident, faptul că hardware-ul a devenit enorm de rapid: legea lui Moore, deşi e o schimbare cantitativă, cînd este aplicată ca o creştere exponenţială timp de 30 de ani are un impact enorm; unele părţi ale acestei schimbări depind de informatică, dar nu toate.

Pe de altă parte, lucrurile cu care sunt mai familiar, şi în care sunt mai interesat tehnologic, este folosirea feluritelor limbaje de programare în aşa fel încît să fim mai capabili să transmitem maşinilor awk cum să faci bani ce vrem să facem. Creşterea în domeniul limbajelor de programare, a tehnologiilor care ne permit să înţelegem cum să exprimăm comenzile pentru maşini, a avut de asemenea un impact enorm.
Desigur, pe măsură ce maşinile deveneau mai puternice îţi puteai permite să aloci mai multe resurse pentru a folosi limbaje care nu ar fi fost eficiente cu 25 sau 30 de ani în urmă, dar care acum sunt perfect utilizabile.
Alte schimbări importante sunt îmbunătăţirile algoritmice, teoria NP-completitudinii, care ne permite să gîndim despre ceea ce este greu şi ceea ce este uşor de calculat.
Efectuarea de perechi de cuvinte bazate pe o coloană
Dar în ceea ce mă priveşte lucrurile pe care le găsesc cele mai interesante sunt dezvoltările în domeniul limbajelor de programare. M:De-a lungul timpului aţi lucrat în foarte multe domenii: algoritmi pentru grafuri, software engineering, scule software, tipografie digitală, dar cea mai mare parte din cercetarea dumneavoastră este în limbaje de programare. Care sunt interesele dumneavoastră curente în cercetare?
K:[rîzînd] E interesant, ceea ce am făcut în ultimele zile este să meşteresc hack-uiesc la probabil cele mai vechi rădăcini ale mele în awk cum să faci bani prezentării computerizate de documente, sau tipografie digitală, dacă preferi. Am luat eqn, care e un program pe care Lorinda Cherry şi cu mine l-am scris înşi îl convertesc pentru a produce rezultate în XML sau HTML, în aşa fel încît să putem pune mai uşor formule matematice în pagini de web.
Mai multe persoane au încercat să facă acest lucru în felurite moduri, dar nici unul dintre ele nu pare să meargă prea bine, sau să fie terminat. Noi avem nevoie de aşa ceva, aşa că eu lucrez la un program C pe care l-am scris literal cu mai mult de 25 de ani în urmă. E un program C foarte mic, şi mă distrează foarte tare să încerc să-l transform. Ăsta e unul din lucrurile pe care le fac, un lucru mărunt, dar e amuzant să te întorci şi să faci ceva la care te-ai ostenit cu atîta vreme în urmă.
AMPL este un limbaj folosit pentru a specifica probleme de optimizare, ca de exemplu pentru a descrie probleme de programare lineară, dar nu numai.
- Mai sunt altele cu filozofii diferite si o cota mai mica Arch,Gentoo,etc….
- Mirosul de tutun îşi făcea simţită prezenţa în materialul tricoului uzat,din care nu mă schimbasem.
- Un interviu cu Brian Kernighan
- Cum se scrie scripturi în Linux.
- Лиланд Фонтейн решил, что с него довольно этого зрелища.
- Именно поэтому я и послал за ним Дэвида.
- ВАС МОЖЕТ СПАСТИ ТОЛЬКО ПРАВДА ВВЕДИТЕ КЛЮЧ______ Джабба не дождался ответа.
- Acord de opțiune de pornire
Încercăm să finisăm produsul pentru a putea fi folosit în procese mai complicate: de exemplu am învelit sistemul cu o interfaţă orientată pe obiecte ca să poată fi îngropat în alte programe sau folosit ca un obiect CORBA sau COM.
Astea sunt cele două lucruri de care mă ocup acum. M:Dacă tot am vorbit despre limbaje de programare, se mai compilează vechiul program eqn?
K:Da, se mai compilează. Probabil că nu l-am mai compilat de cinci sau zece ani, şi s-a compilat fără nici awk cum să faci bani problemă. Ceea ce fac acum este mai ales să tai din el, pentru că limbajul de ieşire este mult mai simplu decît înainte. M:Cei mai mulţi oameni vă cunosc probabil din cauza cărţii de C, aşa că o să vă pun două întrebări legate de C. Limbajul C a avut o influenţă enormă; care credeţi că sunt trăsăturile sale cele mai valoroase? Figura 2: Cartea de C K:C are cel mai bun echilibru pe care l-am văzut vreodată între putere şi expresivitate.
Poţi face aproape orice vrei programînd într-un fel destul de evident şi ai întotdeauna un model mental bun a ceea ce se va întîmpla pe calculator; poţi prezice destul bine cît de repede o să meargă, înţelegi ce se petrece şi îţi dă libertate totală să faci ce vrei. C nu te constrînge în vreun fel, nu te obligă să foloseşti un anumit stil de programare; pe de altă parte nu îţi oferă o grămadă de facilităţi, nu are o bibliotecă gigantică, dar în ceea ce priveşte realizarea a ceva fără prea mult efort, nu am văzut nimic mai bun pînă în ziua de azi.
Există alte limbaje reuşite pentru aplicaţii specifice, dar dacă ar fi să eşuez pe o insulă pustie cu un singur compilator, aş vrea un compilator de C.
M:De fapt C este şi limbajul meu de programare favorit, şi pe care l-am folosit pentru majoritatea programelor mele. Dar de cînd am început să scriu compilatoare pentru C, trebuie să mărturisesc că limbajul mi se pare mai puţin plăcut: unele optimizări sunt foarte greu de făcut. Care sunt din punctul dumneavoastră de vedere trăsăturile negative ale limbajului?
K:Nu pot comenta despre trăsăturile negative; îţi reamintesc că C este în întregime creaţia lui Dennis Ritchie.

Eu am contribuit doar la popularizarea sa, şi în particular nu pot spune ce e greu şi ce e uşor de compilat în C. Sunt cîteva lucruri trivial greşite în C: instrucţiunea switch putea fi mai bine proiectată, precedenţa unora dintre operatori este greşită, dar astea sunt lucruri mărunte şi lumea a învăţat să le evite.
Cred că adevărata problemă a limbajului C este că nu-ţi pune la dispoziţie destule mecanisme pentru a scrie programe cu adevărat mari, pentru a crea ziduri de protecţie în interiorul programelor, care izolează feluritele bucăţi. Nu se pune problema că nu poţi face astfel de lucruri, ca nu poţi simula programare orientată pe obiecte sau alte metodologii de programare în C, poţi să faci toate astea, dar compilatorul şi limbajul nu te vor ajuta.

Dar dacă luăm în considerare că C are aproape 30 de ani şi că a fost creat cînd calculatoarele erau minuscule în comparaţie cu ceea ce avem acum, cred că e o mm pe opțiuni binare admirabilă, care a trecut de testul scurgerii timpului extrem mici opțiuni de depozit bine.
Nu sunt multe lucruri pe care le-aş schimba în C. Cu alte cuvinte, cea mai mare parte a C-ului este folositoare indiferent de programul pe care îl scrii. M:Am o întrebare despre cercetarea în limbaje de programare. Awk cum să faci bani interesant de exemplu că Java este foarte mult ridicat în slăvi; comunitatea programatorilor se împarte între cei care laudă meritele şi cei care critică lipsurile limbajului.
Java într-adevăr a fost înzestrat cu nişte trăsături care derivă din cercetare cum ar fi colectorul de deşeuri -- garbage collectiondar tot cercetătorii arată oricui vrea să-i asculte erori de proiectare cum ar fi vectorii, care sunt covarianţi. În locul acestor limbaje academice apar din senin limbaje ad-hoc, cum ar fi Perl şi Python.
Unde vedeţi buba, ce nu funcţionează cum trebuie? K:Asta este din păcate o întrebare foarte bună, şi există o oarecare rivalitate aici la Bell Avantajele opțiunilor reale între un grup awk cum să faci bani de puternic de limbaje funcţionale şi un grup care foloseşte limbaje ad-hoc, mai pragmatice.
Cum sa plantezi un lamai 🍋 - Sfaturi si trucuri -
Sincer să fiu, nu ştiu de ce limbajele funcţionale nu au succes. De exemplu ML, care este probabil cea mai bună combinaţie, cea care ar trebui să domine: chiar dacă e un limbaj extrem de atent proiectat, la care au contribuit mult timp o mulţime de cercetători, care a dat naştere la o cantitate enormă de tehnologii awk cum să faci bani compilare, nu pare să fie adoptat pe scară largă.
Simplificînd extrem, şi probabil supărînd pe unii dintre prietenii mei, aparent singurul lucru care se face în ML sunt compilatoare de ML [rîde]. În mod intenţionat exagerez, dar de fapt lucrurile cam aşa stau, şi nu ştiu exact de ce.

Din punctul meu de vedere unul dintre motivele pentru care ML şi alte limbaje funcţionale nu au mai mult succes este pentru că necesită o oarecare abilitate matematică şi o gîndire mai abstractă, pe care o grămadă de lume, în care mă includ şi eu, nu o posedă. În awk cum să faci bani limbajele ca C sunt extrem de operaţionale şi poţi vedea foarte clar cum fiecare bucăţică dintr-un program se translatează direct într-o acţiune a calculatorului.

Poate dacă aş fi fost crescut şi awk cum să faci bani awk cum să faci bani alt fel aş fi mulţumit cu ML şi aş găsi C cam nesigur unsafepericulos şi nu prea expresiv. Dar impresia mea este că limbajele funcţionale au fost create de o comunitate de oameni cu puternice înclinaţii matematice şi că au nevoie de un raţionament matematic substanţial, şi ca atare nu vor fi pe placul omului de rînd.
M:Deci sugestia dumneavoastră ar fi ca cercetătorii să coboare nivelul limbajului, pentru a-i promova calităţile pozitive? K:Nu am răspuns de fapt la partea a doua a întrebării tale, de ce cercetarea în limbaje nu a avut mai mult efect.
Cred că de fapt cercetarea a avut un efect, în domenii ca tehnologia parserelor, generarea de cod, indiferent de limbajul în chestiune. Cercetarea a produs scule de mare succes pentru a manipula limbaje, dar a avut mai puţin efect în proiectarea limbajelor însele. Una dintre ele este că încearcă foarte tare să rămînă compatibil cu C: e compatibil la nivelul fişierelor obiect, şi e aproape compatibil la nivelul surselor.
Din cauza asta sunt o grămadă de lucruri urîte în limbaj, probleme sintactice ciudate, comportări semantice bizare. Ori asta nu e de loc adevărat în cazul ML, care a fost proiectat în acelaşi timp şi în mare parte în acelaşi loc [tot la Strategie pentru opțiuni binare în funcție de tendință Labs], dar care a atacat problema într-un mod foarte radical.
M:Deci sunteţi avocatul evoluţiei incrementale. Văd ca sunteţi autorul a awk cum să faci bani puţin opt cărţi, toate din ele scrise în colaborare.
Deduc de aici că stilul dumneavoastră de cercetare este colaborativ? K:Dacă ai de gînd să scrii o carte, e al naibii de uşor să mai găseşti pe altul să facă o parte din treabă [rîde]. Am fost foarte norocos să am colaboratori excelenţi la toate cărţile mele, şi în sensul ăsta a fost foarte uşor.
Jumătatea mea [+18]
E mult mai simplu de lucrat la o chestie mare, cum e o carte, şi care îţi ia şase luni sau un an, dacă ai pe cineva care lucrează cu tine. Asta te ţine şi cu picioarele pe pămînt: dacă o iei razna prea tare ai pe cineva care poate să te cîrmească la loc pe direcţia cea bună. Cred că tot ce am făcut am făcut cu altcineva: e mai amuzant să lucrezi cu alţi oameni decît să te încui în birou şi să te chinui de unul singur.