Awk cum să faci bani, Chapter 1 : Awk

Introducere Pentru al doilea an consecutiv am avut awk cum să faci bani 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.

Un interviu cu Brian Kernighan

Iată aici textul interviului transcris după înregistrarea făcută cu ajutorul unui calculator echipat cu un microfon. Versiunea în limba engleză a strategie cc macd opțiuni binare 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 început bitcoin 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 awk cum să faci bani 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, în î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.

Chapter 1 : Awk

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? 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 ceea 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 awk cum să faci bani 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.

Invata PHP

Dar în ceea awk cum să faci bani 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 domeniul 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.

Mai sunt altele cu filozofii diferite si o cota mai mica Arch,Gentoo,etc….

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.

Idei pe care poți câștiga bani 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 o 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 awk cum să faci bani, nu am văzut awk cum să faci bani mai bun pînă în ziua de azi.

Să începem cu exemple simple

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ă opțiuni binare de comerț rock 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 creaţie admirabilă, care a trecut de testul scurgerii timpului extrem de 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.

lucrați pentru persoane cu dizabilități pe internet fără investiții tranzacționarea semnalelor de copiere a ofertelor

M:Am o întrebare despre cercetarea în limbaje de programare. E 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 Labs indicator de opțiuni binare cc un grup extrem de puternic de limbaje funcţionale şi un grup care foloseşte limbaje ad-hoc, mai pragmatice.

Jumătatea mea [+18]

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 de compilare, nu pare să fie adoptat pe scară largă.

opțiuni de tranzacționare pentru începători câștigurile din opțiunile binare de știri

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 schimb limbajele ca C sunt awk cum să faci bani 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 educat în alt fel aş fi mulţumit cu ML şi aş găsi C cam nesigur unsafepericulos şi nu prea expresiv.

strategie de tranzacționare specială pentru opțiuni binare ce se poate paria pentru a face bani

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 Bell 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 cel 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 awk cum să faci bani 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. 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. Şi probabil că sunt mai bun la a găsi şi a asculta pe cineva care are o idee bună, pentru ca apoi să lucrez cu acea persoană la dezvoltarea ideii decît la a găsi ideile eu însumi.

M:Dacă tot am vorbit de statul cu picioarele pe pămînt, lucrez la un proiect care dezvoltă nişte programe mari, unele din funcţii fiind modificate de mai mulţi autori, care schimbă fiecare stilul de aşezare în pagină după preferinţele proprii. Aţi publicat cîteva cărţi despre tehnici şi stil de programare; s-a potrivit întotdeauna stilul dumneavoastră cu al co-autorilor, sau aţi avut probleme în a reconcilia gusturile? K:[rîzînd] Asta e de asemenea o întrebare drăguţă. Cele mai multe din lucrurile astea au awk cum să faci bani mărunte, în parte pentru că coautorii mei sunt prin preajmă şi am crescut în acelaşi mediu cultural.

Tu cîte spaţii pui? Eu pun spaţii după cuvinte ca if, while şi for, dar Rob nu pune.

Am cîştigat bătălia aia, dar sunt alte bătălii pe care le-am pierdut, nu mai ţin minte exact care. Cu cît mai mulţi oameni lucrează la ceva, şi cu cît e programul mai mare, cu atît mai greu o să fie, şi de la un moment dat trebuie să stabileşti standarde pe care toată lumea le respectă şi metode mecanice ca de exemplu pretty-printer-e care te obligă să joci după reguli, pentru că altfel pierzi prea mult timp şi creşte probabilitatea să faci greşeli.

M:Aţi menţionat pretty-printer-ele; ce alte scule şi medii de programare folosiţi?

tranzacționare dormand ce să faci pentru a face bani pentru un pensionar

K:Cînd am de ales programez în Unix. Folosesc editorul de texte sam scris de Rob Pike; nu folosesc Emacs. Cînd nu pot folosi sam folosesc vi din motive istorice, şi sunt chiar foarte mulţumit de ed [rîzînd]; ştiu, ăsta a apărut înainte ca tu să te naşti. Şi e parţial un motiv istoric: îl ştiam pe Bill Joy cînd lucra la vi. Nu folosesc debugger-e sofisticate, folosesc instrucţiuni de tipărire inserate în cod; singurul lucru pentru care folosesc un debugger este să obţin o listă a procedurilor de pe stivă cînd un program moare în mod neaşteptat.

Cînd scriu cod pe Windows în mod normal folosesc sculele Microsoft de dezvoltare: ele ştiu exact unde sunt fişierele header şi alte fişiere importante, deci trebuie să le folosesc chiar dacă nu se potrivesc cu stilul meu preferat de lucru. De asemenea în Windows îmi instalez pachete de scule cum ar fi mks care oferă utilitarele tipice Unix şi programele standard cu care sunt obişnuit pentru a căuta, compara, şi aşa mai departe.

M:Voi schimba din nou subiectul. Cînd am venit în Statele Unite am fost extrem de surprins să descopăr că se face cercetare de foarte bună calitate, şi cercetare fundamentală -- adică cercetare care nu e în mod necesar direcţionată spre un produs comercial sau pentru a genera profituri -- nu doar în universităţi, ci şi în cîteva companii mari.

Figura 3: Logo-ul Bell Labs şi Lucent K:O să-ţi dau sloganul oficial, deşi cred că mult din el este în continuare adevărat. Cred că cercetarea a început pentru că oamenii şi-au dat seama că sunt felurite lucruri pe care nu ştiu cum să le facă dar pe care ar trebui să înveţe să le facă dacă vor să îmbunătăţească produsele sau serviciile pe care le vindeau. Desigur, în timpuri ancestrale serviciul de bază era cel telefonic; în urmă cu 30 sau 40 de ani tehnologia telefoniei a început să capete o din ce în ce mai puternică componentă informatică, şi asta a adus cercetarea în calculatoare aici.