Vad är skillnaden mellan en programmerare och en användare? Skillnaden mellan en systemadministratör och en programmerare. Några punkter som förtjänar särskild uppmärksamhet vid installation och vidare drift av systemet

Vi stöter ofta på att folk inte förstår skillnaden mellan en systemadministratör och en programmerare och alla IT-arbetare kallas programmerare. Vissa är kränkta, medan andra redan har vant sig. Men jag vill försöka förtydliga denna skillnad så att det blir tydligt för de flesta som läser den här artikeln :)
Om en organisation har en IT-avdelning (teknik), eller, enklare, en dataavdelning, har den följande division:

- huvuduppgiften är att kontrollera driften av servrar och serverprogramvara, administration av telefonväxlar, säkerhetspolicy - i allmänhet är dessa hjärnorna i hela organisationens datorstruktur.

Teknisk supportspecialister (eller ingenjörer)- Det här är killarna som hanterar vanliga användares datorer, ställer in dem, hjälper användare att lösa aktuella problem, fångar virus på användarnas datorer, etc. och så vidare. I huvudsak är en specialist en framtida systemadministratör, eftersom en systemadministratör kan också utföra en specialists arbete. En specialist kan utföra en systemadministratörs arbete om ledningen tillåter honom - ledningen har mer förtroende för en systemadministratör :)

Programmerare– det är killarna som hela tiden skriver olika texter på ett språk som är obegripligt för den vanliga användaren. Dessa texter omvandlas sedan till användbara program, verktyg eller helt enkelt moduler (ytterligare alternativ) för användbara program.

Att vara programmerare är på modet nu. Det görs filmer om framgångsrika programmerare, böcker skrivs och i många länder får utvecklare bra betalt. Men trots modet för "tekniker" och innovation finns det många saker kända för programmerare som är överraskande för andra. Quora-bidragsgivare har diskuterat dessa sociokulturella och kognitiva skillnader. Nedan följer de mest intressanta kommentarerna från diskussionen.

Så, programmerare, till skillnad från vanliga människor:

1. De förstår att alla inbrottsscener i filmer är fullständigt nonsens. Här kan du till exempel läsa varifrån koderna som dyker upp på "IT-specialisters" skärmar i film egentligen kommer ifrån. I allmänhet är många filmstereotyper om programmerare nonsens, skriver Bill Coleman: ”Vi är inte alla feta, lata genier. I det verkliga livet vet vi hur man kommunicerar normalt: vårt arbete beror på det. Och blanda inte ihop oss med elektriker, många har inte ens en lödkolv hemma."

Den huvudsakliga "hacking"-effekten på den oinitierade är den öppna konsolen. "De flesta kommer att tro att jag bara stirrar på skärmen och dödar tiden när jag faktiskt arbetar. Men så fort du öppnar konsolen och börjar skriva kommer de att vara övertygade om att jag försöker hacka Pentagon eller göra andra magiska saker”, skriver en av diskussionsdeltagarna.

2. Medan de arbetar, 25 % av gångerna klurar de på hur de ska ta reda på vad användaren kan "bryta" i applikationen som skapas. ”Det är relativt enkelt att skriva regler för vad ett program ska göra om allt fungerar som det ska. Det är mycket svårare att skriva regler för vad ett program ska göra om något går fel”, skriver Kim Moser. Samtidigt anser många användare att program ska bete sig som sina smartare och mer kunniga vänner.

3. De vet att i själva verket innehåller även den viktigaste programvaran som användare använder varje dag en skrämmande mängd "kryckor" som på något mirakulöst sätt går samman till en fungerande helhet. "Det är som att ta isär en Boeing och upptäcka att bromsarna är ihoptejpade", skriver en av diskussionsdeltagarna, Ben Cherry. Programmerare vet att en fruktansvärd mängd medicinsk, ekonomisk och personlig information lagras med försumbara nivåer av systemsäkerhet.

5. De vet: om en person hade till exempel sex fingrar på händerna, skulle huvudsiffersystemet i världen vara decimal, och inte 10, som det är nu.

6. De kan namnge många fler tvåpotenser utan miniräknare än en vanlig person. Förkortningen "k" i uttryck som 100k förstås inte som "x1000", utan som "x1024". Men medan de flesta vanliga människor tror att programmering mest handlar om matematik, vet programmerare att logiken kommer först.

7. De vet hur komplexa enkla saker är på Internet. Enkla åtgärder, som att söka på Internet, stöds ju faktiskt av många komplexa processer på olika nivåer.

8. Tror att de flesta människor är för vaga när de försöker förklara vad de vill.


9. De blir arga när vanliga människor bland släktingar, vänner och bekanta hela tiden ber om att "fixa datorn".

10. Kodens skönhet kan mycket väl jämföras med en dikt, även om den för användaren kommer att se lika hemsk ut som ett felmeddelande.

I samband med att arbeta med mjukvaruprodukter delas människor in i användare och programmerare (underhållare, implementerare, etc.). Den här artikeln tar upp förhållandet mellan dessa två kategorier. Kanske kommer detta att hjälpa till att lösa vissa konflikter mellan unga yrkesverksamma och användare.

De flesta användare är mycket konservativa när det kommer till automatisering. Det kan vara mycket svårt att övertyga en person om att det är lämpligt att byta system (anslutningsproblem uppstår, under en tid måste du arbeta samtidigt i två system, det nya systemet kan kräva ett annat tillvägagångssätt för att utföra det vanliga arbetet.) Men efter att gradvis anpassa sig till det nya systemet, kommer användaren att uppskatta alla dess fördelar Jämfört med det gamla, är detta den bästa belöningen för en programmerare.

En liten notis.

De flesta användare har ingen aning om skillnaderna mellan en systemadministratör, en programmerare eller en Unixoid. För dem betyder en programmerare att han kan fixa en dator, hitta allt på Internet, löda en trasig tråd, återställa information som raderats från hårddisken. Naturligtvis är detta inte helt sant, men det här är bilden av en programmerare i huvudet på en vanlig användare.

Några punkter som förtjänar särskild uppmärksamhet vid installation och vidare drift av systemet:

  • Alla användare föredrar att arbeta med samma specialist, som är medveten om alla problem som regelbundet uppstår under drift. Undvik därför om möjligt situationer där en annan specialist arbetar med din klient.
  • Var inte för påträngande med dina råd, särskilt om du inte blir tillfrågad om det. Och insistera inte på din synpunkt - det räcker bara att uttrycka din åsikt. Låt det slutgiltiga beslutet ligga hos användaren.
  • Sträva efter att förbättra dina kunskaper inte bara inom programmering, utan också inom din kunds yrkesområde - detta gör att du kan kommunicera på samma språk. Användare ställer ofta frågor relaterade till detaljerna i deras yrkesverksamhet.
  • Användaren vill att systemet ska fungera konstant och utan fel. Han bryr sig lite om att förklara varför hans system misslyckades. Om något händer (som alltid är en del av arbetsprocessen) bör användaren veta vem som är skyldig och när systemet kommer att fixas.
  • Även om användaren alltid vet i förväg om förändringar i avdelningens struktur och lagändringar, vänta inte på att han ska fråga om tidpunkten för systemuppdateringen. Håll alltid användaren uppdaterad med sådan information.

FPGA står för "Field Programmable Gate Array" och är ett enormt utbud av grindar som kan programmeras och byggas om när som helst, var som helst. Många användare förstår fortfarande inte vad en FPGA är. "En enorm uppsättning portar" är en förenklad beskrivning av modellen. Vissa FPGA:er har inbyggda hårda block: minneskontroller, höghastighetskommunikationsgränssnitt och PCIe-ändpunkter. Det finns många grindar inuti en FPGA som fritt kan kopplas ihop. Funktionsprincipen liknar mer eller mindre att ansluta individuella logiska elementmikrokretsar. FPGA:er produceras av världens ledande företag Xilinx, Altera och Microsemi.

Historia om FPGA-utveckling

FPGA-industrin växte fram ur PROM-programmerbart skrivskyddat minne och PLD-logikenheter. 1970 uppfann Philips den fältprogrammerbara matrisen. I utformningen av en sådan FPGA, som bestod av två planer, uppnåddes en specifik implementering av logiska kretsar: programmerbar trådbunden "OCH" eller "ELLER". Detta gav henne möjlighet att implementera funktionen i form av Sum of Products.

Altera grundades 1983, och släppte redan 1984 branschens första omprogrammerbara logikenhet - EP300 med ett kvartsfönster i förpackningen, vilket gjorde det möjligt att använda en ultraviolett lampa på matrisen för att ta bort EPROM-taggen.

För att övervinna utmaningarna med kostnad och hastighet utvecklades programmerbar array-logik som endast inkluderade en programmerbar "OCH"-ingång i en fast "ELLER"-grind. PAL och PLA, tillsammans med andra varianter, är grupperade som enkla programmerbara logiska enheter (SPLD). Sådana FPGA:er, som är integrerade i ett enda chip med tillhandahållna sammankopplingar för mjukvarusammankoppling av block, har använts för att möta ökande tekniska krav. De kallas omfattande PLD och är utvecklade av Altera.

Transistorer är en annan klass av elektroniska enheter som är programmerbara baserat på gate array-masker. De består av transistormatriser som kan anslutas med hjälp av anpassade ledningar. De har gett vika för logiska block, vilket gör att användaren kan konfigurera på plats snarare än i produktionslabbet.

Idén att utveckla den första kommersiellt gångbara FPGA tillhör Xilinx medgrundare Ross Freeman och Bernard Vonderschmitt. XC2064 uppfanns 1985 och bestod av 64 konfigurerbara logikblock med 3 uppslagstabeller. Det ger en modern förståelse för vad en FPGA är. Det var i slutet av 1980 som Steve Casselmans föreslagna experiment för att skapa en dator med 6 000 000 omprogrammerade grindar hittade sponsorer i US Navy's Surface Warfare Division och beviljades sedan ett patent 1992.

I slutet av 1990 blev det större konkurrens inom FPGA-industrin och Xilinx marknadsandel började minska. Spelare som Actel, Altera, Lattice, QuickLogic, Cypress, Lucent och SiliconBlue har skapat en nisch på den globala FPGA-marknaden tillsammans med Xilinx. 1997 lyckades Adrian Thompson kombinera FPGA-programmering och genetisk algoritmteknologi med FPGA, vilket inledde en ny era av Evolvable.

Idag har FPGA:er blivit ganska överkomliga och fortsätter därför att vinna popularitet på konsumentmarknaderna. De består av en uppsättning logiska celler som kallas LUT:er omgivna av ett sammankopplat nätverk, vilket ger ett flexibelt system som kan implementera praktiskt taget vilken digital algoritm som helst.

Programmeringsprinciper

FPGA-programmering för nybörjare är processen att lära sig, planera, designa och implementera en lösning på en FPGA. Antalet och typen av layout varierar från program till program. Att skapa ett kravdokument och skapa ett designdokument som förklarar hur den föreslagna lösningen kommer att implementeras kan vara till stor hjälp för att lösa potentiella problem.

Tiden som läggs ner på att skapa ett designdokument av hög kvalitet kommer att spara tid i framtiden på att återställa, felsöka och åtgärda fel. Att implementera en lösning med FPGA-programmering innebär att skapa ett projekt med en av designintroduktionsmetoderna. Dessa inkluderar scheman eller HDL-kod, såsom Verilog eller VHDL. FPGA:er kan programmera utdatafilen till den fysiska FPGA-enheten med Alteras FPGA-programmeringsverktyg. Införandet av schematisk design används inte längre inom industrin. Syntes och programmering sköts nästan helt av leverantörsverktyg som ISE och Vivado och Numato Labs konfigurationsverktyg.

RTL står för Register Transfer Level. En designer kan också stöta på termerna Register Transfer Logic eller Register Transfer Language, som alla betyder samma sak i ett hårdvarudesignsammanhang. RTL är en abstraktion på högre nivå för digital hårdvarudesign som hamnar någonstans mellan strikt beteendemodellering i ena änden och rent strukturell på gatewaynivå i den andra.

Portmodellering innebär att beskriva hårdvaran med hjälp av grundläggande grindar, vilket är ganska tråkigt. RTL kan ses som analogt med termen "pseudokod" som används i grunderna för FPGA-programmering. Du kan beskriva hårdvarudesign som en serie steg eller dataflöde från en uppsättning register till nästa i varje klockcykel.

RTL kallas också för "dataflödesdesign". När RTL-designen är klar är det lättare att omvandla den till faktisk HDL-kod med hjälp av språk som Verilog, VHDL, SystemVerilog eller något annat hårdvarubeskrivningsspråk.

FPGA är mycket mer än bara ett gäng grindar. Även om det är möjligt att bygga logiska kretsar av vilken komplexitet som helst genom att organisera och koppla ihop logiska element. Det är ett sätt att uttrycka logik i ett enkelt format som så småningom kan förvandlas till en rad element. Två populära metoder för att göra detta är att introducera schema och hårdvarubeskrivningsspråk HDL. Innan den blev allmänt använd designade ingenjörer allt med hjälp av kretsscheman. De var väldigt enkla för små projekt, men smärtsamt ohanterliga för stora. Man kan bara föreställa sig hur Intels ingenjörer ritar diagram för Pentium, som har miljontals gateways! Detta är oacceptabelt svårt.

Verilog är ett HDL-hårdvarubeskrivningsspråk som kan användas för digitala kretsar i textform. Att lära sig Verilog är inte så svårt om användaren har erfarenhet av programmering. VHDL är en annan populär HDL som ofta används i branschen. Verilog och VHDL har mer eller mindre lika acceptans på marknaden, men användare väljer oftast Verilog eftersom det är lätt att lära sig och har syntaktisk likhet med C-språket.

FPGA:er kan betraktas som de byggstenar som möjliggör den önskade hårdvarukonfigurationen. Detta är en speciell form av PLD med högre densitet och förbättrad funktionalitet på kortare tid med CAD. FPGA finns i olika varianter baserat på den programmeringsteknik som används.

De kan programmeras med:

  1. Antifuse-teknik.
  2. Programmering baserad på Flash-teknik som en enhet från Actel.
  3. FPGA:n kan programmeras om flera tusen gånger, vilket tar några minuter i själva omprogrammeringsfältet och har ett icke-flyktigt minne.

FPGA baserad på SRAM-teknik, som erbjuder obegränsad omprogrammering och mycket snabb omkonfigurering eller partiell omkonfigurering under drift med en liten mängd extra kretsar. De flesta företag som Altera, Actel, Atmel och Xilinx producerar dessa enheter.

Konfigurerbara logiska block

Oavsett olika tillverkare och lite olika arkitekturer och funktionsuppsättningar delar de flesta FPGA:er ett gemensamt tillvägagångssätt. De grundläggande komponentblocken i vilken FPGA som helst är ett flexibelt programmerbart "logiskt block" (CLB) omgivet av programmerbara "ingångs-/utgångsblock" med en hierarki av routingkanaler som förbinder de olika blocken på kortet.

Dessutom kan de bestå av DLL:er för distribution och hantering av klockor och dedikerat block RAM-minne där huvudbyggnadsblocket är en logisk cell. Den senare består av en ingångsfunktionsgenerator, överföringslogik och lagringselement. Generatorer implementeras som uppslagstabeller och beror på introduktionen. Till exempel har Xilinx Spartan II 4 ingångs-LUTs, som var och en ger 16X1 bitars synkront RAM, använder multiplexorer som skiftregister för att fånga data i burst-läge. Förvaringselement är känsliga för kanterna på avtryckarna eller nivån på glidarna.

  1. Aritmetisk logik inkluderar en XOR-grind för att driva en full adderare och allokera logiska bärlinjer.
  2. I/O-block och routingmatris. Detta block har ingångar och utgångar som stöder ett brett utbud av signaleringsstandarder och gränssnitt.

Det grundläggande I/O-blocket visas nedan.

Buffertar i ingångs- och utgångsvägarna dirigerar signaler till den interna logiken och utgångsplattorna direkt eller genom en vippa. De är konfigurerbara till en mängd olika signaleringsstandarder som stöds, som kan användardefinieras och installeras externt.

Routing Matrix

På alla löpande band bestämmer det långsamma segmentet den totala produktiviteten. Routingalgoritmer används för att designa de mest effektiva vägarna för att uppnå optimal prestanda. Routing sker på olika nivåer, såsom lokal, allmän routing mellan olika CLB, I/O-routing mellan block och CLB, dedikerad routing för specifika signalklasser för att maximera prestanda, och Global Routing för att distribuera klocksignaler och andra signaler med mycket stora fläkt- ut. FPGA-familjer har också stora RAM-blockstrukturer för att komplettera distribuerade RAM-LUTs, vars storlek varierar mellan olika FPGA-enheter.

FPGA-design involverar i huvudsak samma tillvägagångssätt som vilket VLSI-system som helst, med huvudstegen är design, beteendesimulering, syntes, simulering efter syntes, översättning, kartläggning och routing, och efterföljande analys såsom tidssimulering och statisk timinganalys. På datorn verkar designen ordnad och kaklad, men i verkligheten är det dålig placering och routing, vilket resulterar i dålig prestanda.

För att förbättra prestandan hos en FPGA kan du alltid använda fler transistorer. Serviceområdet är högt. Att installera fler transistorer innebär att storskaliga konstruktioner är möjliga. Läckage är ett allvarligt problem för FPGA:er och samtidigt ett intressant sådant. Användningen av asynkron FPGA-arkitektur visar bäst resultat i kombination med pipelining-teknik, vilket minskar globala ingångar och förbättrar genomströmningen.

Portkvalitet och problem

Systemsäkerhet har alltid varit ett stort problem eftersom kod måste exponeras varje gång den läses in i FPGA. Denna flexibilitet gör FPGA:er mottagliga för skadliga modifieringar under tillverkning, så bitströmskryptering kom till dess räddning precis i tid.

Ofta ställs oerfarna designers och användare inför dilemmat om hur kraftfull en FPGA är lämplig för deras design. Tillverkare tillhandahåller ofta mätvärden som "antal grindar". Till exempel använder Xilinx FPGA-programmering 3 mätvärden för att mäta FPGA-kapacitet, maximala grindar, maximala minnesbitar och typiskt grindområde. Så länge de är konsekventa är migreringen mellan modeller något lättare, men det ger sällan en korrekt jämförelse mellan leverantörer på grund av mångfalden i arkitekturer och prestandaskillnader.

Den bästa indikatorn är att jämföra typen och mängden av logiska resurser som tillhandahålls. Utöver detta måste designern till fullo förstå vad som exakt behövs från enheten, eftersom tillverkare kommer att skryta med funktioner som gör minsta skillnad för jobbet. Till exempel har Alteras Stratix II EP2S180 cirka 1 86 576 4-ingångars LUT, medan Xilinx Virtex-4 XC4VLX200 innehåller 1 78 176 respektive. Men om designen bara behöver 177 000 LUT, kommer detta att vara tillräckligt.

Om RAM är ett önskvärt mått för en designer, skulle varken 6Mbit Xilinx XC4VLX200 eller 9Mbit Altera EP2S180 vara att föredra framför den mindre annonserade, äldre 9,9Mbit XC4VFX140-modellen.

Programmeringsspråk och mjukvara

Programmering av Altera FPGA för nybörjare börjar med att välja ett språk. Alternativet C, C++ eller System C låter dig dra fördel av kapaciteten hos de största enheterna och samtidigt uppnå realistisk utvecklingsgrafik. Möjligheten att använda C för FPGA-design tillhandahålls av HLS (High Level Synthesis), som har varit på gränsen till ett genombrott i många år med ett verktyg som Handle-C. Detta har nyligen blivit verklighet med stora leverantörer Altera och Xilinx som erbjuder HLS i sina Spectra-Q- respektive Vivado HLx-instrumentsviter.

Ett antal andra C-baserade nybörjare Altera FPGA-programmeringsimplementeringar finns tillgängliga, såsom OpenCL, som är avsedd för mjukvaruutvecklare som vill ha prestandavinster med FPGA utan en djup förståelse av FPGA-design.

Precis som med HDL har HLS begränsningar när man använder FPGA-programmeringsmetoder i C, liksom med traditionell HDL, måste utvecklare arbeta med en delmängd av språket. Det är till exempel svårt att syntetisera och implementera systemanrop eftersom du måste se till att allt är avgränsat och av en fast storlek. Det fina med HLS är att du kan utveckla dina egna flyttalsalgoritmer och det finns ett HLS-verktyg för att konvertera flyttal till fast punkt.

Att programmera FPGA:er med Xilinx programvara är inte alls svårt. Du kan få det genom att köpa Xilinx-produkter, gratis eller till ett modellspecifikt pris. Du kan komma åt en video på profilwebbplatsen, som tydligt visar användningsproceduren. Av alla företag att välja mellan när man letar efter programmerbara gate arrays, är Xilinx det överlägset bästa i gänget. De är skaparna av denna produkt och har gjort förbättringar av den under åren. Märkesprogramvara har blivit kraftfullare än någonsin tidigare.

Designstadier

FPGA-programmeringsutbildning kan göras online eftersom plattformen är väl representerad på Internet. När man sätter upp en FPGA är det första steget att designa kretsen, vilket kräver kunskap om digital elektronik. Till skillnad från programmering är det mycket svårare att börja skiva kod om programmets arkitektur inte är tydlig. Så snart det blir klart vad som behöver implementeras börjar vi beskriva kretsen med ett av språken: Verilog eller VHDL.

Ett faktum som visar ett paradigmskifte är att de inte kallas FPGA-programmeringsspråk, utan är beskrivningsspråk. På grund av komplexiteten i att testa digitala kretsar används vanligtvis testbanker som simulerar utrustningens beteende i detta skede. Denna typ av verktyg låter dig se tillståndet för signalen när som helst och kontrollera om det finns övergångar med önskat resultat.

Det tredje steget är känt som kretssyntes och är ett av de viktigaste. Den väljer de element som ska användas och deras relationer enligt beskrivningsfilerna. Detta steg kräver verktyg som underlättar och automatiserar uppgifter i de flesta situationer.

Hårdvara och inställningar

Intel Quartus Prime Software Suite Lite Edition är FPGA-designprogramvara. Den är idealisk för nybörjare eftersom den är gratis att ladda ner och ingen licensfil krävs. Du kan ladda ner programvaran från tillverkarens webbplats. Filerna är stora (flera gigabyte) och kan ta lång tid att ladda ner och installera. För att minimera tid och erforderligt diskutrymme, rekommenderas det att endast ladda ner de objekt som är nödvändiga för användaruppgifter. När du uppmanas att ladda ner filer, avmarkera "Välj alla" och välj endast Quartus Prime och Cyclone V stödenheter.

Algoritm för att skapa ett projekt:

  1. Öppna guiden Nytt projekt.
  2. Välj Nästa > Katalog > Namn > Objekt på toppnivå.
  3. Välj en katalog för att placera projektet, till exempel "Blink" och placera den i mappen intelFPGA_lite, men du kan placera den var som helst och klicka på "Nästa".
  4. När du uppmanas att skapa en katalog väljer du Ja.
  5. Välj "Töm projekt" och klicka på "Nästa".
  6. Lägg till filer och "Nästa".
  7. Ställ in familjer, enheter och kort genom att välja följande: familj - Cyclone V, enhet - Cyclone V SE, bas, enhetsnamn: 5CSEBA6U2317.
  8. För att välja en specifik enhet måste du trycka på upp-/nedpilarna för att se en lista över enheter som stöds tills 5CSEBA6U2317 visas.
  9. Användaren kan behöva expandera fältet "Namn" för att se enhetens fullständiga namn, klicka på "Nästa".
  10. När de ställer in EDA-verktyget använder de standardverktyg, så det blir inga ändringar, klicka på "Nästa" och "Slutför". Sammanfattningsskärmen visas.
  11. Skapa en HDL-fil med Verilog-inbäddning som HDL.
  12. Gå till fliken Arkiv (huvudfönster) och välj Ny.
  13. Välj Verilog HDL-fil och klicka på OK.
  14. Välj "Arkiv" > "Spara som".
  15. Välj ett filnamn. Detta är filnamnet på översta nivån och måste vara detsamma som projektnamnet.
  16. Klicka på "Spara".
  17. Skapa en Verilog-modul.
  18. Kopiera och klistra in Verilog-koden nedan i blink.v-fönstret och spara sedan kodfilen.
  19. Högerklicka på "Analys och syntes" och klicka sedan på "Start" för att utföra syntaxkontroll och syntes av Verilog-kod.

Om processen slutförs framgångsrikt visas en grön bock bredvid Analys och syntes. Om det finns ett fel, kontrollera syntaxen och se till att den exakt matchar kodblocket ovan.

Alla erfarna programmerare vet att komplexa program, även subrutiner, inte fungerar korrekt första gången. Mänsklig abstraktionsförmåga, baserad på erfarenhet, tillåter honom att hitta lösningar utan att oroa sig för de minsta detaljerna. Men den svåra sanningen är att det fysiska systemet som program är inbäddade i kräver att varje liten detalj tas med i beräkningen innan allt fungerar.

Med förbättringen av FPGA-utvecklingsprogramvaruverktyg främst från traditionella leverantörer såväl som oberoende verktygsleverantörer: Synplicity, FPGA blir mer populär dag för dag. Nu har FPGA:er börjat inkludera specialiserad hårdvara för kundkrävda funktioner, vilket minskar kostnaderna för tillverkarna. Det kan alltså i framtiden bli konkurrens mellan stela och lågkostnadssystem med flexibla kärnor. Kostnaderna förväntas sjunka ytterligare inom en snar framtid i takt med att FPGA:er blir mer populära.

Tillverkare har börjat experimentera med konceptet att bädda in FPGA:er i integrerade kretsar för att skapa en hybridenhet. Fokus förblir på interconnect routing, och CLB-arkitekturer ser mindre förändring. Eftersom FPGA:er fortsätter att driva processorer kommer den nya generationen att kräva inte bara kunskap om digital design av hårdvara, utan också erfarenhet av utvecklare i engångs-FPGA-programmeringsprocessen. Sammantaget förväntas FPGA ta marknadsandelar inom ASIC-enheter och bli den dominerande teknologin som täcker många applikationer från olika domäner.

För några år sedan, på frågan "vad gör du?" du kan vicka på ögonbrynen meningsfullt och säga "datornörd." Det var nog. Att förklara subtila saker för oförberedda människor som i bästa fall kunde skryta med en rad på sitt CV "Säker PC-användare" var onödigt, eftersom det bara skulle ge upphov till ännu fler frågor. Men tiderna förändras, läskunnigheten ökar, och nu, när "säker PC-användare" har blivit en atavism, har det följts av det en gång så universella ordet "datorspecialist."

En programmerares och en utvecklares yrken har mycket gemensamt, och i vardagen används dessa ord ofta som synonymer, men det finns en skillnad, även om det inte alltid märks. Varför dök det annars upp begrepp som mjukvaruutvecklare, datavetare och programmerare?

Programmering

Idag finns det inga tydligt definierade regler om vem som kallas programmerare och vem som kallas utvecklare. Därför finns det ingen annan utväg än att vända sig till ursprunget.

Datorer, internet, mobil kommunikation, såväl som en mängd andra underbara saker som nu är i det offentliga området, om de inte uppfunnits av militären, föll förr eller senare under deras känsliga vingar och övervakning. Om något kan flyga, skjuta, explodera eller skydda mot liknande fiendens handlingar, har du ett team av vetenskapsmän. Signera och ta emot. I en högteknologisk tidsålder skulle en soldat utan vetenskapsman ha det svårt - trots allt har till och med sådana små saker som stridsstövlar och kroppsrustningar absorberat mycket tekniskt kunnande. Vad kan vi säga om programmering av laserpistoler och interkontinentala missiler!

Om det inte vore för behovet som stimulerade staten att hitta pengar till finansiering är det okänt hur många decennier senare vi skulle ha haft datorer och internet till vårt förfogande. Så de som ännu inte har haft tid kan mentalt tacka angriparens påståenden som, i krigseld, födde och fortsätter att föda ny teknologi.

Och även efter att ha flyttat in i framtiden ett par decennier är det fortfarande svårt att föreställa sig någon Bill Gates som i sitt garage skulle sätta ihop en dator 17 meter lång och mer än 2,5 meter hög, som skulle bestå av 765 tusen delar, synkroniserade med 15 -meteraxel och drevs av en elmotor med en effekt på 5 hästkrafter - som Mark-1, utvecklad av flera Harvard-matematiker under ett kontrakt med IBM 1941.

Detta var för arbetskrävande och hjärnintensivt, så historiskt hände det att den som byggde datorn "dansade" den. Det fanns få datorer - i slutet av kriget fungerade bara 10 av samma "Colossi". Bara några år senare började de första kommersiella modellerna dyka upp - till exempel IBM 701 (19 enheter såldes under det första året), eller IBM 650 (450 enheter såldes redan under det första året). vetenskapliga laboratorier, flygbolag och statliga institutioner.

Och även om amerikaner sedan 1965 har börjat producera tusentals PDP-8, som kostar "bara" 18 tusen dollar, har den en ofullständig minnesarkitektur, vilket är anledningen till att ett stort antal resurskrävande projekt på den misslyckades. Så programmering på den tiden var inte lätt (hej hårdvara) och inte alls så bekvämt och tillgängligt som det är nu. Det var bara ett fåtal personer som visste hur man programmerar. Det är ännu färre som skulle kunna tjäna något på detta. Och hela denna tid behåller programmeraren helt välförtjänt ryktet om en "nörd", en bärare av samma tröja och en stammis på bibliotek. Ett underbarn som inte är den här världen som arbetar inom ett mycket smalt område, otillgängligt för massorna.

Historiskt sett arbetade människor med hjärnor som visste hur man pratade med maskiner på förnamnsbasis uteslutande för det militärindustriella komplexet eller inom vetenskapen. Härifrån riktig programmerare i ordets historiska bemärkelse är det här en person som skriver program för försvars-/vapenkomplexet, för datorkraft på vissa designbyråer eller vetenskapliga institut, programmerar robotar, raketer för rymdfärd osv. Enbart frågor av nationell betydelse. Maximal innovation. Monetär ränta är antingen frånvarande eller kommer på andra plats. Allmänheten bryr sig inte om hur många miljarder dollar de gav till uppfinnare för datorer och internet, precis som de inte bryr sig om hur mycket pengar som spenderades på Apollo-programmet. Men nu har alla en dator i fickan, och det finns en flagga och stöveltryck på månen. Ingen minns de rika, men alla minns innovatörerna, eftersom de förra konsumerar, medan de senare ger.

Utveckling

Kommersiell programmering i sin rena form fanns inte och existerar fortfarande inte - ordet "programmering" är helt klart malplacerad här. Här utveckling- en annan sak. Det faktum att Microsoft, IBM, HP, Apple och andra datorpionjärer tog marknader och tjänade enorma pengar förändrade inte det faktum att varje ny produkt var ett steg framåt. De löste nya, icke-triviala problem.

Var Torvalds programmerare? Självklart. Trots allt skrev han kärnan för Linux. I det här fallet spelar det ingen roll om han använde de bästa praxis och utvecklingsmetoder i arbetet med sitt arbete (till exempel om han namngav variablerna korrekt, om han använde minnet optimalt, och så vidare). Huvudsaken är att det fungerar. Och vinnarna döms inte. Precis som Brendan Eich, skaparen av JavaScript, inte bedöms, även om det objektivt sett finns något för det.

Är ett geni och deltidschef över nollor och ettor, ännu smartare än Torvalds och Eich, en programmerare om allt han gör är att lösa standardproblem? Han skriver till exempel nätbutiker. Ledande fråga: är en person som tjänstgjort i specialförbanden, men nu arbetar som ordningsvakt i en butik, specialsoldat eller ordningsvakt? Många vakter kallar sig specialstyrkor för att se bättre ut i sina egna ögon och på ett meningsfullt sätt gnugga sina armétatueringar. Sällan sätter någon ordet "tidigare" bredvid sitt yrke. Men bara ett fåtal erkänner att antingen har de tappat sina kvalifikationer och därför arbetar inom säkerhet, eller så är de för coola för den position de intar och skjuter därmed en kanon mot sparvar.

Några av dagens programmerare är precis som den här specialstyrkans soldat, som helt klart är malplacerad och uteslutande ägnar sig åt att tjäna pengar och slösar bort sin talang i sjön. Det finns en annan, mycket större kategori av människor (99%) som kallar sig programmerare, men i själva verket är utvecklare (denna kategori inkluderar även redneck-kodare). De skriver och ändrar sin egen eller någon annans kod, kommunicerar med kunden, klienter, fixar ständigt buggar - eftersom utvecklaren har råd att tillåta dem; de arbetar inte för en idé, utan för pengar: idag för en kille, imorgon för en annan. Vem kommer att ge mer?

Som en akademiker sa: "En avhandling om filosofi måste sluta med en revolution, annars är den inte en avhandling"; eller, enligt vår mening, bör en programmerares arbete sluta med ett tekniskt genombrott. Annars är detta inte en programmerares arbete.

Och låt inte anställningsuppgifterna a la "första kategori mjukvaruingenjörer" vara vilseledande. HR:s själva vet inte vad de gör, med hjälp av stämpeln från ett land som försvann för 25 år sedan. Allt du behöver göra är att ställa en ledande fråga: "Vad jobbar du med nu?" För man kan göra hur komplex utveckling som helst med en krånglig och svårbegriplig arkitektur, fullproppad med en massa beroenden och hjärnkrossande element, vilket kräver extraordinära mentala förmågor. Men om det här är en onlinebutik, en annan falsk "tjänst", en spamrobot eller, gud förbjude, ett webbläsarspel, och personen inte programmerar på fritiden, då luktar det utveckling. Som i frasen "utveckling av oljefält".

Därför på frågan "Vad gör du?" Ett mer korrekt svar kan vara "Jag är en programmerare i grunden, men jag jobbar som utvecklare", "Jag är en utvecklare, men en dag kommer jag att bli programmerare" eller "Jag är en utvecklare, jag hackar kål." När en situation kräver ett felaktigt och snabbt svar kan "programmeraren" trots allt förstås utvecklare i mjukvarusammanhang är ordet relativt nytt. Men att kalla sig programmerare medan man dricker juice i utkanten av outsourcing är att lura sig själv.