Paul Ford What Is Code

Paul Ford Wat is code die programmeren in haarWAT IS

Software is al sinds de jaren 1940 geweest. Dat betekent dat mensen zijn faken hun weg door middel van bijeenkomsten over software en de code die het bouwt, al generaties lang. Nu software leeft in onze zakken, loopt onze auto’s en huizen, en domineert ons wakende leven, onwetendheid is niet langer aanvaardbaar. De wereld behoort tot de mensen die code. Degenen die niet begrijpen zal worden achtergelaten.

Dit probleem bestaat uit een enkel verhaal gewijd aan ontraadselen code en de cultuur van de mensen die het maken. Er is een aantal technische taal samen met een paar vrij basic wiskundige concepten. Er zijn ook tal van vaste grappen en blijvende inzichten. Het kan enkele uren duren om te lezen, maar dat is een kleine prijs om te betalen voor het toevoegen van tientallen jaren om je carrière.


1 De man in het Taupe Blazer

Je bent een goed opgeleide, succesvolle persoon die in staat van het abstracte denken. Een VP doet een SVP’s baan. Uw kantoor, ingericht met fatsoenlijke meubilair en een gezonde hoeveelheid natuurlijk licht gefilterd door middel van verticale jaloezieën, in verhouding staat tot bijna twee decennia van de dienstverlening aan het ambacht van het management.

Daar gaan we weer. Aan de andere kant van je (goed georganiseerde) desk zit deze man in zijn mid-jaren ’30 met een computer in zijn schoot. Hij’is het dragen van een taupe blazer. Hij’s komen om de uitgaven grote sommen te bespreken immateriële abstracties op een te creëren “website re-architectuur project.” Hij heeft geld nodig, steun voor zijn team, nieuwe medewerkers, externe bronnen. Het’s voorbestemd dat je’ll deze dingen aan hem te geven, omdat de CEO afgetekend op initiatief—en toch moet het allemaal gaan peervormig, bent u verantwoordelijk zijn. Coders zijn waanzinnig duur, en projecten die beginnen met oncomfortabel grote budgetten hebben een lelijke neiging om te groeien vanaf daar. U moet begrijpen waar de uren zal gaan.

Fotograaf: Corey Olsen voor Bloomberg Businessweek

Hij zegt: “Wij’opnieuw in principe op de grens met WordPress.”

Wie draagt ​​een taupe blazer?

De CTO werd zes maanden geleden ontslagen. Dat CTO heeft drie kinderen op de universiteit en een snor. Het was een slechte exit. De man in de taupe blazer (TMitTB) werkt voor de nieuwe CTO. Ze komt uit Adobe en heeft kort haar en geen snor.

Hier is wat je’ve verteld: Alle computer code die de website draaiende houdt moet worden vervangen. Op een gegeven moment, het was zeer waardevol en hield het bedrijf lopen, maar de nieuwe CTO denkt dat het’s afval. Zij vertelt je de oude code is spaghetti en uw systemen worden overbelasting als gevolg. Dat de diensten van derden die u gebruikt, en betalen voor de maandelijkse, zijn oud en kapot. Uw concurrent heeft een geanimeerde winkelwagentje dat drijft over de bovenkant van het scherm bij de kassa. Dat kar onthoudt alles klanten ooit heb gekocht en genereert facturen on demand. Uw winkelwagentje bevat geen geheugen at all.

Verkopers stomp rond uw kantoor, zuchtend als theater studenten, vertellen hoe beschaamd ze zijn door de site. Niets werkt direct op mobiel. Bestellingen worden snijden halverwege af. Mensen worden afgemeld zonder waarschuwing. Iets moet gedaan worden.

Dat is waarom TMitTB is hier.

Wie’is hij eigenlijk? Webmaster? HET? Nee hij’s een “Scrum Master.”

“Mijn mensen zijn verdeeld op het platform,” hij gaat door. “Sommigen willen Drupal 7 te gebruiken en maken het werken met Magento—die nog steeds PHP.” Hij fronst zijn wenkbrauwen. “De andere optie is gewoon te doen de back-end in Node.js met Backbone aan de voorkant.”

U’ve gefronste je voorhoofd; Hij ogen je sympathiek en legt uit: “Met die optie is’s alle JavaScript, voor- en achterkant.”

Die zijn allemaal termen die u’ve gehoord. U’ve lees de eerste delen van de Wikipedia-pagina’s en een boek over schatting software project. Het maakte zekere zin op het moment.

U vraagt ​​de universele framing vraag: “Hebt u deze opties kosten?”

Hij geeft je een nummer en een datum. Je weet in je ziel dat het aantal is de helft van wat het zou moeten zijn en dat het project een jaar zal gaan over schema. Hij belooft de lange termijn rendementen: De $ 85.000 in Oracle-licenties zullen niet langer nodig zijn; techniek is verhuizen naar een gratis, open-source database. “We waarschijnlijk die terug moeten doen toen we de Magento migratie,” hij zegt. Betekenis, natuurlijk, dat zijn voorganger moet waarschijnlijk moeten doen.

U contact op met een spreadsheet en hem eraan herinneren dat de Oracle contract een paar maanden geleden werd vernieuwd. Dus, nee, eigenlijk, althans voor nu, u’ll blijven eten die kosten. Zucht.

Deze man maakt een derde minder dan jij, en zijn opleiding werd afgesloten met een bachelorgraad uit een groot, prima State University. Maar hij heeft meer dan 500 connecties op LinkedIn. Dat plusteken na de “500” je stoort. Hoeveel meer dan 500 mensen weet hij dat? Vijf? Vijfduizend?

In sommige mysterieuze wijze, overtreft hij je. Niet binnen het bedrijf, niet in het restaurant reserveringen, niet rond advocaten. Nog steeds: Hij streelt zijn korte baard; Zijn handen zijn gebruinde; Hij wandelingen; Zijn sokken zijn geborduurd met kleine ninja.

“Don’t vergeten,” hij zegt, “wij’ve kreeg om de begroting voor apps.”

Dit is echt. Een Scrum Master in ninja sokken heeft in uw kantoor komen en zei: “Wij’ve kreeg om de begroting voor apps.” Mocht het allemaal gaan peervormig, zal zijn carrière prima.

U houdt uw werk in perspectief door te denken over vaten van contant geld. U heeft eens gehoord dat een Amerikaanse droge vat ongeveer $ 100.000 aan singles kan houden. Volgend jaar, je’ll een beetje onder een vat van contant geld op Oracle verbranden. Een vat isn’t zo slecht. Maar het’is er nog nooit een vat. Dit is een 5-barrel project of een 10-barreler? Meer? Te vroeg om te zeggen. Maar je kan zeker geld ruiken branden.

In dit stadium van de vergadering, u smekelingen in de ogen kijken en zeggen: OK, je’ve mij een datum en een budget. Maar wanneer zal het worden gedaan? Echt, echt, top-line-inkomsten-rapportage gereed? Kom naar de biecht; ontlasten je ziel.

Deze keer je jezelf te stoppen. u don’t wil uw aanvraag te worden voldaan door een betuttelende zucht van ongeduld of een andere uitleg over het schip data, Agile cycli, en continue levering. Beter voor nu om uw onwetendheid te verbergen. Wanneer zal het worden gedaan? Jullie leren om te accepteren dat het antwoord voor software projecten is nooit.

1.1 Waarom zijn we hier?

We zijn hier omdat de redacteur van dit tijdschrift vroeg me, “Kunt u mij vertellen welke code is?”

“Nee,” Ik zei. “Allereerst, I’ben niet goed in de wiskunde. ik’ben een programmeur, ja, maar ik’ben een East Coast programmeur, niet een van deze ernstige platform mensen uit de Bay Area.”

Ik begon bijna 20 jaar geleden te programmeren, leren via oraperl. een speciale versie van de Perl taal aangepast om te werken met de Oracle database. Een maand in het werk, beschadigde ik de rekeningen van 30.000 fantasie basketballers. Ze stuurden een aantal boze e-mails. Daarna heb ik besloten om beter te worden.

Dat wil ik zeggen’ben geen natuurlijk. Ik hou van computers, maar ze nooit enig gevoel maakte voor mij. En toch, na twee decennia van jammen informatie in mijn code-resistente hersenen, I’ve vergaarde voldoende kennis dat de computer zelf heeft geopenbaard. Zijn magie is ontdaan weg. Ik kan aan iemand die gebruikt om te werken bij Amazon.com of Microsoft over zijn of haar werk, zonder het gevoel een brandende schande spreken. ik’d graag praten met mensen van Google en Apple, ook, maar ze zo zelden opnieuw in te voeren de algemene bevolking.

Elke maand wordt het gemakkelijker om dingen die nog nooit eerder hebben gedaan, om nieuwe vormen van chaos te creëren en nieuwe vormen van orde te doen. Hoewel mijn wiskundige vaardigheden nooit zal inhalen, ik hou van het werk. Elke maand, code verandert de wereld in een aantal

2 Let’s Begin

Een computer is een klok met voordelen. Ze werken allemaal hetzelfde, het doen van de tweede klas wiskunde, één stap tegelijk: Vink, neem een ​​nummer en zet het in box één. Tick, neem een ​​ander nummer, zet het in vak twee. Vink, werken (een operatie zou kunnen optellen of aftrekken) op die twee getallen en zet het resulterende getal in vak één. Tick, controleer dan of het resultaat nul is, en als het is, ga dan naar een andere doos en volgt een nieuwe set instructies.

Jij, met behulp van een pen en papier, kan alles wat een computer kan doen; je kan het gewoon’t die dingen doen miljarden keren per seconde. En die miljarden kleine operaties optellen. Ze kunnen leiden tot een telefoon aan boop, verheffen een lift, of omleiden van een raket. Dat pure snelheid maakt het mogelijk om af te niet één, maar meerdere sleights van de hand, kaarttrucs te trekken op de top van kaarttrucs. Neem een ​​bos van pulsen van het licht dat weerkaatst wordt door een optische schijf, gelden wat wiskunde voor hen unsqueeze, en kopieer de resulterende stapel uitgebreid impulsen in een aantal geheugencellen—lees dan van die cellen aan het licht te schilderen op het scherm. Miljoenen pulsen, 60 keer per seconde. Dat’is hoe maak je de rubes geloven dat ze’re kijken naar een film.

Apple heeft altijd computers; Microsoft gebruikt om alleen software (en af ​​en toe een accessoire hardware, zoals muizen en keyboards), maar nu is het’s in de hardware business, met een Xbox-game consoles, Surface tablets en Lumia telefoons. Facebook assembleert zijn eigen computers voor zijn enorme datacenters.

Zoveel dingen zijn computers, of zullen zijn. Dat geldt ook voor horloges, camera’s, airconditioners, kassa’s, toiletten, speelgoed, vliegtuigen, en filmprojectoren. Samsung maakt computers die er uitzien als tv’s, en Tesla maakt computers met wielen en motoren. Sommige dingen die aren’t nog computers—tandzijde, zaklampen—zal uiteindelijk vallen.

Wanneer je “partij” het verwerken van meer dan duizend foto’s in Photoshop, of de som nummers in Excel, u’re programmering, op zijn minst een beetje. Wanneer u gebruik maken van computers te veel—namelijk een typische hoeveelheid zeggen—ze beginnen om u te veranderen. ik’ve had Photoshop dromen, Visio dromen, spreadsheet dromen en webbrowser dromen. De Dreamscape vloeibaar wordt en kan worden gesorteerd en geherstructureerd. ik’ve had het programmeren van dromen waar ik bewegen tekst rond het scherm.

U kunt ervoor zorgen computers doen prachtige dingen, maar je moet om hun grenzen te begrijpen. Ze’opnieuw niet almachtig, niet bewust in het minst. Ze’re snel, maar sommige delen—de processor, het RAM—zijn sneller dan anderen—zoals de harde schijf of de netwerkverbinding. Waardoor ze lijken oneindig neemt een groot deel van het werk van veel programmeurs en veel marketeers.

De turn-of-last-eeuwse Britse kunstenaar William Morris zei ooit je kunt’t hebben kunst zonder weerstand in de materialen. De computer en de veelsoortige randapparatuur zijn de materialen. De code is de kunst.

2.1 How Do You Typ een “EEN”?

Bedenk wat er gebeurt als je een toets op het toetsenbord te slaan. Zeggen een kleine letter “een.” Het toetsenbord is voor u klaar om op een toets drukt, of release één; het’s voortdurend scannen om te zien welke toetsen worden ingedrukt. Het raken van de sleutel stuurt een scancode.

Zoals het toetsenbord wacht op een toets te drukken wordt de computer wacht op een signaal van het toetsenbord. Wanneer men naar beneden komt de snoek, de computer interpreteert het en gaat het verder in zijn eigen interieur. “Hier’is wat het toetsenbord net ontvangen—met dit wat je wil.”

Het’is nu eenvoudig, toch? De computer gaat gewoon om wat tafel, cijfers erop dat het signaal overeenkomt met de letter “een,” en zet het op het scherm. Natuurlijk niet—te makkelijk. Computers zijn machines. ze don’t weet wat een scherm of een “een” zijn. Om het te zetten “een” op het scherm, uw computer om het beeld van de trek “een” uit het geheugen als onderdeel van een lettertype, een “een” uit lijnen en cirkels. Het moet deze lijnen en cirkels en hun bedrijf in een doosje van pixels in het deel van het geheugen dat het scherm beheert. Tot nu toe hebben we tenminste drie weergaven van een letter: het signaal van het toetsenbord; de versie die in het geheugen; en de lijnen-en-cirkels uitvoering geschetst op het scherm. we haven’t zelfs overwogen hoe het op te slaan, of wat er gebeurt met de brieven aan de links en rechts wanneer u een invoegen “een” in het midden van een zin. Of wat “lijnen en cirkels” bedoelen als gereduceerd tot binaire data. Er zijn verrassend veel manieren om een ​​eenvoudige vertegenwoordigen “een.” Het’verbazingwekkend één van het werkt helemaal niet.

Coders zijn mensen die bereid zijn om naar achteren te werken om die druk op de toets. Het duurt een bepaald temperament om door normen, handleidingen en documentatie en lees dingen zoals “gegevensvelden worden overgedragen minst significante bit eerst” in het belang van het begrijpen waarom, wanneer u verwacht “ü,” je krijg steeds “.”

2.2 van hardware tot software

Hardware is een lastige zaak. Al tientallen jaren het werk van de integratie, de bouw en de scheepvaart computers was een manier om fortuinen te bouwen. Maar de marges aangescherpt. Kijk naar Dell, nu terug in particuliere handen, of Gateway, overgenomen door Acer. Dell en Gateway, twee-wereld te verslaan bedrijven, bleef uit de software, meestal het bouwen van pc’s die kwam voorgeïnstalleerd met Microsoft Windows—plus diverse abonnementen gebaseerde diensten aan de winst te verhogen.

Dit leidde tot veel gevloek van personen die’d bracht $ 1.000 of meer op een computer en nu moest uitzoeken hoe de antivirus software te stoppen van hen zeuren om te betalen.

Ballmer chants “Ontwikkelaars!”

Jaren geleden, toen Microsoft koning was, Steve Ballmer, zweten door zijn blauwe button-down, sprong op en neer voor een stadion vol mensen en zongen, “Ontwikkelaars! Ontwikkelaars! Ontwikkelaars! Ontwikkelaars!”

Hij schreeuwde tot hij schor was: “Ik hou van dit bedrijf!” Natuurlijk deed hij. Als u de software kunt verkopen, als je kan oplichten op het scherm, je’re verkopen oneindig reproduceerbaar woordjes. De marges op niets zijn geweldig—tot andere mensen beginnen te verkopen zelfs goedkoper woordjes of geven ze weg. Dat is wat er gebeurd is, als gratis software-gebaseerde systemen zoals Linux begon te knabbelen, dan verslinden, de server markt, en gratis te gebruiken webgebaseerde applicaties zoals Google Apps begon als levensvatbare vervanging voor desktop software dienen.

Aldus een ambacht, en een professionele klasse die dat vaartuig leeft, ontstaan. Beginnend in de jaren 1950, maar het vangen van brand in de jaren 1980, een naar verhouding klein aantal mensen werd bedreven in het bedenken van manieren om de fundamentele menselijke verlangens te bevredigen (weet dat de tijd, plannen van een vlucht, een brief sturen, dood een zombie) door het beheersen van de machine. Coders, te beginnen met begrippen als “signalen van een toetsenbord” en “getallen in het geheugen,” aangemaakt oneindig reproduceerbare eenheden van digitale uitvoering die wij software noemen, in de hoop aan de behoeften van de markt te voldoen. Man, ze deden. De systemen bouwden ze worden gebruikt om de wereldwijde economische infrastructuur te beheren. 1 Als coders don’t uitvoeren van de wereld, lopen ze de dingen die de wereld in werking.

De meeste programmeurs aren’t werken aan de opbouw van een algemeen erkend applicatie zoals Microsoft Word. Software is overal. Het’s gegaan van een ambacht van fragiele, ingebouwde-from-scratch projecten op maat aan een bedrijfstak van gestandaardiseerde onderdelen, waar de programmeurs absorberen en verbeteren op het werk van hun voorouders (zelfs als die voorouders zijn één hokje ouder). Software is er wanneer je kanaal te wisselen en uw kabel-box laat je zien wat anders op. Je krijgt geld uit een geldautomaat—software. Een lift brengt u vijf verhalen—hetzelfde. Facebook brengt software elke dag om iets als een miljard mensen, en dat de software draait in webbrowsers en mobiele toepassingen. Facebook lijkt alsof het’gewoon foto’s van je moeder’s krokussen of je zoon’s toneelstuk op school—maar nee, het’s software.

Fotograaf: Boru O’O Brien’Connell voor Bloomberg Businessweek; Decorontwerp: Dave Bryant

2.3 Hoe werkt Code Word Software?

We weten dat een computer is een klok met voordelen, en dat software begint als code, maar hoe?

We weten dat iemand, een of andere manier, gaat een programma in de computer en het programma wordt gemaakt van de code. In de oude dagen, dat betekende waardoor gaten in de ponskaarten. Dan jij’d de kaarten in een doos en geef ze aan een exploitant die hen zou laden, en de computer zou bladeren door de kaarten, bepalen waar de gaten waren, en updaten delen van zijn geheugen, en dan zou het—OK, dat’is een beetje te ver naar achteren. Laat’s praten over moderne typen-in-a-toetsenbord code. Het zou er als volgt uitzien:

Dat’s in een taal genaamd, gewoon, K, beroemd om zijn beknoptheid. 2 Die code zal testen of er iets is een palindroom. Als u de volgende keer ingetypt ISPAL "in staat was ik eer ik zag elba". K zal bevestigen dat ja, dit is een palindroom.

Dus hoe anders kan uw code eruit? Misschien als zo, in Excel (met alle formules verborgen onder de nummers die ze produceren, en een vakje dat u kunt controleren):

Maar Excel-spreadsheets zijn lastig, omdat ze allerlei dingen onder hun nummers kunnen verbergen. Deze dekking zorgt ervoor dat de risico’s. Een studie door een onderzoeker aan de Universiteit van Hawaï bleek dat 88 procent van de spreadsheets fouten bevatten.

De programmering kan ook uitzien als Scratch, een taal voor kinderen:

Dat’is zeker de programmering daar—de computer zit te wachten voor een klik, voor sommige input, net zoals het wacht tot u een typt “een,” en dan’s iets te repetitief te doen, en het gaat om hilarische dieren.

Dat’s in Fortran. De reden dat het’s niet werkt, is dat je vergeten bent om een ​​aanhalingsteken aan het einde van de eerste lijn te zetten. Probeer een beetje moeilijker, bedankt.

Al deze dingen zijn het coderen van een of andere vorm, maar het laatste is wat de meeste programmeurs gemakkelijk zou identificeren als code. Een opeenvolging van symbolen (met behulp van typische toetsenbord karakters, opgeslagen in een bestand van een soort) dat iemand getypt of gekopieerd, of geplakt van elders. dat doesn’t betekenen de andere vormen van codering aren’t geldig is of gewonnen’t u te helpen uw doelen te bereiken. Codering is een brede menselijke activiteiten, zoals sport, of schrijven. Als software-ontwikkelaars denken van codering, de meeste van hen denken over regels code in bestanden. Ze’re overhandigd een probleem, na te denken over het probleem, code schrijven dat het probleem zal oplossen, en dan verwachten dat de computer te woord om te zetten in daden.

Code is inert. Hoe maak je dat ERT? Je loopt software die transformeert in machinetaal. Het woord “taal” is een beetje ambitieus hier, gezien het feit dat je een computer-apparaat kan maken met hout en marmer. Je doel is om uw code te zetten in een expliciete lijst van instructies die door onderling verbonden logische poorten kunnen worden uitgevoerd, waardoor het draaien van uw code in iets dat kan worden uitgevoerd—software.

Een compiler is software die de symbolen die u getypt neemt in een bestand en transformeert ze tot instructies lager niveau. Stel je een programmeertaal genaamd Zaken Voertaal United System of Bolus. Het’is een vreselijke taal die zal moeten volstaan ​​voor een paar onhandige paragrafen. Het heeft één echte opdracht, PRINT. We willen dat het HELLO NERDS af te drukken op ons scherm. Daartoe schrijven we een regel code in een tekstbestand dat zegt:

En we besparen dat als nerds.bol. Nu lopen we gnubolus nerds.bol. onze imaginaire compiler programma. Hoe begint het? De enige manier waarop het kan: door het doen van lexicale analyse, gaan per teken, te beginnen met de “p,” groeperen karakters in tokens, ze op te slaan in onze eendimensionale boom dozen. Laat’s is de computer.

Tijd om aan de slag.

De reden dat ik’m te laten zien aan u, zodat u kunt zien hoe elk karakter zaken. computers meestal “begrijpen” dingen door te gaan teken voor teken, beetje bij beetje, het transformeren van de code in andere vormen van code als ze gaan. De Bolus compiler organiseert nu de tokens in een kleine boom. Zoiets als een ontleding. Behalve in plaats van zelfstandige naamwoorden, werkwoorden en bijvoeglijke naamwoorden, is de computer op zoek naar functies en argumenten. Ons programma boven, in de computer, wordt dit:

De bomen zijn echt een aangename manier van denken van de wereld. Uw memo op het werk delen dat de leden hebben? Boom. Uw e-mailprogramma bevat berichten die onderwerp lijnen en adressen bevatten? Boom. Uw favoriete software programma dat een menubalk met individuele items die subitems hebben heeft? Boom. Elke dag is Dag van de As in Codeville.

Natuurlijk’is allemaal een truc. Als u zich snijdt het openen van een computer, je’ll vinden talloze kleine dozen in rijen, plaatsen waar u kunt zetten en op te halen bytes. Alles moet uiteindelijk aan de slag om dingen in kleine dozen wijst naar elkaar. Dat’is gewoon hoe de dingen werken. Dus die boom is eigenlijk meer als volgt uit:

Elk personage echt, echt toe doet. Elke domme misplaatste puntkomma, ruimte waar u het tabblad betekende, beugel in plaats van een haakje—fouten kan de computer in een staat van paniek te verlaten. De bomen don’t weten waar ze hun bladeren te zetten. Hun wortels verval. De boxen don’t stapelen netjes. Want niet alleen zijn computers zo dom als een miljard knikkers, ze’re ook positief Stradivarian in hun delicatesse.

Dat proces van het gaan per teken kan worden verpakt in een routine—ook wel een functie, een werkwijze, een subroutine of component. (Little in de informatica heeft een enkele, betrouwbare naam, wat betekent dat iedereen altijd ruzie over semantiek.) En dat routine kan zo vaak als nodig worden uitgevoerd. Ten tweede kun je alles wat je wilt, niet slechts één zin te drukken. Ten derde, kunt u het proces voor eeuwig te herhalen, en niets zal u stopt tot de machine breekt of, behoudens dat, warmtedood. Het is duidelijk dat niemand naast Jack Nicholson in The Shining echt nodig heeft om te blijven over en het typen van hetzelfde zin, en zelfs toen bleek een slecht idee.

In plaats van zich zorgen te maken over waar de woorden worden opgeslagen in het geheugen en het hebben van om karakter te gaan door karakter, programmeertalen kunt u denken aan dingen als strings, arrays en bomen. Dat’s wat programmering geeft. U kunt kijken uit over een programmeur’s schouder en denk dat de code ziet er ingewikkeld en saai, maar het’s toedekken repetitieve verveling die’is onvoorstelbaar groot. 3

Dit ding dat we deden gewoon met individuele personages, het samenstellen van een programma naar beneden in een nep-assembly taal, zodat de niet-bestaande computer elk personage een tegelijk kan afdrukken? Hetzelfde principe geldt voor elke pixel op het scherm, elke frequentie gecodeerd in uw MP3-bestanden, en iedere denkbeeldige kubus in Minecraft. Computing behandelt menselijke taal als een willekeurige set van symbolen in de sequenties. Het behandelt muziek, beelden en film op die manier ook.

Het’is een goed en gezond bewegen om na te denken wat uw computer op dit moment aan het doen is. Misschien jij’re lezen van dit op een laptop: Wat zijn de stappen en lagen tussen wat je’opnieuw te doen en de lilliputter mechanismen binnen? Wanneer u dubbelklikt op een pictogram om een ​​programma te openen, zoals een tekstverwerker, moet de computer weten waar dat programma is op de schijf. Het heeft een soort van de boekhouding proces om dat te doen. En dan laadt dat programma in het geheugen—wat betekent dat het laadt een enorme to-do lijst in het geheugen en begint om door het. Wat betekent dat de lijst eruit?

Misschien jij’re lezen van dit in print. Geen schande dat. In feite, dank je. Het papier is het artefact van digitale processen. Weet je nog hoe we we deze “een” op het scherm? Kijk of je kunt krijgen van wat slaperig schrijver typen die brief op een toetsenbord in Brooklyn, N.Y. om het papier onder je duim. Wat omlijst dat angstige symmetrie?

Denken deze manier leer je twee dingen over computers: One, is er’is geen magische, het maakt niet uit hoeveel het lijkt erop dat er is. Er’s gewoon werken om dingen te kijken als magie. En twee het’s gek daar.

Fotograaf: Asger Carlsen voor Bloomberg Businessweek; Set Design: Dave Bryant

2.4 Wat is een algoritme?

“Algoritme” is een woord schrijvers roepen slim over technologie te klinken. Journalisten hebben de neiging om te praten over “Facebook’s-algoritme” of “Google-algoritme,” die meestal onnauwkeurig. Ze bedoelen “software.”

algoritmes don’t vereisen computers zomin geometrie doet. Een algoritme lost een probleem, en een grote algoritme krijgt een naam. Dijkstra’s-algoritme, na de beroemde informaticus Edsger Dijkstra, vindt de kortste weg in een grafiek. Trouwens, “diagram” hier doesn’t bedoel maar.

Denk aan een kaart; straten aansluiten op de straten op kruispunten. Het’is een grafiek! Er zijn grafieken om je heen. Sanitair, elektriciteit, code compilatie, sociale netwerken, het internet, alles kan worden weergegeven als grafieken! (Now om geld te verdienen …)

Veel algoritmes hebben hun eigen pagina’s op Wikipedia. U kunt besteden dagen rondneuzen hen in verwondering. Euclid’s-algoritme. bijvoorbeeld, is de go-to specimen dat opduikt wanneer iemand wil op wax over algoritmen, dus waarom buck de trend? Het’is een eenvoudige manier van het bepalen van de grootste gemene deler van twee getallen. Neem twee nummers, zoals 16 en 12. Verdeel de eerste door de tweede. Als er’s een rest (in dit geval is, 4), verdeel het kleiner aantal, 12, door die rest, 4, waardoor je 3 en geen rest, dus’re gedaan—en 4 is de grootste gemene deler. Δ De originele versie van dit verhaal verdeelde het grotere aantal door de rest, in plaats van de kleinere. Dankzij @ kuro5hin op GitHub (nu vertalen in machine code, en kunnen we hier weg.)

Er’is een site genaamd Rosetta code die je laat zien verschillende algoritmes in verschillende talen. de Euclid’s-algoritme pagina is geweldig. Sommige van de voorbeelden zijn verdacht lang en moeizaam, en sommige zijn kleine onzin poëzie, zoals deze in de taal Forth: 4

Lees het hardop, bij voorkeur aan vrienden. Forth is gebaseerd op het concept van een stapel, dat een speciaal datastructuur. Jij maakt “tekst” die dingen te doen op de stapel, het opbouwen van een kleine taal van uw eigen land. PostScript, 5 de taal van laserprinters, kwam na Forth, maar is net als het. Kijk naar hoe sterk de code is, geven of nemen sommige squiggles:

En dat’s Euclid’s-algoritme in PostScript. De steekproef PostScript-code opgenomen in het artikel vereist initlib te lopen, te vinden op rosettacode.org. Dankzij @caoliver op GitHub Ik geef toe, dit zou leuk zijn alleen voor mij. Hier is het in Python (alle eer aan Rosetta Code):

Een programmeertaal is een systeem voor het coderen, het noemen, en het organiseren van algoritmen voor hergebruik en toepassing. Het’s een algoritme beheersysteem. Daarom, ondanks de hype het’s dom om te zeggen Facebook heeft een algoritme. Een algoritme kan worden vertaald in een functie, en die functie kan worden opgeroepen (baan), wanneer de software wordt uitgevoerd. Er zijn algoritmen die betrekking hebben op beeldverwerking en voor het efficiënt opslaan van gegevens en voor het snel loopt door de elementen van een lijst. De meeste algoritmen te komen voor gratis, al in een programmeertaal gebouwd, of zijn beschikbaar, georganiseerd in bibliotheken, downloaden van het internet in een moment. U kunt een ton van de programmering doen zonder daadwerkelijk na te denken over algoritmes—kun je iets op te slaan in een database of afdrukken van een webpagina door knippen en plakken code. Maar als je wilt dat de computer, laten we zeggen, te identificeren of het’s lezen Spaans of Italiaans, u’ll moet een taal-matching functie te schrijven. Dus in die zin, kan algoritmen zuiver, mathematische entiteiten evenals praktische uitingen van ideeën waarop u uw vieze handen kunt plaatsen.

Dijkstra verspreidde een opmerkelijk en uitdagende set van ten minste 1.318 memo’s aan de wereldwijde computer wetenschappelijke gemeenschap, te beginnen in de jaren 1960 en voortgezet tot aan zijn dood in 2002, bekend als “EWDs,” velen van hen met de hand geschreven. Δ Dijkstra schreef ten minste 1318 memo’s naar de computer wetenschappelijke gemeenschap, niet 18. Dankzij @hbp op GitHub

Een ding dat me altijd heeft om te begrijpen is dat computers aren’t eigenlijk “goed in wiskunde.” Ze kunnen worden geprogrammeerd om bepaalde handelingen uit te voeren om bepaalde mate van precisie, zozeer zelfs dat het lijkt alsof “doen wiskunde” mens. 6 Dijkstra zei: “Informatica is niet meer over computers dan de astronomie is ongeveer telescopen.” 7 Een groot deel van de informatica is over het begrijpen van de efficiëntie van algoritmen—hoe lang zij zal nemen om te draaien. Computers zijn snel, maar ze kunnen verzanden—bijvoorbeeld, wanneer het proberen om de kortste weg tussen twee punten op een grote kaart te vinden. Bedrijven als Google, Facebook en Twitter zijn gebouwd op de top van de fundamentele informatica 8 en besteden veel aandacht aan de efficiëntie, omdat hun gebruikers dingen (zoekopdrachten, statusupdates, tweets) doen een buitengewoon aantal keren. aldus’s absoluut hun tijd om uitstekende computer wetenschappers vinden de moeite waard, vele met doctoraten, die weten waar alle rendementen zijn begraven.

Het duurt een goede wiskundige te zijn om een ​​computer wetenschapper te zijn, maar een middelmatig iemand om een ​​effectieve programmeur te zijn. Totdat je begint te maken met miljoenen mensen op een netwerk of je nodig hebt om een ​​miljoen foto’s snel vervagen of verscherpen, kunt u gewoon gebruik maken van het werk van andere mensen. Als het echt wordt, breken de sci comp. Wanneer je’opnieuw iets te doen honderd biljoen keer, nanoseconde vertraging oplopen. Systemen vertragen, krijgen gebruikers chagrijnig, geld verbrandt door het vat. 9

Het zwaarste werk in de programmering is om rond dingen die aren’t Computable, in het vinden van manieren om onmogelijke opdrachten te breken in kleine, mogelijke componenten, en dan de indruk wekken dat de computer iets wat het eigenlijk isn doet’t, als het hebben van een menselijk gesprek. Dit was vroeger bekend als aan “kunstmatige intelligentie onderzoek,” maar nu is het’s meer kans om te gaan onder de naam “machine learning” of “data mining.” Als u spreken met Siri of Cortana en ze reageren, is het’is niet omdat deze diensten begrijpt u; ze zet uw woorden in de tekst, breek die tekst in symbolen, dan overeenkomen met die symbolen tegen de symbolen in hun database van termen, en produceren een antwoord. Tal van algoritmen, gebundeld en toegepast, betekent dat computers kunnen nep luisteren.

Een programmeertaal heeft ten minste twee banen, dan. Het moet inpakken veel algoritmen, zodat ze kunnen worden hergebruikt. Dan don u’t moeten gaan op zoek naar een vierkantswortel algoritme (of een genie programmeur) elke keer dat u een vierkantswortel nodig. En het heeft om het gemakkelijk voor programmeurs om wrap up nieuwe algoritmen en routines in functies voor hergebruik te maken. De DRY principe voor Don’t Repeat Yourself, is een van de omgangstaal leerstellingen van de programmering. Dat wil zeggen, moet je de dingen eens te noemen, dingen doen once, een functie te creëren keer, en laat de computer zelf te herhalen. dit doesn’t altijd werken. Programmeurs herhalen zich voortdurend. ik’ve schriftelijke bepaalde soorten code honderd keer. Daarom DRY is een principe.

Genoeg gepraat. Laat’s code!

2.5 De ​​Sprint

Na een paar maanden van de begroting wordt vrijgemaakt, en het web re-architectuur project is aan de gang. Ze geven het een naam: Project Excelsior. Fijn. TMitTB (die, om eerlijk te zijn, heeft andere kleren en vaak kleedt alsof hij’s in Weezer) controleert in met u elke week.

Hij brengt documenten. Ieder document heeft zijn eigen naam. De functionele specificatie is een reeks van minstens duizend uitspraken over gebruikers klikken op knoppen. “Bij de toegang tot de webpagina van de gebruiker als aangemeld zullen worden geïdentificeerd met naam en verwelkomd en zo niet ingelogd zullen worden aangemoedigd om in te loggen of een account aan te maken. (Zie de gebruiker registratie workflow.)”

God, ontferm U over onze zielen. Van daaruit geeft verschillende foutmeldingen. Het’is een soort blauwdruk die het beschrijft—in woorden, met af en toe diagrammen—een programma dat doesn’t bestaan.

Sommige delen van de functionele specificatie verwijzen naar “user stories,” kleine hypothetische verhalen over mensen die het gebruik van de site, bijv. “Als bezoeker van de website, wil ik zoeken naar producten, zodat ik snel kan kopen wat ik wil.” 10

Dan daar’s iets TMitTB noemt wireframe mock-ups, die foto’s van hoe de website eruit zal zien, gemaakt in een programma dat alles maakt zijn lijken alsof het geschetst met de hand, allemaal een beetje kronkelende—hoewel het werd op een computer. Dit is dus niemand krijgt het verkeerde idee over deze ideeën-in-progress en neemt hen te serieus. Betuttelend, maar punt genomen.

Hij vertelt je vaak hoe belangrijk dit panel-spreken is ten behoeve van het werven. Wie’s te zeggen dat hij verkeerd is? Het kost zo veel te huren van een senior programmeur als voor een midlevel executive huren, dus misschien gaan naar conferenties is zijn baan, en in de twee maanden dat hij’s hier al hij’s ingehuurd vier personen. Zijn twee meest recente aanwervingen zijn in Boston en Hongarije, die geen van beide is een plek waar je een kantoor geweest.

Maar wat maakt het uit? Elke dag doet hij op 15 minuten “sta op” vergadering via een zogenaamde Slack, die in wezen is zoals Google Chat, maar met een soort van plaid visuele thema en de programmeurs lijken het erover eens dat dit een prachtige en vruchtbare manier om te werken.

“Ik kijk naar de commits,” TMitTB zegt. Wat betekent dat hij elke dag een overzicht van de code dat zijn team schrijft om ervoor te zorgen dat het’s goed georganiseerd. “Niemand dwingt om de productie zonder dat de tests passeren. Wij’re goed.”

Uw vergaderingen, ter vergelijking, ga dan voor uren, met mensen rond een tafel—gaan zitten. Je vraagt ​​je af hoe hij zijn programmeurs krijgt om op te staan, maar dan sommigen van hen al gebruik van staande bureau. misschien is dat’is het ticket.

Eerlijk gezegd, wilt u wel eens naar conferenties en worden op panelen. Je kon gebotteld water te drinken en houd weer prima.

2.6 Wat’s Met al deze conferenties, Anyway?

Tech conferenties ziet eruit alsof je’d verwachten. Tal van mensen bij een Sheraton, keynote in Ballroom D. Of enorme stromen van mensen ronddwalen in South by Southwest in Austin. Mensen komen samen in de tientallen of duizenden en wonen panelen, zogenaamd om te leren; ze wonen presentaties en opfrissen van hun vaardigheden, maar er’is een tweede conferentie functie, één van acculturatie. Je gaat naar een technologie conferentie om uw tribale identiteit te bevestigen, over te dragen uit de menigte van dilettanten en in de zone van de professional. Je pakt swag en praat met leveranciers, als dat’is jouw ding.

Technology Conferences zijn waar de primaten dynamiek volledig kan worden weergegeven, waar de relaties van macht en hiërarchie kan worden vastgesteld. Er zijn keynote sprekers—vaak de mensen die de technologie gemaakt bij de hand of vervaardigde een bepaalde taal. Er zijn de gewone luidsprekers, vaak betaalde helemaal niet of in vliegtickets, die een idee of techniek of aanpak te presenteren. Dan zijn er de panelen, waar een groep mensen op zijn opgesteld in een rij en gedwongen tot enige schijn van interactie terwijl het publiek controleert zijn e-mail.

ik’ben een beetje neer op panelen. Ze hebben de neiging te drijven. ik’ben niet zeker waarom ze bestaan.

Hier’is de andere ding over technologie conferenties: Er is veel seksuele intimidatie en nog veel seksistische inhoud aan conferenties geweest. Dat is dom, want computers zijn dom rotsen ontbreekt genitaliën, maar daar heb je het.

Conferenties begon gedragscodes, regels en algoritmen voor mensen ontwikkelen (mannen, echt waar) te volgen.

Als je onder of getuige onacceptabel gedrag zijn, of als u andere problemen, neem dan zo spoedig mogelijk een communautaire organisator …

php [architect] is gewijd aan het verstrekken van een intimidatie-gratis evenement ervaring voor iedereen en tolereert geen pesterijen of aanstootgevend gedrag, in welke vorm.

De Atlanta Java Users Group (AJUG) is gewijd aan het verstrekken van een uitstekende conferentie ervaring voor alle aanwezigen, sprekers, sponsors, vrijwilligers en organisatoren die betrokken zijn bij DevNexus (GeekyNerds) ongeacht geslacht, seksuele geaardheid, handicap, fysieke verschijning, lichaamsgrootte, ras , godsdienst, financiële status, haarkleur (of het haar bedrag), platform voorkeur of teksteditor naar keuze.

Als mensen begonnen te praten over de gedragingen van conferences, begonnen ze ook te praten over de grote problemen van de programmering cultuur. Dit was altijd een probleem, maar de conferentie problemen gaf de mensen een punt van het gemeenschappelijk referentiekader. Waarom waren er zoveel mensen op dit gebied? Waarom gedragen ze zich zo vreemd? Waarom is het zo moeilijk voor hen om in groepen met vrouwelijke programmeurs en gedragen zich in een typische, volwassen manier?

Beroemde vrouwen in het coderen van de geschiedenis

De gemiddelde programmeur is matig ijverig, die in staat van de fundamentele wiskunde, heeft een praktische kennis van één of meerdere programmeertalen, en kan communiceren wat hij of zij doet om het management en zijn of haar collega’s. Gezien het feit dat een groot aantal van de vrouwen werkt als journalisten en redacteuren, voert de operatie, geleide bedrijven, te beheren kleine bedrijven, en het gebruik van spreadsheets, dat een paar zelfs dienen op het Supreme Court, en dat we niet langer verrast om te vinden vrouwen die werken als accountants , professoren, statistici, of project managers, is het’is moeilijk voor te stellen dat ze kunnen’t schrijven JavaScript. Programmering, ondanks de hype en de egoïstische fantasieën van programmeurs over de hele wereld, isn’t de meest intellectueel veeleisende taak denkbaar.

Die leidt de ene naar de onontkoombare conclusie: Het probleem met vrouwen in de technologie isn’t vrouwen.

3 Waarom zijn Programmeurs zo Intense Over Talen?

Veel conferenties worden georganiseerd rond specifieke programmeertalen of specifieke gemeenschappen (PyCon voor Python programmeurs, de Strata conferentie voor big data; OSCON voor open-source coders); deze zijn rituele evenementen voor de mensen in die gemeenschappen. Deelnemers verzamelen, praten, en post de video’s op YouTube. Taal zaken.

Programmeurs volgen het succes van computertalen de manier waarop andere mensen volgen sport rankings, commentaar op Web forums zoals Reddit (waar vele talen krijgen hun eigen “subreddit,” en reddit.com/r/programming heeft op dit moment 620.202 lezers), of Hacker News. gerund door de venture capital firma Y Combinator (een bedrijf vernoemd naar een speciaal soort functie die werkt op andere functies), of Lambda de Ultimate (vernoemd naar een reeks documenten meestal geschreven in de jaren 1970 over de invloedrijke programmeertaal Scheme—hoe meer inside-honkbal de naam, de nerdier het onderwerp).

Er zijn honderden van de programmering blogs. Veel grote bedrijven laten hun ingenieurs blog (een gulle gift, gezien hoe veel recruiters zweven). Discussies over het programmeren gaan overal, in het openbaar, te allen tijde over honderden talen. Er is een scherp gevoel voor wat’s komen en wat’s wegebben.

Het’is niet alleen de mode; een’loopbaan als programmeur afhankelijk toont hiermee in één of meerdere talen. Dus er zijn rankings, regelmatig bijgewerkt, zelden schokkend. Met ingang van 15 april, de wereld’De meest gebruikte programmeertalen volgens de Tiobe index (die verschillende indicatoren gebruikt om een ​​rangschikking voor programmeerwereld genereren), zijn Java, C, C ++, Objective-C en C #, gevolgd door JavaScript, PHP en Python. De ranglijsten zijn noodzakelijkerwijs onnauwkeurig; een andere lijst, door een adviesbureau genaamd RedMonk, geeft JavaScript de eerste plaats, gevolgd door Java. Er zijn vele mogelijke conclusies hier, maar voor de hand liggende is dat, ceteris paribus, een zeer goede Java-programmeur die goed presteert in interviews zullen meer carrièremogelijkheden dan een vergelijkbare kandidaat met behulp van een meer obscure taal.

Als u code, tegen de tijd dat een taal doorbreekt boven 10 of 20, je’ve van gehoord, gelezen blog posts over het, mensen horen klagen over hoe vreselijk of geweldig of misplaatst is, eventueel keken naar een paar video tutorials, of speelde met het een beetje. Het nemen van nieuwe talen uit voor een spin is een goede zaak voor een programmeur te doen. Vaak is alles wat je hoeft te doen is het downloaden van een aantal bestanden en schrijf een paar regels code, dan beslissen of je verder wilt gaan. De meeste talen zijn gratis te downloaden en te gebruiken.

Waarom doen mensen bouwen en vervolgens weg te geven gratis talen? Nou, het creëren van een goede computer taal is het werk van een top programmeur. Te hebben geproduceerd van een succesvol taal wordt erkend als een monumentale inspanning, verwant aan het publiceren van een multivolume geschiedenis van een oorlog of vechten in één. De beloning is glorie.

Het maken van een nieuwe taal is moeilijk. Het maken van een populaire taal is veel moeilijker en vereist nog steeds de glimlach van fortuin. En het veranderen van de manier waarop een populaire taal werkt blijkt een van de moeilijkste dingen die mensen kunnen doen, waarbij jaren coördinatie om de normen te lijnen. Talen zijn grote, complexe, dynamische uitingen van de menselijke cultuur.

3.1 De schoonheid van de bibliotheek Standard

De ware maatregel van een taal isn’t hoe het gebruikt puntkomma; het’is de standaard bibliotheek van elke taal. Een taal is software voor het maken van software. De standaard bibliotheek is een set van premade software die u kunt hergebruiken en opnieuw toe te passen.

Neem Python, dat is “batterijen inbegrepen,” wat betekent dat hij wordt geleverd met tal van reeds bestaande code, georganiseerd in “modules,” die u kunt hergebruiken. De standaard bibliotheek heeft functies waarmee u webpagina’s te kopiëren of woorden te vervangen in een document.

Wat betekent dat, om tekst te verwerken? Nou, je zou een stukje tekst (The Quick Brown Fox) hebben en op te slaan in een variabele genaamd my_string. Nu kun je dus standaard methoden op die string noemen. Je kunt zeggen my_string.lower (). en het zal alle woorden in kleine letters, het produceren “de quick brown fox.”

Echt begrijpen van een taal’s standaard bibliotheek is een van de manieren om een ​​bedreven in die taal wordt. Normaal gesproken ga je naar webpagina’s of een boek lezen.

Maar de standaard bibliotheek is slechts het begin. Voor veel talen—en Python is voorbeeldig—er’is een enorme bibliotheek van vooraf geschreven modules beschikbaar voor bijna onmiddellijk downloaden, met behulp “package manager” software. Een module (of bibliotheek, of pakket) is code die is bedoeld om een ​​taal te verlengen’s mogelijkheden.

Laat’s zeggen dat je werkt voor een reclamebureau en de noodzaak om te verwerken door middel van 100.000 foto’s en de omvang en aan te scherpen hen.

U typt een commando: sudo pip installeren Pillow. en de Pillow module is gedownload, automatisch samengesteld, en geplaatst in de juiste directory voor later hergebruik. Je moet weten, natuurlijk, dat de meeste moderne talen hebben modules voor beeldverwerking; je moet ook weten dat kussen is de meest gebruikte beeldverwerking toolkit. Weten hoe om uit te vinden, dat is deel van het werk van de codering. Je zou kunnen leren door te googelen. Je zou een vriend te vragen. Je zou die informatie uit een boek of een website als The Hitchhiker krijgen’s Guide to Python.

Een programmeur moet in staat zijn om snel te analyseren en die grote, complexe bibliotheek is die’is de meest recent en actief bijgewerkt en de beste match voor zijn of haar huidige behoeften. Een programmeur nodig heeft om een ​​goede luisteraar te zijn.

Maar wat een uitbetaling! Nu dat Pillow is geïnstalleerd, hebt u bij uw het typen handbereik, tientallen routines en functies met betrekking tot beeldverwerking die u kunt gebruiken in uw code: verander kleuren, draaien een aantal graden, schaal, om te zetten GIF afbeeldingen naar JPEG’s, en enzovoort. Of als je nodig hebt om zeer complexe numerieke analyse en statistiek werk te doen, kunt u NumPy downloaden, en plotseling een enorm scala aan wiskundige algoritmen voor u beschikbaar zijn, honderden jaren van wetenschap en onderzoek neer. Audio processing, interactie met eigenaardige hardware, spreken tot databases—Er zijn pakketten voor al deze dingen. Maar je moet weten hoe ze te vinden, hoe ze heten. code isn’t gewoon obscure commando’s in een bestand. Het vereist dat u een kaart in je hoofd hebben, om te weten waar de goede bibliotheken, de beste documentatie, en het meest behulpzame message boards zijn gevestigd. Als u don’t weten waar die dingen zijn, zul je al je tijd zoeken door te brengen, in plaats van het bouwen van coole nieuwe dingen.

3.2 Wat doen Verschillende Talen doen?

Fotograaf: Steven Brahms voor Bloomberg Businessweek; Prop Stylist: Zachary Kinsella

Als al deze computer talen hetzelfde doen (maak de computer doen wat je wilt), waarom maakt het uit welke je kiest? Om dezelfde reden dat je wouldn’t neem een ​​fiets op te halen een koelkast of krijgen een fysiek vanuit een oncologische neurochirurg. Sommige gereedschappen zijn beter voor bepaalde banen.

Het’is mogelijk een C programmeur en een Java programmeur elkaar lezen’s-code, maar het’s moeilijker om C-code en Java-code werken samen. C en Java vertegenwoordigt de wereld op verschillende manieren structuurgegevens op verschillende manieren te verzekeren en de componenten van de computer op verschillende manieren. Er zijn echte voordelen voor iedereen op een team met behulp van dezelfde taal. Ze’zijn allemaal op dezelfde manier over hoe u de computer om gegevens te verwerken instrueren denken.

Het’is niet elke ploeg over een grote organisatie dezelfde taal gebruiken. In feite is het’is vaak contraproductief. Grote organisaties hebben veel van de behoeften en het gebruik van vele talen en diensten om hen te ontmoeten. Zo wordt Etsy gebouwd bovenop PHP—maar haar product-zoekdienst gebruikt Java-bibliotheken, omdat de oplossingen voor zoeken beschikbaar in Java zijn geweldig.

Sommige programmeertalen, zoals C, zullen hun best doen om precies te doen wat je vraagt, zelfs als dat betekent crashen van uw computer. Anderen, zoals OCaml en Haskell, zijn zeer beperkt en vraag een programmeur om houwen tot een smalle vorm, probeer je weg van alles dom te sturen. 11

Sommige talen hebben leuke logo’s, zoals de Go gopher.

Er’s Scratch, een taalonderwijs voor kinderen. Het doesn’t gebruik tekst staat veel op alle, maar li’l coders om pictogrammen te bewegen op het scherm en monteren programma’s zoals Lego. Het logo is een glimlachende kat op twee benen.

En er dan’s Lisp, die didn’t komen met een logo toen het eerst in de jaren 1950 werd voorgesteld, maar nu heeft een community gemaakte vijf-eyed vreemdeling die een vlag met zijn slurf. Lisp is een klassieke taal. Er zijn een aantal talen dat gewoon autoriteit, elegantie—canonieke computer talen.

En een daarvan is C. De meeste van de populaire talen lijken erg op het. C’s de facto logo is, nou ja, de letter C. C heet C, want het kwam na de andere taal. Die taal werd B. genoemd

3.3 Het belang van C

Fotograaf: Jeremy Liebman voor Bloomberg Businessweek

C is een eenvoudige taal, simpels als een shotgun die kan blazen je voet. Hiermee kunt u elke laatste onderdeel van een computer te beheren—het geheugen, bestanden, een harde schijf—dat is geweldig als je’re zorgvuldige en gevaarlijk als je’re slordig. Software gemaakt in C staat bekend als snel. Wanneer u C compileren, het doesn’t gewoon een stelletje machinetaal in één keer te worden; er zijn veel stappen aan het maken van het werkelijk, belachelijk snel. Deze worden optimalisaties genoemd, en ze zijn te programmeren wat lacunes zijn om belastingen. Denk aan C als een soort van een plain-gesproken grootvader die opgroeide vangen bevers en geserveerd in verschillende oorlogen, maar kan nog steeds doen 50 pullups.

Hier is de ur-tekst van computational zelf-introductie:

Die zal worden opgesteld en lopen, print “Hallo Wereld!” naar het scherm. Laat’s een programma schrijven waarin je het een getal x en het drukt alles uit de kwadraten van de getallen van 1 tot x—precies het soort praktische, handig programma dat altijd wordt weergegeven in de programmering tutorials om de behoeften van mensen die dringend nodig hebben een lijst van de pleinen aan te pakken.

Om dit programma op een Macintosh compileren, ik redde het als squares.c en opende Terminal.app en typte:

En het produceerde:

Die loopt van de GNU C Compiler In recente versies van XCode de GCC opdracht is een alias voor clang. Dankzij @kdungs ​​op GitHub en produceert een standaard bestand genaamd a.out. die ik liep op de command line, 13 tot en met mijn vierkante nummers, en pesten te krijgen voor mij. Als ik wilde om de code te veranderen, zou ik de opdrachten uit te voeren, en het programma zal dienovereenkomstig aan te passen.

dit isn’t grote code door een stuk. 14 Je hoeft alleen maar een beetje scheel om te zien dat er kleine, herhaalbare eenheden die in elkaar passen op een bepaalde manier. Er’s een functie genaamd vierkanten. Dat’is het belangrijkste onderdeel. Je voert het een nummer, een integer. Dan telt het van 1 tot en met die integer en met elke tellen het kwadraat van dat getal wordt afgedrukt. Dan drukt het een nieuwe regel. Gedaan.

De Linux kernel is geschreven in C. De software die uw printer is aangesloten op uw computer zou kunnen worden in C. De webservers die dienen-up van uw webpagina’s worden vaak in C. Het schriftelijke’is ook een goede taal voor het schrijven van andere talen—Python, PHP, Perl en zijn geschreven in C, net als vele anderen. C is een taal die u gebruikt voor het bouwen van systemen; het heeft dezelfde rol in de informatica dat Latijns deed onder Renaissance academici. Jij hebt gewonnen’t voldoen vaak een serieuze beoefenaar van de digitale kunst die doesn’t ten minste een passerende vertrouwdheid. De meer serieuze geleerden zijn vrij vloeiend.

Maar vergeet niet dat de lijst van populaire talen? C ++? Doelstelling C? C #? Java? Wat veel mensen code dagelijkse is eigenlijk niet C, maar een van de vele Vulgates. Voorstanders van deze talen te maken verschillende argumenten in hun voordeel; ze beter zijn voor grote groepen, “programmering in de grote.” Deze talen, zeggen ze, organiseren code in bibliotheken die deelbaar, herbruikbaar, en minder kans op pijn en lijden veroorzaken. Dit zijn objectgeoriënteerde aanpassingen van C.

3.4 Het Corporate Object Revolution

als jij’het re gaan om te begrijpen hoe code werkt in een zakelijke omgeving, moet u begrijpen wat objectgeoriënteerd programmeren is.

Er zijn vele definities. ik’ll waden in en zorgen voor mijn eigen en het gezicht van de gevolgen. Objectgeoriënteerd programmeren is, in zijn essentie, een bestand voor de code. Zoals iedereen die’s ooit een netwerk gedeelde map—of georganiseerde een fysieke archiefkast—weet, zonder een goede gedeelde bestand uw kantoor zal imploderen. C, mensen zeiden dat in de jaren 1980 en ’Jaren ’90, is een geweldige taal! Een uitstekende taal! Maar het doesn’t echt laat je dingen te organiseren. Eindig je met al deze functies. Het’is een puinhoop. Ik bedoel, we hebben dit datastructuur voor onze klanten (naam, adres, enzovoort), en we hebben al deze functies voor het manipuleren van die gegevens (update_address. Send_bill. DELETE_ACCOUNT), maar het ding is, die functies aren’t met betrekking tot de gegevens, behalve door de naamgeving. C doesn’t hebben een consistente manier om dingen te noemen. Wat betekent dat het’is moeilijk om ze later te vinden. Object-georiënteerd programmeren gaf programmeurs een geweldige manier om dingen te noemen—een middel voor het opbouwen van een bibliotheek. Ik zou kunnen noemen (baan) update_address op een foto van een hond of een internetadres. Deze benadering is slordig en gevaarlijk en leidt tot bugs (onze voorouders met redenen omkleed, en niet zonder precedent), en het maakt het moeilijk te programmeren met grote teams en bijhouden van alles.

Dus wat als, Whaaaat wanneer we een doosje genaamd Customer gemaakt (noem het een “klasse,” zoals in de taxonomische betekenis, als een klant een subklasse van de soort mens, dat een subklasse van zoogdier, enz.), en we de gegevens en methoden voor klanten in die box. (En box het’s letterlijk net “ public class Customer lt; gt; ” en alles in het lt; gt; betrekking op die bepaalde klasse.)

Ik bedoel, je wouldn’t zelfs nodig om te zoeken binnen het strafschopgebied. U’d gewoon downloaden een groot aantal klassen, alle genesteld in elkaar, de studie van de beschikbare, openbare methoden en de verwachte gegevens, en beginnen met de programmering. He jij’zou zeggen, laat’s zet een aantal gegevens in onze object, neem een ​​aantal gegevens uit. Elke keer als we een nieuwe klant maken wij een nieuw exemplaar van onze klasse. Code kan een zwarte doos, met tentakels en draden te steken, en u don’t noodzaak—don’t wilt—kijkt binnen het strafschopgebied. Je kunt gewoon een paar dozen naast elkaar, raken hun tentakels samen, en kijken hun eldritch paring.

Dit werkt heel goed, in theorie.

De archetypische objectgeoriënteerde programmeertaal is Smalltalk, gemaakt door een kliek van de genieën bij Xerox PARC in die instelling’s meest glorieuze van de gloriedagen. Na jaren van de zwangerschap, werd Smalltalk geboren in 1972, hetzelfde jaar als C, en gegeleerde rond 1980. Het werd geïnspireerd door veel van de grote ideeën in de informatica, maar ook door Platonism, door celbiologie, en door een voorganger taal genaamd Simula, de eerste object-georiënteerde taal, die per zijn naam is ontworpen om … simuleren dingen. Terwijl C werd gecreëerd binnen de New Jersey onderzoeksfaciliteiten (Bell Labs) van een industrieel monoliet (AT&T) aan heersende problemen oplossen, Smalltalk is aan het verre Californië buitenpost van verschillende industriële monoliet, Xerox, de problemen van de verre toekomst lossen. Zo Smalltalk vertegenwoordigt de wereld anders dan C.

Smalltalk heeft een grappige naam en een vriendelijke houding, maar de specificaties rende naar 700 pagina’s. Het was een groot systeem. C gaf je een abstractie over de gehele computer, die u helpen het geheugen en de processen in de machine te beheren. Smalltalk gaf je een abstractie over alle van de werkelijkheid, dus je zou kunnen beginnen met de wereld te delen in klassen en methoden en dergelijke. Waar C geprobeerd om het gemakkelijker maken om de computer dingen te doen, Smalltalk geprobeerd om het gemakkelijker maken om de menselijke dingen te doen.

dit isn’t beter of slechter. Het’is gewoon anders. Hier is wat Smalltalk code:

Hij drukt dat de korte zin in de Transcript Venster op de gebruiker’s-scherm. Het transcript is een object—en hier’is het ontvangen van een bericht (vertonen 🙂 met een argument—dat wil zeggen ingang—“Hallo,” etc. U typt dat in, selecteert u deze met je muis (zelfs in de vroege jaren 1980), en vertel de computer uit te voeren. Het compileert net dat beetje van de code en voegt het toe aan de rest van het draaiende systeem. Het ziet er als volgt uit:

Tal van ramen met elkaar praten. Elk venster is, nou ja, een object. En in plaats van programmeren het en het samenstellen van het programma, dan loopt het, je gewoon duiken in deze levende, ademende, window-full-omgeving, en beginnen met het maken van nieuwe objecten die berichten naar andere objecten te sturen. Als je te redden waar je bent, en terug te komen vijf jaar later, nou ja, alles zal precies hetzelfde uitzien.

Het ding is, kan al die dozen worden gemanipuleerd. Ze’opnieuw alle objecten. Het’is bijna te machtig: De grenzen die duidelijk zijn in de meeste talen—tussen data en code, tussen bestanden en executables, tussen het besturingssysteem en applicaties, tussen de gesloten en open software—al die grenzen worden fuzzed door het ontwerp. Smalltalk is een visie op de computer als zijn eigen, inheemse medium. Het gehele systeem kan worden gewijzigd door iedereen. De dominante versie heet Squeak (logo: leuke muis), en een gemoderniseerde versie heet Pharo (logo: vuurtoren). Beide zijn gratis en eenvoudig te downloaden.

Als een middelmatig programmeur vind ik de Smalltalk milieu fascinerend, maar het trekt me nooit helemaal door het het kijken glas. Op een dag zal ik’ve mezelf, ik beloofde’ll te lezen (of magere opzettelijk) de enorme Smalltalk specificatie uit de jaren 1980—een rudimentaire tekst en een grootse poging om de werkelijkheid te organiseren langs computer principes. Het probleem is dat Smalltalk vereist dat men niet alleen een manier van werken, maar ook een filosofie van de wereld, waar alles wordt georganiseerd in een hiërarchie van klassen vast te stellen. Ik ben dol op spelen, maar ik struikel meestal terug naar meer bekende benaderingen. Omdat het een pleitbezorger voor Smalltalk is een beetje alsof je erg in Sloveens bioscoop of free jazz. Sommige van de voorstanders zijn in het bijzonder briljante mensen. ik’ben niet één van hen.

Koetjes en kalfjes’s geschiedenis wordt vaak omschreven als iets tragisch, omdat veel van de beste ideeën nooit de cultuur van de code doordrongen. Maar het’s nog steeds rond, heeft nog steeds de gebruikers, en iedereen kan Squeak of Pharo gebruiken. Ook—

  1. Java is een objectgeoriënteerde taal invloed van C ++, die op een virtuele machine (net als Smalltalk).
  2. Objective-C, per haar naam, vastgelopen C en Smalltalk samen met geen excuses.
  3. C # (uitgesproken “cis”) Is gebaseerd op C en beïnvloed door Java, maar het is gemaakt door Microsoft voor gebruik in zijn .NET framework.
  4. C ++ is een objectgeoriënteerde versie van C, hoewel de wortels meer Simula.

Het aantal digitale dingen bedacht in 1972 die nog in regelmatig overleg is vrij klein. (Het was het jaar van The Godfather en Al Green’s Let’s Stay Together.) De wereld corrumpeert de zuivere visie van goede ideeën. Ik verklaar Smalltalk een razende, wild, wereldwijde succes.

3.5 Kijk Hoe groot en Weird Things Get met slechts Python

Python is een zeer interessante taal en heel populair, ook. Het’s objectgeoriënteerde maar niet stijf. 15 En het’s algemeen begrepen gemakkelijker dan C voor programmeurs te gebruiken, omdat het meer abstracties voor programmeurs voor hergebruik. Het verbergt veel van de eigenaardigheden van de computer en vele details over berekening wordt uitgevoerd. Python is meestal langzamer dan C; Dit is de prijs die je betaalt voor al die zoete niveaus van abstractie. In de overgrote meerderheid van de gevallen is dit verschil in snelheid echt doesn’t uit, ongeacht hoeveel mensen protesteren. Het’is slechts van betekenis als je’ve opgebouwd systeem Python en een deel daarvan loopt miljoenen of miljarden malen, vertragen de computer—en dus meer middelen nodig om aan de slag zijn werk gedaan.

Wat dan? Betekent dit dat je nodig hebt om weg te gooien al uw Python en opnieuw beginnen in een andere taal? Waarschijnlijk niet. Python heeft een reputatie als een “lijm taal,” wat betekent dat je kunt code te nemen van andere, lager niveau talen zoals C, C ++ en Fortran 77 (ja, net als in het jaar 1977), code die dicht bij de machine en bekende geluid te zijn, en schrijf “wrapper functies.” Dat wil zeggen, kunt u de oudere, snellere code insluiten in de nieuwere, langzamer, maar gemakkelijker te gebruiken systeem.

Een groot deel van dit proces is in het inpakken van de oude code in mooie, goed georganiseerd Python functies. In veel opzichten is het idioom van een taal is niet alleen hoe het eruit ziet, maar ook hoe het voelt. Sommige talen benadrukken beknoptheid. Sommige ondersteunen lange, complexe functies, terwijl anderen u aanmoedigen te breken functionaliteit in kleine stukjes. Stijl en gebruik stof; Soms programmeurs raden Strunk & Wit’s The Elements of Style —dat’klopt, die over het Engels. De focus op efficiënt gebruik resoneert met programmeurs. Het idioom van een taal is een onderdeel van de gemeenschappelijke identiteit.

Python is niet de lijm voor alles, dat wel. Het’is moeilijk om verbinding te maken met Java, maar past C hand handschoen. Er’is een versie van Python ontworpen om de binnenkant van Java voeren en te gebruiken Java-code. Dat’s genoemd Jython. Als u wilt een versie die werkt met Microsoft’s .NET, kunt u met IronPython.

Maar daar’is een andere manier om al deze activiteiten rond Python interpreteren: Mensen vinden het geweldig en willen dat het overal te werken en alles doen. Ze’ve bracht tienduizenden uren maken dat mogelijk en dan gegeven de vrucht van hun arbeid weg. Dat’s een sterke indicator. Een enorme hoeveelheid werk gestoken in het maken van Python zowel praktisch als aangenaam om te gebruiken. Er zijn tal van conferenties, frequente updates code, en levendige mailinglijsten. Je kiest een taal niet alleen op zijn technische merites, of zijn speediness, of de werkgelegenheid die het kan opleveren, maar ook op de cultuur.

Python mensen, over het algemeen, zijn vrij cool.

4 Waarom zijn Coders Boos?

Er’is een website gewijd aan taal benchmarks, om te meten hoe snel bepaalde talen run ten opzichte van anderen, en bevat dit voorwoord af te wenden rellen: “Dit zijn niet de enige compilers en tolken. Dit zijn niet de enige programma’s die worden beschreven kunnen. Dit zijn niet de enige taken die kunnen worden opgelost. Dit zijn slechts 10 kleine voorbeelden.” 16

Het lijkt soms dat iedereen in codering heeft een rundvlees. Je voelt het aankomen van de webpagina’s. Er zijn een heleboel van defensieve postscripts toegevoegd in reactie op de verontwaardiging. “Mensen hebben krachtig gereageerd op deze post,” ze’ll lezen. “Ik wilde niet te impliceren dat Java zuigt.”

Talen agenda. Mensen glom op hen. Blunt talk wordt gezien als een goede kwaliteit in een ontwikkelaar, een teken van een “techniek mindset”—spugen elk advies zo snel mogelijk, hoe eerder een technische consensus te bereiken. Verwachten dat je te horen’re verkeerd; verwachten om andere mensen te vertellen dat ze’het mis. (Mannelijke woede, botweg uitgedrukt, is een deel van de industrie.)

Codering is een cultuur van blurters. Dit kan snelle beslissingen opleveren, maar straft mensen die behoefte hebben om rustig te componeren hun gedachten, het belonen van fast-twitch denkers die efficiënt harrumph. Programmeur sollicitatiegesprekken, die vaak ook abstract en zinloze vragen die onmiddellijk op een whiteboard moet worden beantwoord, typeren deze cultuur. Regelmatige bijeenkomsten kunnen snipen wedstrijden over dingen geworden dat don’t materie. De verkorte term daarvoor is “bikeshedding.” (Who cares wat de kleur van de fietsenstalling is geschilderd? Well …)

Code cultuur is heel, heel breed, maar de geografische en culturele kern is de Silicon Valley-motor van de vooruitgang. The Valley mythologiseert jonge genieën met grote sommen. Tot zijn eer, deze cultuur werkt; haar schande, het doesn’t werk voor iedereen.

Op elk moment kan wel wat nieuw ding vlam vatten en verstoren de tribale eb en vloed. Instagram werd in Python geschreven en verkocht voor $ 700.000.000 Δ De originele versie van dit verhaal ten onrechte gesteld $ 2000000000. Dankzij @straup op GitHub. dus Python had een moment van glorie. De volgende mind-blowing app zou opdagen, geschreven in een aantal nieuwe taal—en beginnen met het nemen van iedereen die meer serieus. Binnen 18 maanden na uw vaardigheden zou kunnen zijn, als niet helemaal waardeloos, verdachte.

Ik was in een vergadering eens waar iemand zei: “Hoe lang duurt het om vast te stellen dat?” Een persoon, die’D geweest bij het bedrijf voor de komende jaren, zei: “Drie maanden.” Een nieuw persoon, die’d net teruggekomen van een wereld van snel bevoorraad cloud microservices, zei: “Drie minuten.” Ze waren beiden correct. Dat’is hoe verandering komt in deze wereld. Eerst langzaam, dan op de voorpagina van Hacker News.

Programmeurs carve out een strook van cognitieve grondgebied voor zichzelf en ga naar conferenties, en toch weten ze hun positie kwetsbaar is. Ze krijgen defensief als ze horen iemand suggereren dat Python is beter dan Ruby, omdat [voeg 500-commentaar berichtenthread hier]. Is de volgende grote golf ergens zwelling, en zal het wegspoelen Java als het gaat? Will Go veroveren Python? Moet ik JavaScript leren om winstgevend te blijven? Programmeurs zijn vaak boos omdat ze’re vaak bang. Wij zijn, de meesten van ons, struikelen rond met slechts een paar kaarsen om de weg te leiden. We kunnen’t altijd zien het hele systeem, dus we moeten het uit te puzzelen, beetje bij beetje, in het donker.

4.1 De Legende van de 10x Programmer

Programming heeft twee cultus van het genie en de jeugd. Eén van de manieren waarop Google zijn reputatie verworven werd door het inhuren van vers-onder ogen gezien whizzes. Ph.D.s van Stanford, Cal Tech, MIT en Carnegie Mellon waren tafel stakes. De ware programmeur begon code in utero en heeft een IQ van ten minste 10.000.

Er’s zelfs de legende van de 10x programmeur, een persoon die is gewoon dat veel productiever dan het proletariaat. Er zijn aanwijzingen dat sommige programmeurs zijn veel productiever dan hun al even ervaren collega’s; maar andere studies hebben dit te zijn techniek folklore gevonden. Tien is een orde van grootte in een discipline die gebruik maakt van orden van grootte om dingen te schatten. Tien is een aantrekkelijke en dus verdachte nummer.

Dat gezegd hebbende, de industrie trekt ontegensprekelijk briljante denkers. ik’heb een paar ontmoet. Je kunt ze vertellen’re briljant omdat hun oplossingen maken je aan het lachen en gaan, “Oh, had ik nooit gedacht.” De vonken in hun hersenen springen sommige vrij grote verschillen. Zij weten meer dan de handleidingen. Sommige mensen zetten de tijd in; Sommige mensen kunnen’t helpen, maar geobsedeerd; en sommige mensen zijn gewoon zo verdomd slim dat het’is een openbaring te zijn om hen heen.

Droom van 10x programmeurs als je wil. Maar ik wouldn’t uithouden hoop dat men zal komen om te werken voor je. Jij kan’t ze huren om dezelfde redenen kunt u’t coachen de Chicago Bulls en u aren’t vaak opgeroepen om de datum supermodellen van uw favoriete geslacht. Ze’bent niet interviewen op uw crappy bedrijf voor uw crappy job. Ze’opnieuw niet van plan om te komen en te redden van uw website; ze’opnieuw niet van plan om u een app die snorren legt op foto’s; ze’gaan niet naar je luisteren als je ze de kans om de volgende Facebook te bouwen bieden, want als ze bestaan, zijn ze bezig met het bouwen van de echte Facebook. soms zijn ze’opnieuw na te denken over hogere wiskunde, of hoe om te helpen een zelfstandig rijdende auto het beheer van de ethische keuze tussen die over een eekhoorn en het besturen van een klif. Of zij’re rijden hun fietsen, of het krijgen echt in aardewerk. Het’moeilijk om een ​​beter leven dan een grote programmeur, zolang’re vrij van lichamelijke of psychische aandoening.

Programmeren is een taak die intense focus beloont en kan gedaan worden met een kleine groep of zelfs in een isolement. Het’s komen tot een vereniging met Asperger hebben’syndroom; veel programmeurs zullen zeggen dat ze “ergens op het spectrum,” hoewel deze zelf-diagnoses een beetje eigenbelang kan zijn—zijn obsessief wordt gezien als een goede zaak door vele programmeurs. En sommige banen programma’s zijn succesvol geplaatst mensen op het autisme spectrum in de programmering carrière. Maar het idee dat mensen met Asperger’s maken goede programmeurs is als verdacht zo het idee dat vrouwen aren’t nature geneigd om codering; beide aannames, een term geliefde van het internet te gebruiken, zijn problematisch, en diep reducerende. Loopvlak licht: Allerlei mensen kunnen programmeurs. En autistische mensen kunnen allerlei loopbaan.

Als 10x programmeurs bestaan, ze vereisen 10x managers op 10x bedrijven. Er’is geen schande in het niet 10x jezelf.

Voor een echt begaafd programmeur, het schrijven van code is een neveneffect van het denken. Hun vaardigheden isn’t in syntax; het’is hoe ze tijd en berekening waarnemen. Zij kunnen de gevolgen van hun acties sneller zien dan de volgende programmeur; zij besteden minder tijd in het donker. Hun code heeft nog steeds bugs, het moet nog worden geoptimaliseerd—ze’opnieuw niet zonder gebreken. Maar voor elke kaars we bezitten, ze hebben drie of vier zaklampen en een kaart.

4.2 Het ding over echte kunstenaars is dat ze—

Fotograaf: Boru O’O Brien’Connell voor Bloomberg Businessweek; Decorontwerp: Dave Bryant

productiviteit Enhancers

Een van de grootste risico’s schip is iets glanzend. Dit is waar talen zijn bijzonder riskant. Een ervaren en getalenteerde programmeur kan een taal in een week leren, maar een middelmatig men gaat veel langer duren. Ondertussen, spannende, interessante programmeertalen komen altijd met een lijst van benisons, beloften van de snelheid of de productiviteit of gewoon geluk. Nee echt. Geluk is een serieuze selling point voor talen, en de mensen zijn blog posts, waar ze analyseren hoe mensen bespreken code geschreven. Volgens een analyse door GitHub gebruikers Tobias Hermann. PHP-programmeurs zijn veel meer kans om het woord te gebruiken “haat” in hun Reddit opmerkingen dan Clojure-programmeurs; Clojure programmeurs zijn veel meer kans om het woord te gebruiken “koel” dan PHP-programmeurs.

Er zijn veel blog posts over hoe u uw manager over te halen om over te schakelen naar een nieuwe taal. Ervaren managers, die littekens dragen en waren zich vaak coders, worden beoefend loensen en hoesten en zeggen dingen als: “Nee, de omschakeling kosten gewoon te hoog op dit moment,” of, “Misschien kunnen we een twee weken durende proefproject doen als we de analytics rapporteren motor te bouwen.” 17

Dan schud de programmeurs terug naar hun status bureaus en klagen totdat het product wordt geleverd. Of anders ze gewoon stoppen, omdat Lord weet dat er banen die er zijn. Voor programmeurs, met name de jongeren, zijn er banen overal.

Managers en oude programmeurs hebben minder mogelijkheden. Het’s vaak beter om gewoon blijven werken en de scheepvaart, zelfs als de code begint lelijk om naar te kijken, ook al zijn er nominaal betere oplossingen, zelfs als de technische schuld 18 toekomt om je heen, want in een paar jaar alles zal veranderen. Misschien jij’ll krijgen bevorderd en de nieuwe manager zal de wil en het motief moeten verscheuren alles wat je deed, vloeken, en opnieuw beginnen (misschien met behulp van een nieuwe taal) met als doel het maken van iets veel eenvoudiger. Of de hele industrie zal spasme en alles wat je’ve gedaan zal moeten worden weg langs nieuwe lijnen toch gegooid en herbouwd. (Van desktop tot het web, van Web naar mobiel, van mobiel naar … quantum? Wie weet. Maar daar’is altijd wel iets.)

Ergens houdt het uit te werken. De industrie is altijd de belofte om zich te eten, om te komen met een paradigma zo perfect dat we allemaal kunnen stoppen met het verspillen van onze tijd en voer een wereld van pure digitale denken. Het gebeurt nooit.

4.3 We moeten nog steeds kiezen …

Negen weken in de re-architectuur, heb je TMitTB gevraagd om te komen door het kantoor en praat volgende stappen.

U’ve merkte dat zijn team is begonnen aan te kleden zoals hij. Een van de vrouwen is in hoge laarzen en heeft iets complex met haar haar gedaan. Ze’is het dragen van een zwarte leren jas. Niets opzichtig, maar koeler. Ze was eerder al Patagonië. Is dit hoe programmeurs kleden? Hoe hebben ze hun eigen executive stijl te krijgen?

“PHP,” hij zegt, “goed—het is wat het is. Het team had een goede tijd op PHP [wereld]. Maar ik denk dat het ding dat we misschien hebben geleerd …”

hij doesn’t uitspreken van de beugels, natuurlijk, maar de kosten zijn goedgekeurd, en dat’is hoe ze schrijven het, tussen haakjes. Het’s goed ze hadden een goede tijd, want het u $ 25.000 kosten om ze naar die conferentie te sturen en ze in hotels en hen voeden, en je hebt geen idee of dat was goed besteed geld of niet.

“… is dat we echt nodig hebben om te bewegen af ​​van PHP.”

Oh. Goed. Er’is uw antwoord.

“Wij’re allemaal over eens dat PHP isn’t de taal voor de volgende vijf jaar.”

“Welke zou je zeggen?”

“Ay, daar’s het wrijven,” zegt hij, en je hebt om jezelf eraan te herinneren dat hem niet met uw echt gezicht op dit moment. Als hij Hamlet citeert opnieuw, hoewel …

“Goed,” je vraagt, “welke taal wil je gebruiken?”

Hij kijkt in de war. “Ik bedoel, het doesn’t stof,” hij zegt. “I don’t schrijven van de code.”

Wie dan wel? En realiseer je je, op dit moment, is het antwoord nee is.

4.4 Waarom zijn er zoveel talen?

Een van de beroemde documenten in de informatica, “The Next 700 programmeertalen,” door P.J. Landin, vertelt over de 1700 talen al verrommeling van de rekenkracht landschap. Het werd voor een wetenschappelijk tijdschrift geschreven en heeft een heerlijk accurate, koan-achtige opening statement: “De meeste programmeertalen zijn deels een manier van uiten dingen in termen van andere dingen en deels een basisset van bepaalde dingen.” Het werd gepubliceerd in 1966.

Een paar van die 1.700 talen zijn nog steeds bij ons. 19 Cobol, bijvoorbeeld, een legendarische en nog veel gehate, zeer uitgebreide taal die is nauw verbonden met de “2000” probleem. Als informaticus Dijkstra beschreef het eens, “Het gebruik van Cobol verlamt de geest; het onderwijs moeten dan ook worden beschouwd als een strafbaar feit.”

Hoewel niemand zingt de lof (behalve voor banken—banken houden Cobol), het draait nog steeds op mainframes. Fortran, voor formule Vertalen System, door John Backus en LISP, voor List Processor, door John McCarthy (uiteindelijk werd lowercased aan Lisp, net als UNIX werd Unix), werden beide ontwikkeld in de jaren 1950, in de tijd van Desk Set – stijl computers gevoed door enorme tapes of papieren kaarten, en beide zijn nog steeds in gebruik. De door Fortran verleende macht was inherent aan zijn naam—het ziet er bijna komisch computerish:

“Een groot deel van mijn werk is afkomstig van lui. ik wist’t net schrijven van programma’s, en zo, toen ik werkte op de IBM 701, het schrijven van programma’s voor het berekenen van raketten trajecten, begon ik te werken aan een programmering systeem om het gemakkelijker maken om programma’s te schrijven.”
— John Backus, 1979, in Think, het personeelsblad van IBM

Dat’is hetzelfde programma dat we hebben geschreven in C, pagina 50, degene die ooit-zo-nuttig een lijst van vierkanten afgedrukt. U kunt kiezen uit de rare metallic geur van grote rekencentra met verhoogde vloeren gewoon door te kijken naar een aantal Fortran. 20 Het blinkt uit in de numerieke informatica nodig door wetenschappers en nog steeds beats C voor sommige taken. Natuurkundigen en astronomen zoals (nou ja, leven met) Fortran.

Lisp, is echter een ander soort beest. Het bleek direct uit wiskundig onderzoek. Er zijn veel dingen die Lisp eigenaardig gemaakt. Sommige mensen zeggen dat het staat voor “Veel overbodige haakjes.” 21

Terug in de jaren 1980, terwijl de Fortran programmeurs werden uit het optimaliseren van wapen opbrengsten nucleaire, Lisp programmeurs probeerden om een ​​robot te halen een teddybeer of schrijf een sonnet te krijgen. Maar op een dag, de mensen die de financiering van delen van de wereld liep kwam, schreeuwde, “Sluit het allemaal naar beneden,” en trok een grote rode knop (die waarschijnlijk in Fortran werd geprogrammeerd). Het Lisp programmeurs, die nog moest een menselijk brein te simuleren of automatisch produceren van een grote sonnet, bleven met enige spijt. 22 Het Lisp machine bedrijven begonnen af ​​te sluiten en verkopen hun activa. De studenten hadden meer kans om te leren C of Java. Lisp werd een waarschuwend verhaal, zijn unieke, geïntegreerde visie op de computer van een dierbare herinnering van een betere tijd. En toch …

Er’s nog heel wat Lisp in de wereld, zoals in de lucht-reisgegevens systeem gebouwd door de ITA, die werd overgenomen door Google. Wanneer u Google “vlucht van New York naar Berlijn,” ITA is er op de achtergrond loopt Lisp. Er was een tijd dat Lisp keek doder dan oude Griekse te zijn: een mooi filosofisch systeem, maar niet praktisch.

Lisp vervaagt de lijn tussen code en data in de manier waarop het mogelijk functies te verwijzen naar zichzelf. Het werkt, maar het’is een beetje veel voor een gewone programmeur vragen om de wereld te zien als oneindig programmeerbaar. We moeten duidelijkheid.

Dat betekent dat we echt nodig hebben om te praten over de gegevens.

5 De tijd je hebt bezocht het e-mailadres Validation Meeting

In het belang van het begrip van meer over hoe dit allemaal werkt, en met een open uitnodiging van TMitTB volg je een vergadering van de programmeurs.

Twee van hen zijn te laat, en moedig je de ene al vragen aanwezig om wat uit te leggen’s gaande. Hij verzamelt al snel de grenzen van uw informatie door middel van een reeks vragen, te beginnen met, “Weet je wat een webpagina is?”

Hier’s wat hij laat zien: Als u een e-mail adres en een naam te verzamelen, kunt u een webpagina met behulp van HTML. 23

Hier’s de HTML—wijzigingen aanbrengen hieronder!

En dat ziet er als volgt uit:

Op vandaag’s agenda: Hoe om ervoor te zorgen dat de inschrijving is een positieve ervaring voor gebruikers, maar ook een veilige ervaring voor het bedrijf. De vragen worden besproken, de programmeur vertelt u, zijn langs de lijnen van, “Waar gaat u deze gegevens te zetten? Zal je het in een tekstbestand? Wat ga je ermee doen? Hoe gaat u gevolg aan te geven?”

Voer de resterende twee programmeurs. Een programmeur, die is senior, neemt haar plaats op het whiteboard. …

Programmeur A: “Laat’s gewoon beginnen met e-mail validatie.”

En daarop gaat, na whiteboard whiteboard, onderbroken door het geluid van een mobiele telefoon’s fake sluiter van de camera. “Moeten we om bij te houden hoe vaak ze blijven’ve al gemaild?” “Hoe kunnen we verwijderen van e-mails als ze eenmaal’opnieuw in het systeem?” “Wat gebeurt er als iemand binnenkomt dezelfde e-mail twee keer?”

Programmer A, de leider, lijkt zeer professioneel. Ze’s op het whiteboard, krabbelen, het wissen, krabbelen, wissen. Lijsten, pijlen, dozen, lijnen. Ze schreef Russen? op het bord. Maar na een uur je je realiseert: Dit is gewoon e-mail. Één veld. Een klein beetje van de gegevens. u haven’t raakte zelfs nog namen. Wat gebeurt er als de gebruiker één naam? Wat gebeurt er als Bono of Cher zich aanmeldt voor een account? Wat als het’is de Chinese Bono? Willen we sign-ups in het Chinees toe te staan? Welke browsers hebben we nodig om te ondersteunen? Mis het call center mensen moeten in staat zijn om accounts te beheren?

Het’s moeilijk om niet te denken aan tonnen contant geld branden.

Programmeur B is het invoeren van de dingen in een tracking systeem, het creëren van problemen, het toewijzen van taken aan mensen. Een vlaag van e-mail verzonden opdrachten komt uit deze bijeenkomst. Programmer C is jong en vervelend en erg programmery, maar de anderen lijken hem aardig goed genoeg.

Hoe zorgen we ervoor dat creditcards geldig zijn, dat de fysieke adressen echt zijn? Zullen we financiële transacties zelf uit te voeren? Welke externe systemen zullen integreren met onze systemen? Wie zal de verkoop verslagen te krijgen? we stoorden’t praten over de mailinglijst software. we stoorden’t praten over wachtwoord lengte, het aantal letters en symbolen die nodig zijn voor wachtwoorden veilig zijn, of dat onze wachtwoord strategie op deze site past in de algemene veiligheid profiel van het bedrijf, dat is de verantwoordelijkheid van een andere verdeling.

Dus dit is het werk. Het gaat op voor dagen.

Het wordt omgezet in specificaties en user stories, vervolgens beoordeeld met TMitTB, die op dit moment is weg op een conferentie (maar je vertelt hij’s dolblij je hebt bezocht deze vergadering).

Niet een regel code wordt dit hele proces geschreven.

5.1 Wat is de relatie tussen Code en Data?

Gegevens komen van overal. Soms komt van derden—Spotify importeert grote stapels van muziekbestanden van platenmaatschappijen. Soms data wordt door de gebruiker aangemaakt, zoals e-mails en tweets en Facebook-berichten en Word-documenten. Soms zijn de machines zelf te maken van gegevens, net als bij een oefening Fitbit tracker of een Nest thermostaat. Wanneer u werkt als een coder, je praat over data de hele tijd. Wanneer u websites te maken, moet u gegevens uit een database te krijgen en leg ze in een webpagina. als jij’re Twitter, tweets zijn gegevens. als jij’re de IRS, fiscale aangiften zijn gegevens, onderverdeeld in velden.

Data management is het probleem dat de programmering wordt verondersteld te lossen. Maar natuurlijk nu we computers overal we blijven genereren meer data, die meer programmering vereist, enzovoorts. Het’is een hel van een probleem met geen einde in zicht. Dit is de reden waarom mensen in de technologie zo veel geld te verdienen. Niet alleen doen ze verkopen oneindig reproduceerbaar woordjes, maar ze verkopen zo velen van hen dat ze eigenlijk hebben om te komen met nieuwe categorieën van oneindig reproduceerbaar woordjes alleen maar om te behandelen wat er is gebeurd met de laatste partij. Dat’is hoe we eindigden met “big data.” ik’ve om big data conferenties geweest en ze zijn verpakt.

5.2 Waar komt gegevens Live?

Het’is zeldzaam dat een grote taak is nooit erg ver van een database. Amazon, Google, Yahoo. Netflix, Spotify—hebben allemaal grote, krachtige databases.

De meest voorkomende is de relationele database, met behulp van een taal genaamd SQL, voor Structured Query Language. Relationele databases vertegenwoordigen de wereld met behulp van tabellen, die rijen en kolommen. SQL ziet er als volgt uit:

Impliceren dat er’is een tabel met de naam boeken en een rij in die tabel, waarin een boek woont met een ID van 294 ID’s zijn belangrijk in databases. Stelt u zich eens een boekhandel database. Het heeft een klant tafel die klanten geeft. Het heeft een tafel boeken die boeken bevat. En het heeft een slimme in-between tabel van de aankopen met een rij voor elke keer dat een klant een boek gekocht. 24

Hartelijk gefeliciteerd! Je net gebouwd Amazon! Natuurlijk, terwijl we proberen om een ​​boekwinkel te bouwen, we eigenlijk bouwde de dood van boekwinkels—dat lijkt te veel gebeuren in het bedrijf. Je uiteengezet om iets leuks te doen en uiteindelijk vernietigen van veel dingen die vóór kwam.

Relationele databases getoond in de jaren 1970 en nooit meer weggegaan. Er’s Oracle, natuurlijk. Microsoft heeft SQL Server; IBM heeft DB2. Ze spreken SQL en werken op dezelfde wijze, met net genoeg verschillen te duur om te schakelen.

Oracle maakt je betalen duizenden dollars om de commerciële onderneming database te gebruiken, maar meer en meer van de wereld draait op gratis software databases zoals PostgreSQL en MySQL. Er’s zelfs een klein database genaamd SQLite dat’is zo klein, dus goed gedragen, en zo permissively gelicentieerd dat het’is nu in principe elke smartphone, beschikbaar voor apps om hen te helpen laden gegevens op te slaan en. U hebt waarschijnlijk een krachtige SQL-database gedreven in je zak nu.

5.3 De taal van bedienden

Als je loopt een aantal programmeurs en zeggen: “Grote corporate programmering,” ze’ll denk aan Java. Ga naar een van de populaire codering vacaturesites, zoals dice.com, en zoek naar openingen in New York City—bijna 2.000 resultaten voor Java op een recente zoekopdracht; 1195 JavaScript; 930 voor Python; 344 voor Ruby. Slechts twee voor Lisp.

Java is een programmeertaal die werd geboren in Sun Microsystems (R.I.P.), het product van een team onder leiding van een goed beschouwd programmeur genaamd James Gosling. Het’s object-georiënteerd, maar het ziet er ook veel op C en C ++, dus voor mensen die die talen begrepen, het was vrij makkelijk op te pikken. Het werd bedacht in 1991, uiteindelijk drijvend op het internet op een enorme wolk van marketing in 1995 uitgeroepen tot het antwoord op elke wee die ooit bezet programmeurs gehad. Java liep op elke computer! Java zou lopen recht in uw webbrowser, in “applets” (Binnenkort genoemd “crapplets”), En zou waarschijnlijk via het web in de tijd. Java! Het liep heel langzaam in vergelijking met de meer traditionele talen zoals C. Wat was het voor? Java! Ze hadden ook het netwerk aangesloten computer terminals genoemd JavaStations. Java! Kleiner Perkins Caufield & Byers kondigde zelfs een $ 100.000.000 Java fonds in 1996. Maar na al die opwinding, Java soort … hing uit voor een tijdje. De toekomst didn’t eruit Zon zei dat het zou.

Java running “binnen” een webbrowser, als een plug-in, nooit goed gewerkt. Het was traag en onhandig, en wanneer het geladen voelde alsof je balanceert op de rand van een ramp, een paranoia die vaak werd gevalideerd als uw browser bevroor en crashte. -Java-enabled sieraden, bedoeld om te dienen als een soort digitale sleutel / credit card / ID-kaart, had ook een lage kans op succes. Maar Java is gratis te downloaden en ontworpen handig voor kleine en grote teams gelijk te zijn.

Hier zijn enkele feiten over Java om u te helpen begrijpen hoe het langzaam over de hele wereld nam door de pure kracht van het zijn redelijk goed.

Fotograaf: Joanna Mcclure voor Bloomberg Businessweek; Prop Stylist: Amy Henry

Het was een grote taal. Het kwam met een ton van de code er al, de “class library,” waarin alle klassen en methoden die u had’d nodig hebben om een ​​database te praten, omgaan met complexe documenten, doen de wiskunde, en praat met verschillende netwerkdiensten. Er waren een heleboel klassen in die bibliotheek te wachten om te worden omgezet in objecten en tot leven gebracht.

Het automatisch gegenereerde documentatie. Dit was enorm. Iedereen zegt code verdient uitstekende documentatie en documentatie echt toe doet, maar dit is een principe meestal bewezen in de strijd. Nu kun je een tool genaamd javadoc draaien. en het zou u webpagina’s dat alle klassen en methoden vermeld te maken. Het was belabberd documentatie, maar beter dan niets en vrij gemakkelijk te verbeteren als je de tijd om schoon te maken uw code nam.

Er waren een heleboel Java handleidingen, workshops en seminars, en certificeringen. Programmeurs kunnen lessen nemen en proeven officieel worden gecertificeerd in vele technologieën. Java-programmeurs hadden een bijzonder breed scala om uit te kiezen.

Het liep op een “virtueel” machine, die dat Java betekende “liep overal,” wat betekende dat je het zou kunnen draaien op Windows, Mac of Unix-machines en het zou hetzelfde gedragen. Het was een uitzonderlijk goed ontworpen compromis. Waardoor het perfect voor grote bedrijven. Zoals de jaren 2000 bleef gaan, werd Java meer populair voor applicatieservers. Het creëren van een content management systeem voor een niet-gouvernementele organisatie met 2.000 medewerkers? Java’s prima. Het aansluiten van tienduizenden mensen in een bedrijf aan elkaar? Java. Behoefte om een ​​bank te praten helpen om een ​​andere bank elke dag om 17:01 Java. Grafieken en diagrammen, grote stapels papier, vijf jaar projecten? Java. Niet spannend, nauwelijks draagbaar, maar erg voorspelbaar. Een taal voor het bouwen van hele grote dingen voor hele grote plaatsen met veel grote teams.

Mensen klagen, maar het werkt. 25

5.4 In het kort op de grote onderwerp van Microsoft

Natuurlijk, als je Microsoft, dit is onaanvaardbaar. Jij kan’t hebben een ander bedrijf kruipen in uw banken en ondernemingen met deze domme taal. Jij kan’t moeten mensen kiezen om dingen te draaien op een virtuele machine wanneer ze het moet worden uitgevoerd op Windows-machines, als God en Bill Gates bedoeld.

Microsoft Windows 95 Video Guide met Jennifer Aniston en Matthew Perry van Friends

Don’t ooit Microsoft tellen. Haar grote zakelijke vaardigheid is altijd geweest om de pure weirdness van computer ideeën te nemen en te vertalen voor bedrijven, in de taal van de Global Business Leadership. Wat wordt besproken in deze kwestie, biedt Microsoft ten minste één ervan. Statisch getypeerde, scripting, data-driven, functionele—de naam van uw dubbelzinnig bijvoeglijk naamwoord, en Microsoft zal iets zijn dat levert dat voor je verkoopt, en u kunt Windows-code te schrijven in het en leef een Windows leven. En dit is niet kleinering; Microsoft-producten kan net zo goed of beter dan iets anders op de markt.

5.5 Liquid Infrastructuur

“Onderneming” is een gevreesde woord onder programmeurs, omdat enterprise programmering is een hoop werk zonder al te veel om te laten zien. Vergeet healthcare.gov, de eerste versie die een totale ramp was? Perfect voorbeeld van de onderneming codering. Tegelijkertijd, programmeurs respecteren grote systemen—wanneer ze werken. Wij respecteren de ambitie van de enorme zware machines die grote klodders code. We zijn opgegroeid het lezen over supercomputers. Grote ijzeren is cool, zelfs als de toekomst lijkt te zijn enorme wolk platforms hosting met tonnen van goedkope computers.

Maar Java is ook veel gebruikt bij Google. Het’is een taal voor plaatsen zoals General Electric en Accenture. deze aren’t startups, maar als hun product schema slip, neemt ook hun inkomsten, en ze zijn verplicht aan de openbare markten. Gigantische data-gedreven organisaties zijn gestructureerd rond code, rond het downloaden van software gemaakt. Maar dat doesn’t betekenen hun teams zijn enorm—Amazon, bijvoorbeeld, is beroemd om zijn twee-pizza regel: “Nooit hebben een vergadering waarin twee pizza’s couldn’t voeden de hele groep.”

Deze bedrijven hebben culturen die weten hoe om software te maken. Ze hebben hele afdelingen gewijd aan het testen. Het is van belang omdat er veel bewegende onderdelen, velen onzichtbaar.

Academische onderzoekers leveren vaak dingen die in principe werken, maar don’t hebben interfaces. Zij moeten hun stellingen te bewijzen, te publiceren, en ga naar het volgende ding. Mensen in de vrije software gemeenschap vaak code om een ​​jeuk krabben en laat die code in de digitale commons, zodat andere mensen kunnen veranderen en manipuleren. Hoewel vaker wel dan niet dit proces nergens gaat, na verloop van tijd een aantal projecten tot de verbeelding van anderen en deel gaan uitmaken van de infrastructuur van de wereld.

Java, interessant, de winst uit dit alles. Het’s ontworpen voor grote projecten op het hoofdkantoor en heeft de infrastructuur om hen te steunen. Het’is ook een nuttige taal voor middelgrote taken. Dus de bibliotheken die je nodig hebt om dingen te doen—beeldverwerking, in te loggen op bestanden, full-text search—blijven verschijnen op een gestage clip, het verbeteren van de standaard bibliotheken of verdringen ze helemaal.

Clojure werd gemaakt door Rich Hickey, die besloot dat hij wilde een nieuwe, moderne versie van Lisp. 26 Lisp kan oud zijn voor een taal, maar het’s nog steeds vereerd als een klassiek model voor de gedachte, zoals een Braun scheerapparaat of een Eames stoel voor de geest. Hickey gewerkt aan Clojure voor vele jaren, uiteindelijk aan te passen om te draaien op de JVM. Dit was een dramatische keuze, omdat het betekent dat Clojure hadden toegang tot het geheel van de Java-klasse-bibliotheek.

Nu loop je naar het kantoor en zitten op uw computer en schrijf een beetje Lisp-achtige code, zeer elegant en weloverwogen en trim en comfortabel, maar heeft u toegang tot duizenden en duizenden ongelooflijk goed doordacht en volledig functioneel gratis bibliotheken die u kunt gebruiken om uw werk te doen.

Alles wat Java kan doen, kan Clojure doen. En omdat het’is gebouwd bovenop de JVM, kan het doen op elke computer. Er waren al Lisp editing tools die er zijn, en het was vrij gemakkelijk om ze aan te passen voor Clojure. Het was verbonden met Java als een remora aan een haai. Of beter gezegd, is het’is een remora gehecht aan een remora, omdat de JVM zelf is een nep-machine die in echte machines.

Clojure is geliefd, maar niet op grote schaal gebruikt. Misschien zal het steeds populairder geworden. Het verschijnt in interessante plaatsen. Het’s gebruikt bij Wal-Mart Stores voor het verzamelen en beheren van de ontvangst van gegevens, bijvoorbeeld. Het werd geport naar de wereld van Microsoft en loopt recht binnen Excel. Het’is de gekste dingen. Neem een ​​spreadsheet. Binnen in de spreadsheet is een aantal Clojure code gewoon weglopen, het aanpakken van de verschillende cellen en kolommen. Iemand maakte een versie die compileert (nou ja, transpiles) moet JavaScript, dus blam, Clojure’s die in uw webbrowser. Eigenlijk die versie ClojureScript genoemd.

Het punt is dat dingen vloeistof in de programmeerwereld, vloeistof op een wijze die andere industrieën don’t lijken te zijn. Talen zijn vloeibare infrastructuur. U downloadt een paar programma’s en, whoa, opeens heb je een werkende Clojure omgeving. Dat is eigenlijk de Java Runtime Environment. Je pakt een oude pc die’s overleefd het nut ervan, zet Linux erop, en opeens heb je een krachtige webserver. Nu kunt u deelnemen aan geheel nieuwe culturen. Er zijn bijeenkomsten, bijeenkomsten, conferenties, blogs, en de mensen chatten op Twitter. En wordt u verwelkomd. Ze zijn blij met de nieuwe bloed.

Java moest C verdringen en draaien op smart sieraden. Nu loopt applicatieservers, gastheren Lisplike talen, en is de kern taal van het Android besturingssysteem. 27 Het draait op de miljarden van de dingen. Het won. C en C ++, dat het werd ontworpen om te verdringen, won ook. Een heleboel dingen blijven winnen omdat computers worden steeds meer overvloedig. Het’s raar.

5.6 Off the Shelf

Een paar weken later, toen hij’s in het kantoor en voor zijn ontmoeting, vraag je TMitTB of er’is een manier om meer off-the-shelf componenten te gebruiken, een manier om je weg te kopen uit dit.

Het verzenden van een e-mail

Als u uw JavaScript applicatie nodig om automatisch te verzenden iemand een e-mail, kun je iets als:

  1. Google NPM e-mail;
  2. Volg de eerste schakel; zien dat er’is een veel voorkomende module simpelweg genaamd “e-mail” die werd 5015 keer per maand gedownload;
  3. Typ NPM installeren e-mail van uw command-line;
  4. Romen de webpagina voor de module op zoek naar voorbeeldcode;
  5. Kopieer en plak de code;
  6. Wijzig het een beetje;
  7. Voer de code door het intikken van knooppunt myscript.js;
  8. Staren in verwarring wanneer er niets gebeurt;
  9. Breng een halve dag of meer configureren van uw e-mailserver, zodat het eigenlijk stuurt e-mail;
  10. Stuur uzelf zo veel e-mail die uw bedrijfsnetwerk blokken die u als spam;
  11. Op te geven die voor een dag;
  12. Probeer de e-mail code de volgende dag uit te voeren;
  13. Herhaal de duizenden keren met een vertrouwd gevoel van angst;
  14. Als het eenmaal werkt, check it in de code repository, stuur dan een e-mail aan het team, en de status van de code in de issue tracker te werken;
  15. Beloof jezelf dat je documentatie en tests morgen zal schrijven;
  16. schrijf nooit deze dingen.

Hij maakt een gezicht. Soort van, zegt hij, maar als je’opnieuw maken van een systeem dat kan worden geïntegreerd in de systemen eromheen en de onderneming een reeks van dergelijke systemen, niets echt uit de kast. Er zijn gereedschappen en pakketten en bibliotheken, en als u een wit helemaal die u al gebruikt goed gedocumenteerde, gratis code voor zaken als e-mail validatie, maar dat ondervangt alleen zoveel.

“Alles is extreme gevallen,” hij zegt. “Testen en de rand gevallen.”

Je komt tot de conclusie: De wereld is gebroken.

5.7 Hoe zit het met JavaScript?

Vergeet Netscape, de eerste grote commerciële webbrowser? In 1995, zoals Java werd bloeien, Netscape werd het oplossen van een probleem. Het weergegeven webpagina’s die niet erg levendig waren. Je kan een leuke cartoon van een aap op de webpagina, maar er was geen manier om de aap te dansen wanneer u er met de muis verplaatst. Uitzoeken hoe dat te realiseren was de taak van een taal ontwikkelaar genaamd Brendan Eich. Hij ging zitten en in een paar weken creëerde een taal JavaScript genoemd. JavaScript heette eerst LiveScript en later omgedoopt. Dankzij @putztzu op GitHub

JavaScript’s relatie met Java is zwak; de sterkste binding tussen de talen is de marketing koppeling van hun namen. En de vroege geschiedenis van JavaScript was ongeïnspireerd. Dus de aap kon nu dansen. Je kon dingen te doen om de cursor, dingen knipperen wanneer een muis ze aangeraakt.

Maar zoals browsers verspreid en het web groeide van een document-delivery platform in een software-platform voor de levering, JavaScript geworden, misschien wel de meest gebruikte taal runtime-28 in de wereld. Als je wat JavaScript-code schreef, kan je het overal waar het web was run—overal.

JavaScript puttered al jaren in de woestijn, zoals Java deden, ook. Maar zonder de vastberaden steun van een rechtspersoon als Sun.

Dan, ongeveer tien jaar geleden begonnen mensen te praten over Ajax 29 —het idee dat je echt software in een webpagina, niet alleen een document, maar een programma dat het echte werk kon doen zou kunnen bouwen.

Dingen kunnen reageren en veranderen al naar gelang ingangen. Je kon je software op deze manier te distribueren naar honderden miljoenen mensen, en JavaScript zou werken voor hen. Het was niet’t zo beheerst als Java, was het veel trager dan native gecompileerde C, en het had een verschrikkelijke gebrek aan regeltjes. En toch: Gmail, Google Maps, Flickr, Twitter en Facebook. Elke pixel op een webpagina kan nu worden gemanipuleerd; het soort worden gewijzigd, de woorden kan verplaatsen; knoppen kunnen worden ingedrukt.

Zoals bij elke beroemdheid, er is een hele industrie gewijd aan spackling haar gebreken en maken het er goed uitzien. Er zijn boeken over de “goede delen” van JavaScript; Er zijn bibliotheken die het gemakkelijker en consistent programma te maken, ook, zoals jQuery, die kan draaien de vele regels code nodig om een ​​paragraaf te laten verdwijnen in een enkel $ ("p.optional").verbergen(); .

Hier’s sommige JavaScript, de kwadratuur van een aantal nummers voor u:

In een grote en plotselinge golf, duizenden ontwikkelaars begon te Node.js gebruiken en modulair bibliotheken. Als je eens wist hoe JavaScript gewerkt aan een webpagina, dan kun je laten werken op een server. En een paar interessante eigenschappen van de taal, die het goed voor het schrijven van software die veel gelijktijdige gebruikers afhandelt. JavaScript luisterde veel dingen tegelijk in een webbrowser: Een muis beweegt; een toets wordt getypt; wat informatie komt vanuit het netwerk. Op een server kan het om tientallen of honderden mensen luisteren allemaal tegelijk en geef ze de informatie die zij gevraagd.

5.8 Wat’is het absolute minimum dat ik moet weten over PHP?

U kunt een site up and running in PHP in een paar minuten te krijgen, en dat’is het probleem. Het wordt gebruikt om de verschrikkelijke keuze die je gemaakt toen je nodig om iets gedaan op het web te krijgen, maar in toenemende mate JavaScript heeft vervangen als de standaard verschrikkelijke keuze.

PHP staat voor Personal Home / Forms Interpreter. PHP staat nu voor “PHP: Hypertext Preprocessor” Dankzij @deltamualpha op GitHub Het idee was dat wanneer u uw webpagina’s geladen, zou de PHP-code uit te voeren voordat de pagina ging naar het internet. En PHP kan, laten we zeggen, controleer dan of je was aangemeld Als u was, zou het u laten zien uw top secret accountgegevens.; en als je weren’t, zou het te zeggen, “Log alstublieft in.”

Ik weet dat veel mensen die in PHP programmeren, en ze zijn slim, goede mensen. PHP bevoegdheden Etsy en Facebook. Het bevoegdheden Wikipedia, voor God’s sake. WordPress. Uit alle Web’s pagina’s, een enorm percentage is gemaakt met PHP.

Fotograaf: Jeremy Liebman voor Bloomberg Businessweek

Codering in PHP voor een leven is geen doodvonnis. Veel mensen hebben rijke gekregen uit PHP. Het betekent gewoon veel knippen en plakken, en een heleboel uitstapjes naar Google om erachter te komen waarom dingen aren’t werken.

Arme, verdrietig, onzalige, ongelooflijk effectief, massaal succesvolle PHP. Het lezen van PHP-code is als het lezen van poëzie, de poëzie je eerste jaar van de universiteit schreef.

Ik heb zo vele honderden, misschien wel duizenden uren programmeren in PHP, toen ik niet’t weet wat ik aan het doen was en ook niet PHP. Het herladen van webpagina’s tot mijn vingers pijnlijk waren. (Ik kan uw sympathieke snikken horen.) Alles was altijd kapot, en de mensen waren altijd hacken van mijn sites.

PHP. I don’t zou willen dat het geen kwaad. ik’m blij om te zien hoe goed het’s gedaan voor zichzelf. We hadden een aantal goede tijden samen. Ik trek gewoon’t ooit willen teruggaan.

6 Hoe Zijn Apps Made?

Het’is een enorm te downloaden, meer dan 2 gigabyte, of ongeveer de grootte van een uur van DVD-kwaliteit video. Xcode is het hart van Apple. Het’is niet alleen hoe het bedrijf schrijft software,’is het hulpmiddel voor iedereen die wil om software te schrijven voor de Mac of iPhone. 33

Misschien jij’opnieuw te beginnen om een ​​aantal strengen hier te zien. Denk aan de manier waarop de Smalltalk omgeving werkte, een scherm met een bos van de ramen? Er zijn krachtige echo’s in Xcode.

Er zijn andere werkwijzen—Ik heb de neiging om de meeste van mijn code in een teksteditor met een zwarte achtergrond, veel minder te zien op het eerste gezicht, maar eigenlijk net zo complex—maar dit hier is een aantal ernstige code leven. U vult een aantal velden, draad een aantal dingen samen (echt, soms’s gedaan door het aansluiten van virtuele draden in virtuele holes), en beginnen met het coderen.

Wanneer iemand van Apple staat op het podium en kondigt een aantal nieuwe ding dat eindigt met “kit,” zoals ResearchKit of HealthKit—of WatchKit, de set van routines specifiek voor de Apple Watch—Xcode is wanneer deze kits terechtkomen, volledig gedocumenteerd, worden gebruikt om software.

Sommige functies zijn gereserveerd voor de fabrikant. Je weet hoe Apple is wervend dat je iemand kunt bijhouden’s hartslag met behulp van een Apple Watch? Apple hasn’t gedocumenteerd hoe het nog te doen, niet voor de wereld. Misschien is het bedrijf maakt zich zorgen dat u’ll misbruiken of andere manier. Misschien hartslag controle vereist een zorgvuldige batterij management, en omdat het horloge al batterij problemen, Apple wil om te voorkomen dat het nog erger door te laten iedereen daar. Het’is het waarschijnlijk dat mensen proberen te achterhalen hoe om toegang te krijgen dat hartslag API nu, dat wel. Dat’is gewoon de manier waarop mensen zijn.

Apple is echt goed in dit alles. Het publiceert richtlijnen interface en geeft mensen tools voor het regelen van app-interfaces op voorspelbare wijze die eindgebruikers zullen bekend zijn te vinden. Het zet de stroom waarmee te gaan. 34

Laat’zeggen dat u’re maken van een podcasting applicatie, en een audio-bestand te spelen is een belangrijk kenmerk. Grote. Maak een object van de klasse AVAudioPlayer en voeg een knop op het scherm, dan sluit die knop om de code zodat wanneer geklikt, op de knop het bericht verzendt “spelen.”

Er’is veel aan de hand in een keer, dus je wilt laat het aan het besturingssysteem om bij te houden waar de ramen zijn te houden. Het’s tot een IDE om u te helpen uw ideeën aan te sluiten in deze enorme, enorme wereld met tienduizenden methoden, zodat u een nummer kunt afspelen, terugspoelen een lied, bijhouden als de song werd gespeeld (wat betekent dat u ook moeten zich bewust zijn van de tijdzones), of bijhouden van de titel van het nummer (wat betekent dat je nodig hebt om bewust te zijn van de taal van het lied’s titel—en weten of het van links naar rechts of van rechts naar links weergegeven).

U moet ook weten de lengte van het nummer, wat betekent dat je een mechanisme voor het extraheren van looptijden van muziekbestanden nodig. Zodra u dat—zeg het’s in milliseconden—je nodig hebt om het te delen door 1000, toen 60, om minuten te krijgen. Maar wat als het lied is een podcast en 90 minuten lang? Wilt u meer te verdelen om uren te krijgen? Zoveel variabelen. Gah!

Ik denk dat je problemen op te lossen na alles te hebben. De IDE doesn’t doen alles voor je.

Het grootste commercieel inzicht van de technologische industrie is dat als je een computeromgeving controleren, kunt u de markt te verplaatsen. U kunt de manier waarop mensen doen dingen veranderen, de manier waarop ze naar muziek luisteren, video’s bekijken en te reageren op de reclame. Mensen die werken op technologiebedrijven worden verondersteld om een ​​idee te nemen en vermenigvuldigen met een paar miljoen mensen, wat een paar miljard dollar.

Soms is dit het resultaat van corporate ambitie: Java was heel erg een product Zon, tot aan de class library; hetzelfde geldt voor C # voor Microsoft. Maar een groot deel van de code in de wereld is vrij beschikbaar, gemaakt door gulle vrijwilligers gedurende tientallen jaren om hun eigen behoeften te dienen. Het geven en nemen tussen bedrijven en programmeertalen is complex. Sommige taal ontwikkelaars zijn ingehuurd om te werken aan hun open-source talen; Ga en Python zijn gefinancierd, in verschillende mate, door Google; en de maker van PHP werkt op Etsy.

De vele Button Bezels van Apple

In Mac OS X, is er’is een klasse met de naam NSButton. Het slim de klikken van de muis. Een programmeur maakt een knop en vertelt wat ze moeten doen wanneer iemand op het klikt. Een programmeur schrijft ook de code die een bezel zet.

Druk op de knop: De meest gebruikte knop

Gradient Button: Meestal onderstaande lijsten of rasters

Afgeronde Rect Button: Gebruikt voor het filteren in Mac Finder en Mail

Afgeronde Geweven Button: Ontworpen voor werkbalken alleen

Geweven Button: Het gebruik is een mysterie

Inbouw Button: Gebruikt als een schakelknop alleen

Inline Button: Nieuwe stijl van de drukknop of indicator

Apple en Microsoft, Amazon en Google: de fabriek fabrieken. Hun API’s zijn de producten van vele duizenden uren van de arbeid van vele programmeurs. Denk aan het werk betrokken. Iemand moet de SDK te beheren. Honderden programmeurs nodig om de code te schrijven voor het. Mensen moeten de documentatie te schrijven en het organiseren van de demo’s. Iemand moet om te vechten voor een functie te krijgen gefinancierd en afgewerkt. Iemand moet ervoor zorgen dat de vertaling in het Duits is voltooid en dat er aren’t geen gênante fouten die gaan virale op Twitter. Iemand moet de software die verder gaat in het maken van de IDE werk eigenlijk te schrijven.

De moderne OS is een feest van wonderen: fast video, muziekspelers, emmers knoppen. Apple kan de beste denkbeeldige knoop maker in de geschiedenis. Alleen de randen zijn een werk te aanschouwen. Vandaag zijn er 15 bezel stijlen, van NSThickSquareBezelStyle naar NSSmallSquareBezelStyle. 35 Freedom. (Een soort. Zij’re nog net bezels.) Dingen die wordt gebruikt om arbeid en zorg nodig hebben—het tonen van een kaart, het draaien van een gigantische 3D landschap—kan nu met een paar regels code.

Als iedereen gaat naar Apple’s jaarlijkse Worldwide Developers Conference in San Francisco en ze staren rapturously als sommige man in een untucked, dure overhemd vertelt over “kerngegevens,” dit is de context. Op het podium, de presentatie van haar Kits, Apple is het herschikken van abstracties, zeggende: Kijk naar de nieuwe realiteit die we’ve gedefinieerd, de manier waarop moeilijke dingen zijn nu eenvoudig en saaie dingen kunnen kleurrijk zijn. Uw vertrouwen in ons platform en uw toewijding van duizenden uren van de tijd zijn niet misplaatst.

Ze’ve gooide variaties op dit jaarlijks voor 30 jaar.

In Xcode kunt u alles te compileren met één opdracht en opduikt uw software voor het testen. U kunt de knop die u hebt gemaakt te zien. Je moet klikken. Hij hunkert naar klikken. Het schreeuwt in een schrille signalering stem als een nano kat op een microfence. Alles binnen een computer smeekt alles anders. Het’is een racket. U klikt op de muis, en de knop kat is eindelijk tevreden. Nu kan de computer het volume te verhogen, de kleur, of breng het praten paperclip. Destiny voldaan en, na vele rondes van deze testen voltooid.

Wanneer uw app wordt gedaan, kunt u deze te verkopen in een app store. En als gebruikers zijn enthousiast om uw app te gebruiken, zij’ll gemotiveerd om meer apps te kopen. Lussen op loops, voeden in elkaar, de hoofdstad die toekomen aan de schatkist van de patiënt software reuzen. Een ecosysteem. “ecosysteem” is een ander woord vernederd, vooral gelet op wat we doen houden met de echte, fysieke om ons heen. Maar als er een paar honderdduizend mensen zijn het verhogen van hun kinderen en het maken van dingen voor 100 miljoen mensen, dat’s wat zij noemen het.

Kansen zijn, als je’re het doen van elke vorm van programmeren, vooral Web programmering, u’ve een kader goedgekeurd. Overwegende dat een SDK is een uitdrukking van een bedrijfsfilosofie, een framework is meer als een product te trekken. Wilt u tijd besparen? Moe van het schrijven van de zelfde oude code? Benieuwd naar de volgende nieuwe ding? U gebruikt een grafisch kader voor grafische toepassingen, een web framework om webapplicaties, een netwerk kader om netwerkservers bouwen bouwen bouwen. Er zijn honderden kaders die er zijn; zowat elke taal heeft er een.

Django Reinhardt, gitaarvirtuoos en naamgever van het Django framework

Een populaire web framework Django is, die wordt gebruikt voor codering in Python. Instagram werd bootstrap op. Als je gaat zitten voor de eerste keer met Django, de opdracht uitvoeren "startproject," en het maakt een map met een aantal bestanden en configuratie binnen. Dit is uw project directory. Nu heb je toegang tot bibliotheken en diensten die bijdragen aan en verbeteren van de standaard bibliotheek. 36

Stel dat we’zijn nog steeds het maken van onze boekhandel, de Amazonesque een met de relationele database die we een paar pagina’s terug begonnen. Met Django, lopen we het "startproject" opdracht. Je zou kunnen vertellen om een ​​app genaamd boekhandel beginnen. Dan jij’d “het opzetten van uw modellen,” wat betekent dat u’d beginnen te bepalen hoe uw gegevens eruit ziet, met behulp van Python’s idioom, dat het kader zal vertalen in de database-OZO.

Dus nu kunnen we een boek catalogus te maken. (Uiteraard moeten we auteurs en dergelijke toe te voegen.) De ongelooflijk mooie is dat je met een paar lijnen van de configuratie heb je een volledig functionele, werkende webgebaseerde artikel editor; te weten:

Herinner die kwesties over het invoeren van e-mailadressen? Als je Django gebruikt, kunt u gebruik maken van " email-veld," en velen van hen worden opgevangen. Ditto veel van de bezorgdheid over de veiligheid die zich voordoen bij het bouwen van websites, de typische misstanden mensen plegen. Je hebt in een zwembad met vele duizenden andere programmeurs die het raamwerk delen, gebruiken en verbeteringen voor te stellen is getreden; die tutorials te schrijven; die schrijven plug-ins die kunnen worden gebruikt om de taken in verband met wachtwoorden, bloggen, het beheren van spam, het verstrekken van kalenders, het versnellen van de site, het creëren van discussiefora, en de integratie met andere diensten te bereiken. U kunt hierbij denken in termen van de architectuur.

Prachtig! Geweldig! Dus’is de keerzijde? Nou, frameworks lock je in een manier van denken. U kunt kijken naar een website en, met een geoefend oog, te gaan, “Oh dat’s een Ruby on Rails plaatse.”

Programmeurs praten over “voortijdige optimalisatie”—overthinking uw code voordat je weet wat de echte problemen zullen zijn—en beschrijven van mensen die programmering overthink als “architectuur astronauten.” Er’s een andere tendens, NIH (“not invented here”), Die afkomstig is van een veel.

Frameworks kan voel me een beetje beledigend, omdat ze uw problemen te anticiperen en worden gebruikt door duizenden mensen. Ze impliceren dat die van jou komen vaak voor, alledaagse problemen, in plaats van speciale, verbazingwekkende mysteries die een ware genie nodig hebben om op te lossen.

De adviezen van een kader zijn sterk, maar niet zo sterk als een SDK. Die zijn strak gebundeld, vaak commerciële, en komen met een PR trompetten stralen, vooral wanneer zij’re van Apple of Microsoft. Kaders hebben de neiging om te worden afgeleid uit frustratie en op eerste release zijn gebonden met tape en stuwkracht op het web met een blog post. Van daar ze overleven—of niet. Er zijn webapplicatie kaders voor elke grote taal; één Wikipedia vermelding 37 toont bijna 40 verschillende kaders voor Java alleen en bijna 30 voor PHP.

Het merendeel van de goede kaders zijn gratis, vrijgegeven aan problemen op te lossen en breng eer en invloed om hun makers, in plaats van grote rijkdom en controle. Ze verspreiden autonoom. Mensen zien een video tutorial laten zien hoe je een blog te maken in een paar minuten. Kopieer dan ze dat werk en zeggen: “Dat was gemakkelijk,” en tonen hun vrienden. Websites gaan wonen, en programmeurs praten over hoe snel ze ontwikkelden deze websites.

6.2 Wat is debuggen?

Programmering Er zijn veel manieren om iets iets creëren vernietigen. Een verdwaalde karakter is alles wat’s vereist. Stel dat u een puntkomma te vergeten of gebruik een geaccentueerde “é” ergens, maar de code is niet voorbereid op een dergelijke bijzonderheid—KABOOM! Of twee dingen samen te voegen, maar men is het cijfer 4 en de andere “4” als een string, zoals je zou kunnen gebruiken om te zeggen “4 en 20 merels gebakken in een taart.” Om de computer, dat “4 en 20” geen numerieke betekenis.

Dit soort dingen echt gebeurt, en een deel van het werk is te beseffen dat 4 + 20 is 24 en 4 + “20” is “420”. De aaneenschakeling operatie moet hebben geproduceerd "420", Zonder periode binnen de aanhalingstekens. Dankzij @castaway op GitHub

De programmering is debuggen. Het’is de verwachting dat de dingen gewonnen’t werk. Dit is niet iets wat mensen brengen, net zoals ze don’t brengen hun medische geschiedenis op de eerste date. De meeste talen hebben constructies gebouwd in voor het vangen van mislukkingen, vangen ze als wilde dieren, het onderzoeken van hen, en, nou ja, ze uit te roeien. Na verloop van tijd, als de relatie tussen u en een programmeertaal bloesems, kom je om te beseffen dat wat echt karakteriseert een taal is niet wat het doet, maar hoe het u vertelt wat brak. De meeste van uw programmering leven zal worden besteed aan het proberen te achterhalen wat uitbrak, en als de computer helpt u, misschien kunt u let op uw kinderen spelen voetbal.

Toen ik de programmering begon voelde ik dat elke keer dat het programma crashte, I’d mislukt. Ik vond mezelf kruiperige, wanhopig, niet in staat om vooruit te komen. Er’s zelfs een roman van Ellen Ullman, The Bug. over de angsten en sociale complexiteiten die ontstaan ​​wanneer een ernstige bug is moeilijk te vinden.

Uiteindelijk, hoewel, heb ik geleerd om te dienen. Ik laat me afglijden naar de computer, om de wiskunde die ik ken, de dingen die ik begrijp over soorten en categorieën en lijsten en syntaxis te onthouden. Soms bugs veroorzaken foutmeldingen pop-up; Soms veroorzaken ze het programma op te geven de geest en stoppen plotseling; soms zijn ze verstrikt raken in vreselijke loops en vul het geheugen en stikken alle middelen van de computer totdat het moet worden hernieuwd. Dat’s heet een stack overflow. Soms verzoek gaat te hard, bijvoorbeeld, die zichzelf zo vaak dat de stapel, die een eindige hulpbron, vult en kan’t neem het niet meer. Vandaar de naam van de website stack overflow, waar de programmeurs gaat om vragen te beantwoorden en helpen elkaar op te lossen bugs. Het’s de 62 meest bezochte website in de wereld, trailing Craigslist door een paar plekken.

Willekeurig geselecteerde item uit stack overflow, om u een voorproefje van de programmering te geven:

Hoekige 1.3 + ui-router + generator-hg-poly inbedding genest (?) Keer bekeken werkt niet

TheOncomingCode lijkt te zeggen dat hij’s met behulp van de angularjs kader in JavaScript en een ander stukje code genaamd ui-router. Afgaande op zijn naam, helpt het laatste opgezet routes naar onderdelen van een gebruikersinterface aan te pakken—dat wil zeggen, het helpt bij het beheren hoe u uw gegevens te bekijken.

Maar wacht, het blijkt dat de generator-hg-poly is eigenlijk generator-ng-poly, die … Oh man. Ik ging en keek naar dat gereedschap, en het beschrijft zichzelf als een—zet je schrap—“Yeoman generator voor modulaire angularjs apps met Gulp en optionele Polymer ondersteuning,” die, ik bedoel, kom de hel op. Maar weet je wat? In voor een pond. Laat’is dit te doen.

Een zoektocht naar Yeoman zegt het’s een steiger tool, wat betekent dat het weinig mappen voor uw Web apps die u op weg helpen programmering. Nuttig. …

We weten wat Angular is; het’is een raamwerk. …

Slok, zijn website zegt, zal “automatiseren en uw workflow te verbeteren.” U kunt intuïtief, met behulp van context aanwijzingen, dat het’is een tool die je helpt om software te bouwen. Een of andere manier. U’d nooit weten dit uit de zalm achtergrond op haar site, en soms moet je gewoon te krijgen, zodat, zo moe. …

Polymeer een “web Components” bibliotheek, wat betekent dat het geeft je weinig herbruikbare code onderdelen die u kunt gebruiken op uw webpagina’s—schuifladen en drop-down menu’s, knoppen, etc. OK.

Dus wat we nu weten is dat de combinatie van Angular, ui-router, Yeoman, Gulp en Polymer is een of andere manier niet werkt voor TheOncomingCode. Al deze dingen zijn tools die ontworpen zijn om het gemakkelijker om code te maken. Maar ze voeren hun eigen complexiteit. Deze persoon probeert te maken van een webbrowser iets te doen in JavaScript, en het’s crapping out.

Iemand kwam in om deze vraag te beantwoorden, ook. “In staat zijn om de header staat te gebruiken in het land van herkomst,” schreef stack overflow gebruiker Matt Tester, “ze zullen moeten [worden] genest (geketend). Dus, het’is niet duidelijk, maar u kunt veilig met één staat de ouder van het andere in aparte bestanden / configs vanwege de manier waarop registratie werkt.” Zo. Daar ga je. Dat oplost.

JavaScript is snel bewegende nu. Te veel van wat je vandaag kennen zal nutteloos zijn in zes maanden. Elk zwaar bevochten feitje over absoluut de beste en meest principiële manier om de taal te gebruiken zal stinkende dierentuin vuilnis aan het eind van het jaar. En sommige sniveling, bebaarde man-peuter zal iets worden op zoek naar de rechterkant met zijn bleke, buzzword-geïnfecteerde ogen en onhandig mompelen, “Ja, nee, wow, het zegt dat je een heleboel Gulp en hoekig, maar ik’m raden u don’t gebruiken Fleejob of Grimmex de Snurt extensies? (Diepe zucht). Ik’m gewoon niet zeker als je’re gaan als om hier te werken.”

Hoe dan ook, dat’is een vraag over stack overflow.

6.3 Niets is gebouwd

Meer maanden gaan door. Niets is gebouwd. De oude website blijft, toont zijn leeftijd, razend iedereen. Druk neemt toe. Druk van boven en onder. De re-architectuur is mislukt. De nieuwe CTO is een charlatan. TMitTB heeft blijkbaar bracht al zijn tijd op conferenties en geen tijd daadwerkelijk werkt.

Deze dingen zijn niet hardop uitgesproken; het’is niet dat soort bedrijf. Dingen gezegd door het oog van broodjes en haalt zijn schouders op in de gang, in de volgorde van adressen in e-mails en via BCC. U laat uw antennes werk. Je hoort woorden zoals “Boondoggle” en “laat” en zinnen graag “niet operationeel geluid.” Er’s veel over compliance en governance.

Eerder in je carrière, heb je misschien in paniek. In plaats daarvan, voel je je een gevoel van rust. U belt de CTO en TMitTB naar uw kantoor, zodra zij’weer terug in de omgeving. Ze komen in het kijken schaapachtig. De CTO wordt verstijfd, haar schouders stevig. TMitTB heen en weer geslingerd tussen schaapachtig en boos.

“Mensen geloven,” je zegt, wijzend naar boven, waar de C-suite is, “dat het tijd is om onze verliezen te beperken en afsluiten van dit project.”

6.4 Hoe werkt testwerk?

Als je in de buurt van programmeurs zweven, hoor je ze praten testen—het schrijven van tests, het passeren van de tests. sommige don’t zelfs programma totdat zij’ve schriftelijke de tests die de code die ze hopen te schrijven moet passeren. Dit is de zogenaamde test-driven design.

Tests zijn slechts code, natuurlijk. Zij controleren de functies in andere code. Ze lopen, je hoopt, automatisch, zodat u kunt nagaan of de dag’s werk je deed breekt dingen of niet.

Relentless testen is een manier om een ​​oogje op jezelf te houden en om te zorgen dat de andere persoon te maken’s bugs en je bugs don’t vinden elkaar een winterse avond als iedereen thuis bij de open haard en de crash van de server vlak voor kerst, het opzetten van allerlei automatische alarmen en het dwingen van de programmeurs in vreselijke verontschuldiging lussen met diep geërgerd echtgenoten.

Een van de beste geteste stukken code in de wereld wordt SQLite, dat de eerder genoemde databank’s waarschijnlijk op uw smartphone. Het werd ontwikkeld door Richard D. Hipp, die’s gewerkt aan het voor 15 jaar. Het’s volledig open, volledig gratis, en heeft 33.402 testen. Het’is een van de meest gebruikte stukken software en een van de meest gewaardeerde.

bugs aren’t de erfzonde van de programmering. Ze’opnieuw slechts een deel van het leven, zoals ongewenst lichaamshaar of politieke campagnes. De erfzonde van de programmering is vreemdgaan—het breken van andere mensen’s-code met je nieuwe functies, in een poging om de wijzigingen te jammen in de belangrijkste codebase voordat ze’re klaar. Geautomatiseerd testen isn’t alleen maar een manier om het hoofd af bugs; het’is ook een manier om te suggereren dat je respectabele code te schrijven, code die een saluut verdient.

6.5 En nu voor Something Beautiful

Naar mijn mening, versiebeheer is een van de mooiste dingen over programmeren. Het’is één van de code cultuur’gaven aan de wereld. Versiebeheer isn’t zoals “spoorwissel” in Microsoft Word. Dat’is een schandelijke gedrocht dat kan zelfs een krachtige computer stotteren, iets wat alleen een advocaat kon houden. Nee, versiebeheer is iets anders.

Wat als ik je vertel.

Java
Google, eBay, LinkedIn, Amazon

Robijn
Twitter, GitHub, Groupon, Shopify

Wat gebeurt er als je gaat om slechts een paar honderd duizend pagina serveren een maand? Dan jij’ve kreeg enorme ademruimte. u don’t moet te veel ingenieurs om de systeemarchitectuur te creëren. Je moet nog te plannen, maar in het algemeen kunt u een aantal blog posts te lezen en te volgen, samen met wat anderen hebben gedaan. U kunt vrij slordig zijn, om eerlijk te zijn. Nogmaals, elke taal te doen.

Wat als je wilt naar een live, van persoon tot persoon chatten op die pagina’s bevatten, en u verwacht dat duizenden mensen die chatten in een keer te gebruiken, allemaal met elkaar te praten? Nu jij’re dompelen je hand in dat godvergeten rivier. Maar dat is precies het probleem dat Go is ontworpen om op te lossen. Het’is een taal voor het creëren van zeer beschikbare servers die zo veel gebruik van de computer’s processor mogelijk. Het heeft andere functies als goed, maar dit is waar Go schijnt. Eigenlijk Node.js werkt vrij goed voor dat soort server, ook, en Clojure heeft zeker de capaciteit. Oh, rechts, Java werkt, ook. Als je echt nodig om, zou je zelfs doen in PHP.

Daarom is de keuze zo moeilijk. Alles kan alles te doen, en de mensen zullen je vertellen dat je alles moet gebruiken om alles te doen. Dus je moet uitzoeken voor jezelf wat voor team je hebt, wat voor soort kaders je wilt gebruiken, waar de mensen het meest productief kunnen zijn, dus ze zullen blijven hangen door de voltooiing van het project. Dit is moeilijk. De meeste plaatsen kan’t dit te doen. Dus gaan ze met de kleinste gemene deler—Java, PHP—omdat ze weten dat wanneer mensen vertrekken, zij’zult in staat zijn om meer van hen te krijgen.

En dat’s OK. De overgrote meerderheid van technologische projecten don’t vereisen origineel onderzoek, noch hebben ze nodig hebben verbazingwekkende technologische ontdekkingen. Alle talen ter discussie werken prima. Er zijn grote coders in alle van hen.

Maar de keuze van een van de belangrijkste programmeertaal is de meest belangrijke signaalfunctie gedrag dat een technologie bedrijf kan deelnemen aan. Zeg me dat je programmeren in Java, en ik geloof dat u ofwel ernstige of saai. In Ruby, en bent u geïnteresseerd in het bouwen van dingen snel zijn. In Clojure, en ik denk dat je slim bent, maar vraag me af of je schip. In Python, en ik vertrouw je impliciet. In PHP, en we zuchten samen. In C ++ of C, en ik knik nederig. In C #, en ik glimlach en neem aan dat we hebben niets gemeen. In Fortran, en ik vraag om uw veiligheidsmachtiging te zien. Deze talen bevatten hele beschavingen.

U kunt vertellen hoe goed code wordt georganiseerd vanuit de hele kamer. Of door loensen of uit te zoomen. De vorm van de code van 20 voet weg is ongelooflijk informatief. Clean code is idiomatische, zo kort mogelijk, voor de hand liggende zelfs als het’s niet zwaar gedocumenteerd. Informeel en vriendelijk. Zoals in Structuur en Interpretatie van computerprogramma’s (aka SICP) werd geschreven, de rudimentaire leerboek van de programmering onderwezen al jaren aan het MIT, “Een computer taal is niet alleen een manier om een ​​computer om bewerkingen uit te voeren … Het is een roman formele medium voor het uiten van ideeën over methodologie. Zo moet programma’s geschreven voor mensen te lezen, en slechts incidenteel voor machines uit te voeren.” Een geweldig programma is een brief van de huidige je toekomstige u of de persoon die uw code erft. Een royale humanistische document.

Natuurlijk is dit alles is mooi en bloemrijke; het moet werken, ook.

7.2 Welkom bij de Scrum

Op een dag ga je naar de pen waar ze de programmeurs te houden. Hun standup begint om 10:00 en sommige houden kopjes koffie. Ze eigenlijk staan. Meestal mannen, een paar vrouwen. Ze gaan rond de kamer, en elke persoon zegt wat hij deed gisteren, wat hij van plan vandaag te doen, en als hij geen blockers. Het merendeel van de mensen zijn in het kantoor, zodat ze’opnieuw doen van de standup in persoon; als mensen op reis bent, doen ze het over chatten. Twee mensen worden gekozen in de nieuwe medewerkers uit Boston en Hongarije, beide met sterke accenten. Ze vertellen hetzelfde verhaal als de rest.

“Gisteren heb ik gewerkt aan het account verwijderen gebruiker verhaal,” Boston zegt. “Nummer 265. Vandaag heb ik’ben het schrijven van de unit tests voor rekening verwijderen code. ik’ben niet geblokkeerd. Ik nomineren Istvan naar de volgende te gaan.”

TMitTB zegt: “Istvan, heb je JIRA updaten?” (JIRA is een commerciële dienst die functioneert als het proces-verbaal van het project.)

Het’s vreemd voor de dingen die je goed te keuren lijn items aan bod als waren zij echte, werkelijke dingen horen. Maar ook verheugend.

7.3 Het beheer van Programmeurs

Het beheer van programmeurs is een discipline op zich. Er zijn subdisciplines die te maken hebben met de manier waarop programmeurs communiceren. De meest prominente is de “Agile-methodiek,” waarin wordt gepleit voor regelmatige coördinatie tussen programmeurs, die een reeks van rituelen en normen die ze kunnen volgen om hun programma’s werken met de programma’s van anderen.

Het Agile Manifesto (yep, manifest) luidt als volgt:

  • Individuen en interacties boven processen en tools
  • Werkende software boven uitgebreide documentatie
  • Samenwerking met de klant boven contractonderhandelingen
  • Reageren op over te schakelen na een plan

Er zijn 17 ondertekenaars. En er zijn zo vele variaties van Agile. ik’ve had verschrikkelijke bijeenkomsten in mijn leven toen ik tussen twee teams zaten en een van hen verklaarde, ten slotte, waarom Agile met Kanban was beter dan Agile met Scrum. Je zou het geld ruiken branden.

Hier is Agile, zoals ik’ve gezien het gedaan: U breken uw product in een reeks van eenvoudig te begrijpen user stories over wie wat nodig heeft. Je file die verhalen in een-issue tracking systeem, vaak een commercieel product, zoals JIRA.

Je verdeelt het werk in sprints van een week, twee weken, of wat dan ook past bij uw stijl van leidinggeven, en geef je iedere sprint een naam en een doel (uit te voeren onderzoek, registratie als gebruiker), dan is de programmeurs nemen verhalen om af te gaan en ze te laten gebeuren.

Elke dag je team controles in en probeert om elkaar te deblokkeren—Als u bezig bent met het hulpmiddel dat e-mail en de e-mail server isn verzendt’t werken, je iedereen vertellen. Dan iemand anders stappen om te helpen, of dat u de stok met dat verhaal en doe het beste wat je kunt, maar iedereen moet werken naar de sprint doel, proberen om wat software vrij te geven. En zodra de sprint wordt gedaan, je iets dat echt, echt werkt leveren en ga naar het volgende ding, langzaam brengen van een groot, complex systeem in gebruik genomen.

Dat’is een ideale geval. goed gedaan, het vermijdt magisch denken (“Het zal al het werk als we alles gedaan en samen bedraad”). Het heeft zijn critici en kan lijken om zo veel takken (cf. Scrum, Kanban hebben, en “Agile met Discipline”) Als het protestantisme.

Programmeurs zijn altijd op zoek naar een zilveren kogel en, erger nog, ze denken dat ze altijd’heb het gevonden. Dat is waarom Frederick Brooks, de meest bekende van de vroege software methodologen, schreef een paper genaamd “Geen Silver Bullet—Essentie en Ongeval in Software Engineering.” Hij schreef het in 1986. Hij was erg hoopvol, toen, zou dat object-georiënteerd programmeren te helpen dingen te repareren.

7.4 “We gaan voor verzending”

In uw kantoor komt TMitTB. Hij heeft een grote fles van een soort en een laptop, en hij ziet er slaperig. Je vertelt hem zo, met een glimlach.

“We kregen een release,” hij zegt. “Liep een beetje in gisteravond.”

Hij opent de laptop en brengt een geheime website dat hij je verzekert, kan worden gezien alleen binnen de grenzen van het kantoor’s netwerk of via het virtuele privénetwerk.

Het’is een duidelijke en huiselijke ding, de nieuwe website. Pleinen stoten in vierkanten. De catalogus en de items in de catalogus zijn op het scherm, maar er zijn geen afbeeldingen. De tekst heeft allerlei rare personages erin, vreemde insecten. Er zijn producten met de namen “nep-product” en “niet echt product” en “Ik haat alle producten.”

Er zijn geen “gerelateerde items” aan te schaffen, ook al is dat’is een kritisch kenmerk en een van de belangrijkste opbrengst drivers op de huidige locatie. U onderdrukken de vraag. Het zal er zijn.

Er is echter een manier om in te loggen met een gebruikersnaam en wachtwoord. TMitTB heeft u gedaan de gunst van het creëren, voor u, een account. Je bent, zegt hij, de eerste nonengineering persoon om de site te testen.

“Dit is echt?” je vraagt.

“Ja. Dit is software. Het spreekt tot de database. Dit is wat we’ll release.”

“Heeft het spreken met de klantenservice?”

Hij loenst voor een tweede.

“In juli,” hij zegt.

Mijn God, een datum. U’ve gewonnen per maand, iets positief deadline-achtig.

Hij deed wat je vroeg. Hij slaagde erin naar buiten, en hij begon te kauwgom de werken in vertrouwde manieren. Hij begon te eisen documenten van mensen die onmiddellijk begonnen ze het niet verstrekken. Hij vroeg relatieve vreemden voor hun inzichten en suggesties, en zij gaven hun vrijwillig. Ze vroegen om het logo te groter zijn. Ze vroegen om games die in de app kan worden afgespeeld. Hij luisterde naar hen allen. hij hasn’t een conferentie geweest in maanden.

“Dus dit is de echte, eigenlijke website.”

“Ja,” zegt hij, het nemen van een slok uit een ingewikkeld, gefermenteerde drank met een gezondheids-food-store mandala-stijl label. Een sticker op de fles zegt: “$ 3,99.”

“Nu doen we de volgende sprint,” hij zegt. “We duwen voor de maand juli. En we loslaten half augustus.”

Hij ziet er moe, deze man. Maar hij ziet er ook trots. De dingen op het scherm—Zijn team heeft ze daar, en zij gebruikten een goede, moderne hulpmiddelen om dit te doen. Dat is hun vak en hun plezier, en TMitTB heeft het mogelijk voor hen om hun werk te doen gemaakt. “Wij,” hij eindelijk zegt: “gaan naar het schip.”

U heeft besloten om BlackBerry ondersteuning te kappen. Het gestoken, maar er zijn drie BlackBerrys in uw bureaulade thuis en niemand in je zak. Het leven gaat verder.

Wanneer de site is ingevoerd, je’ll kopen de coders een taart en stuur ze naar de JavaScript-conferentie van hun keuze. U’ve geleerd dat de enige passende beloning voor mensen die JavaScript schrijven is JavaScript. TMitTB zal zijn bonus te krijgen. De CTO is al overweegt hem voor nieuwe dingen. Je houdt van de CTO. Ze heeft een vriend van soorten geworden.

Je kunt het voelen, de S, in de verte, komt naar u toe. Het zal aankomen op tijd, en je zal het vasthouden aan de voorzijde van de VP in uw titel en komt alles goed. De programmeurs alle lacht je in de hal nu dat je’ve zat in op code reviews en feature discussies en stond stil in het midden van de stand-ups. Je weet wel een aantal van hun namen, zelfs als u een betere baan van hen uitspreken kon doen.

Misschien heb je een toekomst in de software na alles.

Fotograaf: David Brandon Geeting voor Bloomberg Businesswek; Prop Stylist: Dave Bryant

7.5 moet je leren om code?

Ik sprak met enkele vrienden in hun jaren ’40, die een carrière in de techniek had doorgebracht. Ik was klagen. Ik zei, “Ik mentor wat Millennials, en mijn God. Elke opdracht is een contract positie. Niets komt met de gezondheidszorg. Ze dragen zo veel schulden.” Ze keek me aan met verbijstering. Het duurde even, en vervolgens een van hen zei: “Niet als ze kunnen coderen.”

Je hebt waarschijnlijk al code te doen. Je doet het in Excel of Google Spreadsheets. Je loopt weinig processen in een reeks of doe een reeks van vinden en vervangen routines in een groot document.

Programmering als een carrière kan leiden tot een lonende, stevig middenklasse bestaan. Als je geneigd zijn en genieten van het werk, is het’is een goede manier om tijd door te brengen, en als je werkt voor en met goede mensen, kan het erg leuk zijn—zelfs de droge delen hebben iets om je te leren. Natuurlijk is dit geldt voor elke plaats waar slimme mensen werken. Als uw situatie is slecht, kun je waarschijnlijk een andere baan gemakkelijker dan, laten we zeggen, een schrijver.

De industrie wendingen zo vaak echter dat wie weet wat de komende 10 of 20 jaar zal brengen? De iPhone en mobiele in het algemeen, creëerde een korte renaissance voor mensen die konden programmeren met behulp van een lager niveau talen zoals Objective-C, de mensen die zouden kunnen maken over een computer’s geheugen. Misschien is het internet van de dingen zullen er alles aan om te zetten in een sensor. (Reeds u wandelt Disney World met een polsband, en horloges en volgt u, de hele plaats is een computer Δ Digital polsbandjes zijn verkrijgbaar bij Disney World, niet Disneyland Dankzij @charlesdwesleyeplica op GitHub.). Dit vergt nog meer laag- niveau denken. En dan zal er websites te maken, apps te bouwen, en zo verder.

Er’s waarschijnlijk te werk. Maar het’is een wereldwijde industrie, en er zijn duizenden mensen in India met grote graden. Sommigen gebruikten om te werken bij Microsoft, Google en IBM. Dezelfde dingen die het programmeren van een enorme wereld verspreid bovenbouw gemaakt—dat je niets kan het schip en in rekening mag brengen—maken het de perfecte geglobaliseerde industrie. Er’is gewoon geen reden, afgezien van vooroordelen, om te denken dat Mumbai of Seoul kan’t maken grote, complexe zaken als Palo Alto of Seattle.

Je zou kunnen leren om te programmeren, want er’is een nieuwe economie als irrationeel, raar en pijnlijk als de oude. Boeken en liedjes zijn nu rijen in databases, en hele films worden gemaakt op CPU’s, zonder een echte lichtstraal indringende een lens. Misschien leren code zal u een decoder ring voor de toekomst te geven. Verstoring is gewoon optimalisatie door een andere naam. SDK’s zijn gewoon cultuur gecodeerd en reproduceerbaar gemaakt, en een hele generatie, ze’opnieuw te ontvangen als rapturously als Beatles albums decennia geleden waren. De-coder draaide venture-kapitalistische-draaien-Twitter-publiek-intellectuele Marc Andreessen schreef dat de software van de wereld is het eten. Als dat’is waar, moet je op zijn minst weten waarom het’is zo hongerig.

ik’ve de man in de taupe blazer geweest, zeker, de persoon die brengt de digitale waar het’is niet welkom en is er zeker van dat zijn manier beter is. Het kostte me een lange tijd om te leren waarom dit niet zou kunnen worden toegejuicht—waarom een ​​executive, een redacteur, of een bibliothecaris misschien niet genieten van het horen over zijn hele wereld wordt upended omdat iemand heeft een nieuw speeltje in zijn zak. ik wist’t zet het speelgoed in iedereen’s zak, en u shouldn’t doden de boodschapper. Maar boodschappers aren’t onberispelijk, hetzij.

Afgezien van ernstige koorts en af ​​en toe een uitstapje naar het bos, I’ve gebruikte een computer elke dag voor 28 jaar. Ik leren over de wereld door middel van software. Ik leerde over het publiceren met behulp van de desktop publishing systeem QuarkXPress, en ik leerde over kleur en kunst met behulp van een programma genaamd Deluxe Paint. Software leerde me wiskunde en statistische. Het leerde me hoe te berekenen grootcirkelafstand, het inschatten van de afstand tussen twee punten op een bol. Ik leerde over het internet door het creëren van webpagina’s, en leerde ik over muziek via MIDI. En bovenal, software leerde me over software.

Ik hou van goedkope oude computers meer dan nieuwe, en mijn laptop kraakt wanneer het wordt geopend. Mijn huis is gevuld met boeken en zacht, nondigital dingen. Maar mijn eerste gedachte toen ik moet volbrengen een aantal persoonlijke of professionele taak is, Welke code kan ik gebruiken? Welke software zal me leren wat ik moet weten? Als ik iets wil leren en geen software bestaat, het vacuüm bugs me—waarom isn’t iemand op dit?

Dit is wat Silicon Valley moet denken, ook als het optimaliseert de hel uit elke industrie kan het, maken van software (en de houders van die software) de tussenpersoon. The Valley heeft de wereld in het vizier. Overheid, bedrijfsleven, maatschappelijke dienstverlening, de menselijke seksualiteit, landbouw: Ze willen krijgen daar en de invloed van de hele keet.

Code heeft verstoven hele categorieën van het bestaan, dat eerder verscheen geheel. Geschoolde beoefenaars hebben zich deze explosieve mogelijkheid om hun in de buurt van de totale baten. Boekwinkels nu bestaan ​​in tegenstelling tot Amazon en Amazon’s interpretatie van een elektronisch boek is het referentiepunt voor de wereld. Van haar kant, Amazon is niet echt een boekhandelaar zo veel als een set van optimalisatie problemen rond digitale en fysieke distributie. Microsoft Office gedefinieerd wat het werken, wat leidt tot een multidecade stortvloed van Powerpoint. Uber streeft naar vervoer herschikking in zijn eigen beeld, en duizenden meer startups bestaan ​​met sterren in hun ogen en de koortsachtige wil te verstoren, te verstoren, te verstoren, te verstoren.

ik’m blij te hebben geleefd door middel van de grootste kapitaal expansie in de geschiedenis, een tijdperk waarin het geheel van onze soort begon te spreken, onhandig, in digitale abstracties, zoals venture capitalists waggelen rond als mama vogels, het laten vallen van blog posts en zaad rondes in de monden van wachten baby vogel ontwikkelaars, allemaal zeker van dat ze zullen opgroeien tot miljardairs zijn. Het’is een komedie van ego, mogelijk gemaakt door logische poorten. Ik ben niet slim genoeg om rijk te zijn, maar ik’m altijd vermaakt. Ik hoop dat u zal zijn, ook. Hallo Wereld!

Fotograaf: Corey Olsen voor Bloomberg Businessweek

DARPA ROBOT: David McNew / Reuters, HOORZITTING: Kim Komenich / San Francisco Chronicle / Corbis, 3D-GUN: Keith Beaty / Toronto Star / Getty Images, Dykstra: Ben Shneiderman, BACKUS: Courtesy IBM Archives, REINHARDT: Courtesy William Gottlieb / Bibliotheek Congres, HOPPER: AP Photo, INPUT-ENIAC: Nationaal Archief, ponskaarten: Courtesy IBM Archives, CD: Fairfax Media / Getty Images, diskettes: W.Cody / Corbis, SOFTWARE CASSETTES: Courtesy Nico Kaiser / Wiki Commons, TECH CONFERENTIES : ALAMY (1); BLOOMBERG (5); CORBIS (1); KIM KULISH (2); De Afbeelding Works (1)

Dit verhaal is geannoteerd met correcties. kwesties in te dienen op GitHub.

Niet slecht voor zes of zeven decennia—maar houd het in perspectief. Software kan het eten van de wereld, maar de wereld was eerder opgegeten door andere dingen, ook: de opkomst van de telefooncentrale, de verspreiding van elektriciteit, en de absolute dominantie van de auto. Het’s wonderbaarlijke dat we mobiele telefoons, maar het’s even wonderbaarlijk dat we ze kunnen rekenen.

De wereld van de code is gevuld met acroniemen. K is gemodelleerd naar een andere taal genaamd APL, wat staat voor een programmeertaal. Programmeurs zijn grappig, zoals je oom. Ze houden de self-referentiële en recursieve in de hoogste achting. Een andere klassieker: GNU, wat betekent GNU’s Not Unix. Programmer grappen maken je aan het lachen en zucht tegelijk. Of gewoon zucht.

Compilatie is een van de dichtere onderwerpen in de informatica, omdat de lager je gaat, hoe meer mogelijkheden er zijn om diep, rare dingen die aanzienlijk kunnen versnellen code doen—sneller en goedkoper en beter. U kunt elegant, high-level code zoals F. Scott Fitzgerald te schrijven, en de computer zal compileren naar Ernest Hemingway. Maar compilers doen vaak meerdere passes, het draaien code in eenvoudigere code, dan eenvoudiger code nog, van Fitzgerald, Hemingway, Stephen King, Stephenie Meyer, helemaal naar beneden tot Dan Brown, elke fase steeds minder leesbaar en meer repetitieve zoals u Gaan.

Ik vind code op de afgedrukte pagina moeilijk te lezen zijn. I don’t kwalijk nemen als uw ogen vervagen. Ik probeer veel van de code te lezen, maar het maakt meer zin op de computer, waar u denkbaar delen ervan en rotzooi rond zou kunnen veranderen. Zo nu en dan heb ik’ll vinden sommige gem; de hulpprogramma’s in de Unix-broncode zijn vaak verbazingwekkend kort en simpel en voor de hand liggende, alles wat je’d hoop van een systeem dat prat gaat op zijn opgebouwd uit eenvoudige, composable elementen.

Adobe PostScript gemaakt in de vroege jaren 1980 en in licentie aan Apple, zijn eerste succes. Drie-plus decennia later, Adobe heeft een waarde $ 38 miljard dollar. PDF is een directe afstammeling van PostScript, en er zijn PDF-bestanden overal. In code als in het leven, ideeën groeien binnenkant van talen en te verspreiden met hen.

Twee plus twee is meestal vier, maar in een taal als JavaScript als u toevoegt 0,4 + 0,2, is het antwoord 0,6000000000000001. Dat’s omdat die nummers worden geïnterpreteerd als “floating point” (Het punt is de periode), en de JavaScript-taal gebruikt een bepaalde manier te vertegenwoordigen die nummers in het geheugen, zodat er soms (volledig voorspelbaar) afrondingsverschillen. Dit is slechts een van die dingen die je moet weten als je een toegewijde Web programmeur.

Wel, hij zou het hebben gezegd. Het’s aan hem toegeschreven, maar het kan zijn folklore. Niettemin, groot citaat!

Wat betekent dat deze bedrijven zijn zo groot dat ze kunnen’t gebruik van zo veel off-the-shelf, voorverpakte code als de rest van ons, maar veeleer moeten de dingen weer op te bouwen om hun eigen zeer strenge specificaties.

By the way, kan die eerdere bewering over hoe $ 100.000 in het enkelspel passen in een vat? Het komt uit een berekening in Wolfram Alpha, een zoekmachine die goed werkt met hoeveelheden. De zoektocht was, “1 US droge vat / volume van $ 1 biljet,” en het resultaat is 101.633.

Gebruiker verhalen zijn vaak geschreven op papieren kaarten en aangebracht op een muur; zij kunnen ook tweedimensionale gecomputeriseerde kaarten die vervolgens worden verplaatst met een muis en “toegewezen” programmeurs.

Programmeurs besteden veel van hun tijd omgaan met verschillende soorten data. Laten we zeggen dat ik een getal x, zoals 7, en een woord y, zoals ‘cat. “Toen ik x en y vermenigvuldigen, wat is het resultaat? Een runtime-fout in vele talen-want je kunt niet een getal vermenigvuldigen met een woord. De taal Perl retourneert een nul, dat is zinvol, maar verbijsterend, en JavaScript geeft “NaN,” voor “geen getal.”

Hoe vaak ga je vermenigvuldigen zevens en katten? Zoooo veel. De echte wereld van data is rommelig, dus je bent voortdurend omzetten van één soort dingen in een ander type en de shading is subtiel. Soms is een e-mail adres is enkel een bos van letters en symbolen; soms is het een veld net geplukt uit een database; soms het is speciaal voorbereid op het internet worden verzonden. Programmeurs schrijf veel van de code die de gegevens omzet van het ene type naar het andere.

Sommige talen zijn ongelooflijk waakzaam over soorten, en wat kan worden gedaan met gegevens van een bepaald type. Ze duwen moeilijk voor programmeurs om vastspijkeren data types, en de uitbetaling is dat deze talen dan problemen kunnen identificeren voordat ze gebeuren-at “compilatie” in plaats van later, wanneer het programma wordt uitgevoerd. Een statisch getypeerde taal als Java vangt u voordat u een gedicht te vermenigvuldigen of proberen om de geografische afstand tussen Chicago en een sofi-nummer te vinden. Andere talen zijn veel meer waarschuwing programmeur.

Een kernel is het laagste niveau van een besturingssysteem. De Linux kernel is als de motor in een auto; het dashboard, voorruit, banden en stoelen komen uit verschillende bronnen. De Free Software Foundation vraagt ​​u om te spreken van GNU / Linux, naar zijn roots te eren, en sommige mensen volgen deze suggestie. De meeste mensen noemen het Linux, hoewel, of verwijzen naar een van de Linux-distributies, dat wil zeggen “Red Hat Enterprise Linux,” “Ubuntu Server,” of “Debian.” Het’s vermeldenswaard dat Linux is niet de enige Unix; er’s OpenBSD, FreeBSD, Solaris, AIX, en—goed, krijg je de drift. De grafieken tonen alle Unices zijn groot charts.

Als je oud genoeg om DOS herinneren bent, weet je wat een command line is.

Disclosure: I’heb geschreven over 500 lijnen van de C-code in mijn leven, maar ik’ve veel over de taal te lezen en gewerkt door vele tutorials. Als een Web persoon, ik niet gewoon’t doen het soort systemen werken waarin hij uitblinkt. Als je werkt voor een groot software of hardware bedrijf,’s veel meer kans je’ll vinden gebruikt.

“Object-georiënteerde,” “imperatief,” en “functioneel” zijn paradigma’s; een taal als Python wordt aangeduid als “multi-paradigma.”

Het schrijven van dit artikel werd een nachtmerrie, omdat ik weet dat het niet uitmaakt hoeveel mensen te beoordelen, ik’iets zult hebben gemist, enkele draad die een lezer kan trekken en zeggen: “Hij miste de essentie van het onderwerp.” ik ken jou’re die er zijn, beschaamd om mij als advocaat. Ik accepteer dat. Ik weet dat wat ik omschrijven als “compilatie” is maar een klein onderdeel van dat onderwerp; Ik weet dat de manieren waarop ik karakteriseren programmeertalen zijn reducerende. Dit werd verondersteld om een ​​kort artikel te zijn, en het werd een kort boek. Dus mijn excuses voor iets dat absoluut hier moeten zijn, maar isn’t. Ze gaven me maar een magazine. Als u wilt rant, I’m ford@ftrain.com.

Het’sa evenwicht. Je hoeft ook’t wilt een situatie te creëren waarin engineers kunnen’t rond te spelen, want dan zijn ze’ll systemen opzetten achter je rug “voor testen.” Dat’is hoe Linux te verspreiden.

Technische schuld is het idee dat de software vaak lanceert zonder alles dichtgeknoopt, om deadlines te halen of omdat sommige functies werden voorrang boven anderen, en na verloop van tijd, als systemen veranderen en evolueren, een soort code-schuld opbouwt. Het’is niet anders dan de schuld infrastructuur. Bruggen, tunnels, of tech—om nieuwe dingen te doen in een compatibele manier kan pijnlijk, verspilde moeite vergen. Soms, om een ​​systeem verder te gaan, moet je die schuld te pakken: Een upgrade van de nukkige server, omgaan met het feit dat uw account manager heeft de neiging om mensen uit te loggen zonder waarschuwing, of zo nu en dan weg te gooien een component en begin opnieuw.

Weet je wat, hoewel? Cobol heeft een grote data-description language. Als u besteden veel tijd opmaak data en valuta, enzovoort, is het’s heb je. (Als jij’re nieuwsgierig, zoeken “Cobol Picture clausule.”)

Verschillende computers tijdperken rook anders. De oude, grote machines had een licht brandend-metal geur. Vroege pc gaf off verschillende geuren van kunststof, metaal, en emaille. En wie zou de wafting geur van een monitor met rook gieten uit de achterkant vergeten? De geit-achtige geur van tientallen mensen in een rekencentrum, tegen een deadline? De vreemde geur van laser toner of enorme stapels vlezig gestreepte papier? Af en toe I’ll zie je een foto van een stapel van oude machines uit de jaren 1980, en de olfactorische geheugen me springen.

Lisp is een taal die programmeurs vereren vanwege zijn rijke geschiedenis en de eenvoud—en het feit dat dergelijke eenvoud maakt het mogelijk Lisp zichzelf programmeren; het’beschreven met als “programmeerbare programmeertaal.” Als je ooit hebt heldere programmeurs die een uitdaging nodig heeft, stuur ze af te leren Lisp. Sommigen kunnen terugkeren als onuitstaanbare evangelisten, maar waarschijnlijk zullen ze terug slimmer en flexibeler komen.

Genieten van Lisp programmering is als genieten van prog rock of expressionistische kunst; als jij’re erin, heb je waarschijnlijk hou ervan, en te slecht over de pleinen die haakjes haten. Weet je nog hoe de computer’s geheugen is net zoiets als een rechte lijn, maar programmeurs denken in de bomen? Dat’s Lisp in een notendop; het geeft je een ongelooflijk consistente manier om na te denken in de bomen. Het’s zo dicht mogelijk bij Zen als computergebruik krijgt. Van alle talen in dit essay, Lisp is degene die ik’d meenemen naar een onbewoond eiland. Het heeft de meest om mij te leren over de verborgen orde van het universum.

HyperText Markup Language, de codering formaat voor webpagina’s sinds het web begon. Programmeurs debatteren over de vraag of HTML is “programmering” of niet omdat ze paranoïde over de status en don’t wilt toestaan ​​louter tag-wranglers om gezegende programmeur-status claimen. Dus de tekst die hier verschijnt doesn’t tellen als “code” maar als “markup.” Het verschil tussen een deskundige markup persoon een deskundige coder is uit ervaring ergens tussen $ $ 20K en 70K ten gunste van de programmeur.

Als mensen praten over databases, gebruiken ze vaak het acroniem CRUD, voor maken, lezen, bijwerken en verwijderen. Je zou kunnen boeken of klanten of aankopen te creëren; Lees de gegevens wanneer een gebruiker inlogt en laden hun naam en informatie; updaten iemand’s e-mailadres; of verwijderen van een gebruiker op aanvraag. Een enorme hoeveelheid code is alles over het beheer van CRUD operaties.

Andere talen, zoals Perl of PHP, laat u de exacte dezelfde dingen Java doet doen, en ze draaien op dezelfde platforms—maar ze waren oorspronkelijk ontworpen voor scripting, voor een snelle evaluatie van programma’s. ze don’t hebben nogal dezelfde spier.

Het’is een kwestie van graad—te zeggen een ding is krachtiger dan de andere is om een ​​gevecht uit te nodigen; iemand zal verschijnen in de digitale deur en zeggen: “Werkelijk …” en je ’s nachts’s geruïneerd. Maar als ik tot u gekomen en zei: “Ik moet een voorraad-trading platform te bouwen in 36 maanden,” niemand’s ga je schieten voor het kiezen van Java. Als ik al zei, “Ik heb een prototype van een nieuwe voorraad-trading platform in de komende twee maanden voor een klant die al dan niet besluiten om een ​​te bouwen, en het is mooi om te kijken in mijn Web browser,” Ik heb misschien iets kleiner, niet zo enterprisey gebruiken. Python zou een goede gok. Ruby zou ook fijn zijn.

Ik heb echt, echt leuk Clojure. Het leerde me een ton. Maar wat geldt voor Clojure geldt voor andere talen, ook.

Oracle was niet al te blij mee en—lang verhaal—Google aangeklaagd.

De runtime voor iets als JavaScript is een beetje als de kernel in een besturingssysteem. Het’s de set van diensten die wordt uitgevoerd wanneer JavaScript loopt, die beschikbaar zijn voor alle JavaScript-code. Je begint de runtime, en dan de rest van je code wordt uitgevoerd binnen het, in de context die het biedt. In dit geval was deze context “de webbrowser.”

Ajax is een afkorting voor “Asynchronous JavaScript and XML.” Het verwijst naar een reeks technologieën die bij combinatie omgezet webpagina’s in de software. Na Ajax werd goed begrepen, veel van de Web getransformeerd van een publishing platform in een applicatiespecifiek afleverplateau, en, als gevolg daarvan, de Internet-industrie getransformeerd in zijn huidige vorm.

Mensen doen klagen.

Application Programming Interface—soort een grote, harige set van klassen en objecten. Er zijn ook Web API’s, die grote, harige sets van de klassen en objecten die u op te halen via het web zijn.

Een taal is een manier van het waarnemen van de wereld. Een standaard bibliotheek is een manier van het organiseren van de wereld. En een IDE is een manier om die dingen samen te brengen in een levendige en dynamische manier.

Op dezelfde manier maakt Microsoft een tool beschikbaar genaamd Visual Studio, die het gebruikt om zijn eigen software te schrijven.

Je weet wie is goed in dit soort dingen? Microsoft: developers, developers, developers, developers.

Want zie, in New York was er AT&T, die in New Jersey gewon Bell Labs, die Unix verwekte. En het was zeer goed. En in Rochester, N.Y. en later Stamford, Conn. Er was Xerox, en gewon PARC, in Palo Alto, die Smalltalk verwekte. En het was zeer goed. En in Cupertino, Californië. Er was Steve Jobs, die verwekte, met vele andere mannen en vrouwen, de Macintosh, en het was goed op de markt gebracht. Maar Jobs is geworpen in de vallei en creëerde NeXT, die Unix, Smalltalk getrouwd, en de Macintosh, en noemde de afgifte ervan NeXTStep, dat is wat de “NS” staat voor in NSThickSquareBezelStyle, voor de invloed van een platform is bij ons altijd.

Ik hou echt van Django. Het werd geschreven door vriendelijke mensen om mensen te helpen bij het publiceren. Ruby on Rails is waarschijnlijk de meest bekende Web kader, natuurlijk. Het’is ook geweldig!

“Vergelijking van Web applicatie frameworks,” dat is een solide Wikipedia-pagina. In feite, Wikipedia een essentieel programmeertool. De samenvattingen van talen en benaderingen zijn meestal goed doorgelicht en vol codevoorbeelden.

Wat’s met de naam, die in feite betekent “ruk” in de Britse Torvalds vertelde PCWorld. “ik’ben een egoïstische klootzak, dus noem ik al mijn projecten voor mezelf zorgen. Ten eerste Linux, nu git.”

Eigenlijk, programmeurs don’t praten altijd zo veel online chatten, vaak met behulp van Slack. Slack is een internet startup die een chatdienst georganiseerd rond de behoeften van sterk uiteenlopende groepen biedt. Een groot deel van zijn aantrekkingskracht is de eenvoud en het gemak waarmee het integreert met andere producten. Chat kanalen kan snel komen om al het werk te vertegenwoordigen die’is er binnen een bedrijf, als een set van stromen van de tekst, die vervolgens kunnen worden doorzocht. Slack geeft een korte-termijn institutioneel geheugen, die veel nerds gelukkig heeft gemaakt. Het’is snel groeiende. speling’s investeerders onlangs getaxeerd het op $ 2600000000; tegen de tijd dat deze kwestie wordt gepubliceerd, zal het waarschijnlijk meer dan de planeet aarde waard.

www.bloomberg.com

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

19 + twaalf =