Mi az a számítógépes programozás? A szoftverfejlesztés meghatározása.

Ötéves fiam, Ramy, egy nap megkeresett, miközben otthon dolgoztam, és megkérdezte: "Mit csinálsz Mama?"

- Dolgozom - válaszoltam.

Ránézett a laptop képernyőmre, és ismét megkérdezte: - De mit csinálsz ?

Szünetet tartottam és elkezdtem ezen gondolkodni. Webfejlesztő vagyok, és JavaScript-ben programozom. Hogyan magyarázzam el ezt egy ötéves gyereknek?

„Írok utasításokat a számítógéphez, és a számítógép megteszi, amit parancsolok neki. Ezt hívják programozásnak - magyaráztam. Ramy értetlenül nézett ki.

Folytattam: "Például adhatok utasításokat a számítógépnek két szám hozzáadásához, és ez megadja a választ." Írtam egy függvényt, amely hozzáadta a 2 + 2 értéket, és megmutatta neki a választ a képernyőn. Felcsillant a szeme.

Ettől a ponttól kezdtem gondolkodni, mi is a programozás ? Mi történik valójában a motorháztető alatt? Amikor 2017-ben először kezdtem el megtanulni a kódolást a freeCodeCamp-on, a webhely beépített kódszerkesztőjét használtam, és láttam az eredményeket. Azonban nem igazán értettem a varázslatot, ami a színfalak mögött zajlott.

Kutatni kezdtem, és ezekre a kifejezésekre kerestem: „Mi az a számítógépes programozás? Mi a szoftver? Több mint 600 millió keresési eredmény található a Google-on a „Mi az a számítógépes programozás?” Kifejezésre Kicsit olyan, mint lefelé menni egy nyúllyukon - ez bonyolult és elsöprő lehet.

Szerettem volna átfogó bevezetést készíteni arról, hogy mi a kezdő számítógépes programozás és szoftverfejlesztés. Kezdem a számítógépes programozással, majd kitérek a számítógépes programozási nyelvekre. Akkor beszélek a szoftverekről és a szoftverek fejlesztéséről. Végül áttérek a számítógépes programozás jelenlegi trendjeire és jövőjére.

Ha a programozás világába való áttérésen gondolkodik, vagy csak a kódolás megtanulására kíváncsi, akkor ez általános áttekintést nyújt Önnek (túl sok!) Szakzsargon nélkül.

Csak egy dolgot kell megjegyezni: használhatja a „Fejlesztő” és a „Programozó” szavakat arra, hogy valaki kódot írjon.

Mi az a számítógépes programozás?

A Wikipédiában a „számítógépes programozás” meghatározása a következő:

"A számítógépes programozás egy futtatható számítógépes program tervezésének és felépítésének folyamata egy adott számítási eredmény elérése érdekében."

De mit jelent ez?

Maga a számítógép nem okos. Igen, hatalmasak és képesek sokkal gyorsabban elvégezni a feladatokat, mint az ember. De a számítógépeknek szükségük van egy emberre, hogy utasításokat írjon és megmondja nekik, mit tegyenek.

Ezért a programozás az utasítások megírásának folyamata. Ehhez programozási nyelvet használunk. Ezeket az utasításokat a számítógép számára érthető, olvasható formátumra fordítják. Ezután az utasításokat a számítógép hajtja végre.

Egy csésze tea elkészítésének programozása

Vegyünk példának egy csésze tea elkészítését. Ha utasításokat adna egy csésze tea elkészítéséről, az a következőképpen nézne ki:

  1. Forraljon fel egy kis vizet
  2. Öntsön forró vizet egy csészébe egy teáskanállal
  3. Hagyja a teát főzni
  4. Vegye ki a teáskannát
  5. Adjon hozzá tejet és / vagy cukrot (ha szükséges)

Egyszerű, igaz?

Mi természetesnek tartjuk, hogy az emberrel való kommunikáció más, mint a számítógéppel való kommunikáció. Az ember rendelkezik előzetes ismeretekkel és élettapasztalattal - lehet, hogy tudja, hol találja meg a teát. Feltételezzük, hogy tudják, hogy a tejet hűtőszekrényben tárolják.

Az embereknek van intuíciójuk is. Ha nem talál egy csészét, akkor inkább keresse meg a szekrényeket. Az emberek nem verbális jelzéseit is olvashatják, például a testbeszédet.

Ami a programozást illeti, nagyon konkrétnak kell lenned . A csésze tea készítésének folytatásával írhat utasításokat ilyen álkóddal:

  1. Menj a konyhába
  2. Keresse meg a vízforralót
  3. Nyissa ki a vízforraló fedelét
  4. Töltse fel a kannát vízzel
  5. Kapcsolja be a vízforralót
  6. Várja meg, amíg 100 Celsius fokig fel nem forr
  7. Keress egy csészét

És így tovább.

Mi van, ha a fenti utasításokhoz hasonló utasítások nem elégek? Lehetséges, hogy hozzá kell adnia néhány logikát az összes forgatókönyv elszámolásához. Például: 2) Keresse meg a vízforralót. Nos, elektromos vízforraló-e, vagy egy vízforraló, amelyet főzőlapra tesz? Meg kell adnia egy feltételt: ha elektromos vízforraló, akkor tegye meg az xyz-t. Ellenkező esetben tegye a xyz-t egy vízforralóhoz, amelyet főzőlapra tett.

Még akkor is, ha úgy gondolja, hogy minden lehetséges állapotot figyelembe vett, és nagyon konkrét utasításokat adott, vannak olyan dolgok, amelyeket nem lehet előre látni. Elkezdi főzni a csészéjét, és valami elromlik. Óh ne! A vízforraló leáll, miután elkezdte forralni.

Mi történt? Van egy hiba a kódodban! A hiba a kód hibája vagy hibája, amely váratlan eredményekhez vezethet. A kód kijavítása érdekében egy „hibakeresés” folyamaton megy keresztül, amely során megtalálja a kódban található problémákat és megoldja azokat.

Ebben az esetben az utasításai nem tartalmazták a vízforraló feltöltését 0,8 literre a fűtőelem eltakarására. Tehát a vízforraló biztonsági intézkedésként kikapcsol.

A hibák futtatása után a program futtatása után a fejlesztők tesztelést és egységtesztelést végeznek programjaikon. Az egységtesztelés az, ahol teszteket ír a kód egyes részeire. A tesztek vagy sikertelenek, vagy sikeresek.

Például ír egy függvényt, amely két számot ad hozzá: 1 + 1. Ezután megír egy egységtesztet, ahol a várható kimenet 2. Minden válasz sikertelen lesz, hacsak nem 2.

Addig átnézed a kódodat, amíg minden váratlan probléma nélkül fut. A programozás tehát egy részletes orientált és iteratív folyamat, ahol folyamatosan javítja a korábban írtakat.

Hogyan érti számítógépe a kódot?

Amit a legtöbb programozó „kódként” ír, az egy magas szintű programozási nyelv. Tervezés szerint elvont. Az absztrakció ebben az összefüggésben azt jelenti, hogy távolabb kerülünk a gépi kódtól, és a programozási nyelvek közelebb vannak a beszélt nyelvekhez.

De a számítógép nem érti a szöveges kódot. Le kell fordítani (lefordítani) gépi kódra. A gépi kód egy utasításkészlet, amelyet a számítógép központi processzora (CPU) megérthet. Gondoljon a CPU-ra, mint a számítógép agyára. A gépi kód egyesekből és nullákból áll. Ezt binárisnak nevezzük.

Például így írhatja binárisan a „Hello World” szót:

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100

Amint láthatja, a bináris bináris változat nem könnyen olvasható az emberek számára, ezért hajlamosak vagyunk elkerülni a gépi kódba történő programozást!

Mi is pontosan a programozási nyelv?

A programozási nyelvek mind az alacsony szintű nyelvek, például az összeállítás, mind a magas szintű programozási nyelvek, például a JavaScript, spektrumába tartoznak.

De pontosan mi a programozási nyelv? A legjobb hasonlat, amelyre gondolok, azok a beszélt nyelvek, amelyeket ma használunk. Minden nyelv ugyanazt az elképzelést fejezi ki, de más módon különböző módon:

Angol: Hello

Francia: Bonjour

Spanyolul: Hola

A programozási nyelvek ugyanazon gondolat kifejezésének különböző módjai, de helyette számítógépre. Az alábbiak három különböző programozási nyelven nyomtatják ki a „Hello” szót:

JavaScript: alert(“Hello”);

Piton: print(“Hello”)

Perl: print "Hello";

Minden programozási nyelvnek megvan a maga szintaxisa. Angolul van nyelvtanunk. Ugyanez vonatkozik a programozási nyelvekre is - mindegyiknek megvan a maga szabályrendszere.

Honnan lehet tudni, hogy a programozási nyelv programozási nyelv-e?

Ez furcsa kérdésnek tűnhet. Minden kód programozási nyelven íródott? Technikailag nem. Például tévhit, hogy a HTML (HyperText Markup Language) programozási nyelv. Valójában egy „deklaratív” nyelvről van szó, amely a Wikipédia szerint:

„... a számítógépes programok struktúrájának és elemeinek felépítésének stílusa, amely kifejezi a számítás logikáját anélkül, hogy leírná annak vezérlési folyamatát.”

Más szavakkal, a HTML biztosítja a weboldal struktúráját, de nem szabályozza a weboldal viselkedését vagy működését.

Megállapíthatja, hogy egy nyelv programozási nyelv-e. A Turing Machine egy hipotetikus gép, amelyet Alan Turing írt le 1936-ban. Ahhoz, hogy a programozási nyelv teljes legyen Turing, szüksége van:

  1. Feltételes elágazás (amelyet alább vizsgálok).
  2. Végtelen papírszalagra való írás és olvasás képessége. Ez lényegében azt jelenti, hogy adatokat tárolhatunk a memóriában.

Nem fogom mélyen feltárni ezt a témát, de ha érdekel, ez a videó hasznos bevezető.

Mik a programozási nyelv alapjai?

Vannak olyan alapvető elemek, amelyek gyakran szerepelnek. Ide tartoznak a változók, ciklusok, feltételes utasítások, adatstruktúrák és algoritmusok. Ezek a legtöbb programozási nyelv építőkövei.

Mi az a 'for loop'?

A ciklusok ugyanis akkor hasznosak, ha az utasításokat ismételten kell végrehajtani. Például délutáni teát fogyaszt, és öt csésze teát kell készítenie vendégeinek. Egy csésze tea elkészítéséhez utasításokat kell követnie, például a korábbi példámhoz.

Ahelyett, hogy ötször írná az utasításokat, megmondhatja a számítógépnek, hogy ötször végezzen végig ugyanazokat az utasításokat. Ez lehetővé teszi a méretezést.

Az alábbiakban bemutatunk egy példát egy alapvető forciklusra:

for (let i = 0; i < 5; i++) { console.log("Make Tea!"); } //expected output: "Make Tea!" "Make Tea!" "Make Tea!" "Make Tea!" "Make Tea!" 

Mi a feltételes állítás?

A JavaScript-ben if...elsefeltételes utasítások vannak. Ezeket akkor használják, ha egy feltétel alapján különböző műveleteket akar végrehajtani.

Visszatérve korábbi példámra, megkérdezi a felhasználót , hogy akar-e tejet a teájába. Ha mégis tejet akarnak, akkor adjunk hozzá tejet a teához, különben ne tegyünk semmit.

Itt van egy példa egy if...elseutasításra a JavaScript-ben:

if(milk == true) { // add milk } else { // don't add milk } 

Mik az adatszerkezetek?

"Az adatstruktúra az adatok hatékony felhasználásának rendezésének egyik módja ... A gyors és hatékony algoritmusok létrehozásának alapvető összetevői."

(Könnyen haladó adatstruktúrák, William Fiset)

A sok programozási nyelven megtalálható általános adatstruktúrák tömbök, objektumok, sorrendek és uniók. Például tömböket veszek fel.

A JavaScript-ben egy tömb számos adatot tárolhat, például számokat és karakterláncokat (szöveg). Szeretem a kekszet a teámmal együtt, ezért a tömbömben tárolom őket:

biscuits = [“shortbread”, “digestive”, “ginger nut”]; 

Ezeket a kekszeket a számítógép memóriájában tárolják, és Ön, mint fejlesztő, hozzáférhet egy adott kekszhez, hivatkozva annak indexére. Az indexet 0-tól kezdi számolni. Az index olyan, mint a keksz pozíciója egy kekszformában. A szögletes zárójelben történő jelöléssel hivatkozhat rá.

biscuits[0]; // “shortbread” biscuits[1]; // “digestive” biscuits[2]; // “ginger nut” 

Ha azt szeretnénk, hogy egy emésztési keksz, elérheti az index helyzet: biscuits[1]. Könnyen megtalálom, mert tudom, hol van tárolva.

Ne feledje, hogy a tömb első eleme a 0. index. Tehát, amikor az 1. indexre hivatkozunk, valójában ez a tömb második eleme.

Ezért az adatstruktúrák az adatkezelés egyik módja. Ez magában foglalja az adatok tárolását és visszakeresését. Hatékonyabb az algoritmusok végrehajtása, ha az adatokat adatstruktúrába rendezik.

Mi az algoritmus?

Az algoritmus egy speciális utasításkészlet, amely megoldja a problémát. Ez egy elvont fogalom. Itt található egy link a TED rövid videójára a "Mi az az algoritmus?"

Emlékszel, amikor korábban egy csésze teát készítettünk? Ez lényegében algoritmus: szekvenciális utasítások halmaza.

Amikor megírtam az első függvényemet JavaScript-ben, akkor létrehoztam az első algoritmust anélkül, hogy tudtam volna, hogy ez egy algoritmus! A függvény egy algoritmus megvalósítása.

Csakúgy, mint a való életben, a kódolási problémára gyakran többféle megoldás létezik. Tegyük fel például, hogy olyan kávézóba készül elmenni, ahol még soha nem volt. Számos módja van az úticél elérésének. Egyes útvonalak hosszabb ideig tartanak, mint mások, de végül mindegyik ugyanarra a helyre vezet. Ideális esetben a leggyorsabb, leghatékonyabb és legegyszerűbb útvonalat szeretné választani.

Ugyanez az elv alkalmazható a programozásnál is. A kódolási problémát általában néhány módon lehet megoldani, a programozók pedig a legelegánsabb és leghatékonyabb megoldás megtalálására törekszenek.

A fejlesztők sokszor nem érik jól az első próbálkozáskor! Ahogy egy cikkhez írnék egy első vázlatot, ugyanez a kódolásnál is. Többször átfogalmaznék egy cikket, ahol megváltoztathatom a felépítést, szerkeszthetem, átírhatom a szakaszokat, és kivághatom a felesleges mondatokat. A programozás során hasonló folyamaton megyünk keresztül, és ezt nevezzük kódunk refaktorának.

Melyek a ma használt fő programozási nyelvek? Hányan vannak?

Úgy tűnik, hogy némi vita folyik a programozási nyelvek teljes számáról az interneten. Egyes webhelyek, például a Wikipedia, körülbelül 700 „minden figyelemre méltó” jelenlegi és történelmi programozási nyelvet tartalmaznak. Más oldalak, például a Tiobe 250 „legnépszerűbb” nyelv nyomon követését és figyelemmel kísérését jelenti.

A Githubon 2019 legnépszerűbb programozási nyelve a JavaScript volt:

Miért van annyi programozási nyelv? Hogyan fejlődtek a programozási nyelvek?

Különböző programozási nyelveket fejlesztenek ki a különböző igények kielégítésére. Ez a programozási nyelvek története során megmutatkozik. Kérjük, olvassa el ezt az O'Reilly diagramot, amely feltérképezi a programozási nyelvek történetét az 1950-es évektől 2004-ig.

Az ötvenes évek közepén a FORTRAN (Formula Translation) összetett matematikai, statisztikai és tudományos problémák kidolgozására jött létre. A COBOL-t („Common Business Oriented Language”) 1959-ben hozták létre, hogy megkönnyítsék a vállalkozások számára a kód használatát. Vannak olyan nyelvek, amelyek alkalmasabbak a statisztikai elemzések elvégzésére, például R (1976).

Az 1970-es évektől kezdve nőtt az általános célú programozási nyelvek, mint például a C, C ++, C # és a Java. Amint a fenti ábrán látható, az elsődleges nyelvek dominálják a legnépszerűbb 10 nyelvet.

Az 1995-ben létrehozott JavaScript népszerű nyelv az internet számára. Interaktivitást és életet ad a weboldalaknak.

Újabban olyan új nyelvek születését láthattuk, mint a Go from Google, amelynek célja a nagy szoftverrendszerek hatékonyabb fenntartása volt. Valószínűleg még több programozási nyelvet fogunk látni a jövőben.

Összeállított és értelmezett programozási nyelvek

Amint jobban megismeri a programozási nyelveket, találkozni fog összeállított és értelmezett programozási nyelvekkel. Mi a különbség?

Mi az a fordított nyelv?

A programozási nyelvek, mint például a C, C ++ és a Java, egy „build” eljárással rendelkeznek, ahol a kódot a számítógép számára olvashatóbb formátumra (gépi nyelvre) fordítják le.

Könnyebb lehet két emberre gondolni, akik nem ugyanazt a nyelvet beszélik, de együtt kell működniük. John angolul, Chloe pedig franciául beszél. Chloe ír egy sor útmutatást a csokoládé szuflé elkészítéséről, de John nem érti. Olyan fordítóra van szükségük, amely képes angolul és franciául is beszélni. Könnyebb, ha a fordító előre lefordítja Chloe utasításait, mielőtt közösen főznének.

Ehelyett a fejlesztők olyan programozási nyelvet „beszélnek”, mint a Java vagy a Python. Szükségük van a kódjuk fordítására (lefordítására) gépi nyelvre, mielőtt a program futtatható lenne, hogy a számítógép megértse.

A fordított nyelvből készített programokat a számítógép könnyebben érti, ezért nagyon gyorsan futnak.

Mi az értelmezett nyelv?

A JavaScript, a PHP és a Python példák az értelmezett programozási nyelvekre. Nincs építési folyamat, és a kódot sem kell lefordítani. A program futtatásakor a kódod értelmezésre vagy soronkénti olvasásra kerül.

Vissza Chloe és John hasonlatához. John felír egy sor útmutatást a pásztortorta elkészítéséről. A fordító nem fordítja le előre John utasításait, hanem csatlakozik hozzájuk főzésükhöz. A fordító John utasításainak minden sorát angolról franciára fordítja, miközben Chloe főz. Emiatt hosszabb időbe telik, amíg Chloe elkészíti és elkészíti az ételt.

Ezért az értelmezett nyelvek lassabbak, mint a lefordított nyelvek. Ezeket menet közben kell lefordítani, hogy a számítógép megértse.

De a just-in-time (JIT) fordítókkal az értelmezett nyelvek egyre gyorsabbak és hatékonyabbak.

Melyik programozási nyelvet (nyelveket) érdemes választanom?

A programozási nyelvek nagyjából ugyanazt csinálják, de ezek csak különböző módok arra, hogy ugyanazokat az utasításokat kifejezzék a számítógépen. Miután megértette az egyik programozási nyelv fogalmait és alapjait, a másik nyelv tanulásának görbéje nem lesz olyan meredek.

A programozási nyelv, amelyet először el kell tanulnia, számos tényezőtől függ. Például webfejlesztő akartam lenni, ezért elsődleges programozási nyelvként a JavaScript-et választottam. A web más nyelvei, amelyeket megtanulhat, a PHP és a Ruby on Rails.

Ha adatkutatóvá akar válni, akkor a Python lehet opció. A Pythont az egyik legjobb adattudományi eszköznek tekintik a nagy adatok elemzéséhez. Korábban említettem az R-t, amely egy másik nyelv, amelyet az adatkutatók és statisztikusok széles körben használnak.

A Python egy általános célú programozási nyelv, és hasznos abban is, hogy megtanulja, ha be akar lépni a Gépi tanulás és a Mesterséges Intelligencia területére.

Ha szoftvermérnökké akar válni, akkor a Java lehet egy lehetőség. A Java az egyik legnépszerűbb és legkeresettebb nyelv a világon. Ez egy sokoldalú nyelv, amelyet kis- és nagyvállalati szoftverek fejlesztésére lehet használni.

Gondolja át, hogy milyen szerepet szeretne a technikában, és milyen társaságokban szeretne dolgozni.

A programozási nyelv kiválasztása attól is függ, hogy milyen szoftvert próbál építeni. Ez szépen elvezet minket a következő szakaszunkhoz.

Mi a szoftver?

Hányszor lép kapcsolatba a szoftverekkel egy adott napon?

A szoftver mindenhol megtalálható. Beágyazott rendszerekként integrálva a mindennapi készülékekbe, például a mikrohullámú sütőbe, mosógépekbe, autókba, tévékbe, gyermekjátékokba és távirányítóba. Aztán vannak még nyilvánvalóbb számítógéppel kapcsolatos eszközök, amelyek rendelkeznek alkalmazás- és / vagy rendszerszoftverekkel, például táblagépek, okostelefonok, laptopok, asztali számítógépek és otthoni asszisztensek, például az Alexa.

Az átlagember valószínűleg napi néhány tucatszor lép interakcióba a szoftverekkel, ha nem több. Ez a mindennapi életünk része.

Minden szoftvert egy fejlesztő programoz. A szoftver természeténél fogva mozgékony és folyamatosan képes iterálni. A szoftver és a hardver összefonódik. Képzelje el telefonját alkalmazások és operációs rendszer nélkül. A telefon lényegében drága tégla lenne! Ezért a szoftver élettartamot biztosít a hardver számára, a hardver pedig az, ahogyan kölcsönhatásba lépünk a szoftverrel.

A programozók által létrehozott szoftverek többsége magas szintű programozási nyelven íródott.

Mi a szoftverfejlesztés?

A szoftverfejlesztés az ötlet megalkotásától a fejlesztésig és a telepítésig terjed. Ez a folyamat az ötlet megfogalmazásától a szoftver telepítéséig a szoftver életciklusaként is ismert.

A szoftver életciklusának több szakasza van: felfedezés, tervezés, programozás / létrehozás, tesztelés és telepítés / végrehajtás. Ez magában foglalja a szoftverfejlesztési ökoszisztéma minden mást is, például a karbantartást, a dokumentációt és a hibajavításokat.

Itt nem részletezem, mivel a szoftverfejlesztés témája saját cikkét indokolja.

A szoftverfejlesztés és a számítógépes programozás jelenlegi trendjei

Mesterséges intelligencia és gépi tanulás

Az elmúlt években valószínűleg hallott olyan kifejezésekről, mint a mesterséges intelligencia és a gépi tanulás. Néha felcserélhetőek, de ugyanazok?

Nem, nem teljesen ugyanazok. A gépi tanulás az, ahol egy gép tapasztalat útján tanul. Míg a mesterséges intelligencia tágabb elképzelés, hogy a gépek intelligensen tudják végrehajtani a feladatokat. A gépi tanulás a mesterséges intelligencia részhalmaza.

Mi az a mesterséges intelligencia?

Kitértem a programozási nyelvek működésére - a programozó utasításokat készít a számítógép végrehajtására. A mesterséges intelligencia (AI) egy tágabb fogalom, ahol a számítógépek utánozhatják az agy működését. Gépet képez, hogy „gondolkodjon”, mint egy ember.

A nagy kérdés: meg tudja-e másolni az emberi intelligenciát egy gépben? Utánozhatja-e azt, ahogyan az ember megtanulja, indokolja és érzékeli? Alan Turing ezt a kérdést tette fel 1950-es cikkében:

- Gondolkodhatnak a gépek?

(Számítástechnika és intelligencia, 1950, Alan Turing)

Turing cikkében javasolta a „Turing-tesztet”, amelynek során egy gépet „intelligensnek” minősítenének, ha az ember nem tudna különbséget tenni az emberi és a mesterségesen intelligens gép válaszai között.

70 év után az AI-fejlesztők, az akadémikusok, a tudósok és a kutatók továbbra is megpróbálják megválaszolni ezt a kérdést, és mesterségesen intelligens gépet hoznak létre. Azt hiszem, még nem tartunk ott. Próbáltál beszélgetni Sirivel vagy Alexával? A két eszközzel folytatott beszélgetések továbbra is alapvetőek. Abban azonban biztos vagyok, hogy csak idő kérdése, hogy a technológia fejlődjön.

A DeepMind-hez hasonló vállalatok ezt a koncepciót kutatják, és azt, hogy a gépek képesek-e intelligenciára. A DeepMind AlphaGo programja akkor került a címlapra, amikor legyőzte a Go profi játékosát. Ez hatalmas mérföldkő volt az AI számára.

Mi az a gépi tanulás?

A gépi tanulás (ML) a mesterséges intelligencia részhalmaza. Az ML a programozás egy másik módja. Az az elképzelés, hogy a számítógép képes kifejezetten programozás nélkül tanulni. Arthur Samuel először a gépi tanulás ötletével állt elő 1959-ben:

"A számítógépek programozása tapasztalatból való tanuláshoz végül feleslegessé teszi e részletes programozási erőfeszítések szükségességét."

Amikor megtanítottam a fiamat, hogyan kell felismerni a macskát, megmutattam neki macskaképeket. Ezt addig csináltam, amíg meg nem tudta ismerni a macskát, anélkül, hogy felszólítottam volna.

A gépi tanulás hasonló ehhez. Száz képet (bevitelt) ad a számítógépének macskákról. Ezután megtanulja az adatok mintáit, és az ismétlés révén osztályozási rendszert épít fel. Ha több képet ad a számítógépének macskákról és más állatokról, akkor képesnek kell lennie arra, hogy azonosítsa, a képen látható állat macskás-e vagy sem. Lényegében megtanulta, hogyan kell kinéznie egy macskának.

Az ML megadja az Ön számítógépének adatait és példáit, és képes önmagának tanulni, mint a csecsemők és a kisgyermekek. Ahelyett, hogy a fejlesztők utasításokat adnának a számítógépnek, a számítógép saját utasításkészletet készít a gépi tanulási algoritmusok követésére. A gépi tanulási algoritmusok az ML részhalmaza, a „mély tanulás” néven ismert fogalom.

„Az AI az egyik legmélyebb dolog, amin emberiségként dolgozunk. Ez mélyebb, mint a tűz vagy az áram ... ”

(Sundar Pichai, Világgazdasági Fórum, 2020 január)

Sundar Pichai, az Alphabet Inc. vezérigazgatójának idézete összefoglalja az AI és az ML fontosságát.

Mi a számítógépes programozás jövője?

Ez az utolsó szakasz jóslataim lesznek a számítógépes programozás jövőjéről.

A fejlesztők folytatják az új programozási nyelvek létrehozását. A programozási nyelvek elvontabbá válnak, és így hozzáférhetővé válnak a kódolást tanuló egyének számára.

Úgy gondolom, hogy az általános és középiskolai tantervekben nagyobb hangsúlyt kap az oktatás kódolása és programozása. A fejlesztők és programozók iránti kereslet csak növekszik, ha a technológia és a szoftver egyre jobban integrálódik mindennapi életünkbe. A programozás mindenütt jelen lesz.

Látni fogjuk az ML és az AI folyamatos növekedését és népszerűségét, hogy segítsük a fejlesztőket a szoftverfejlesztési folyamatban. Ez magában foglalja a tesztelés automatizálását, valamint a sebezhetőségek és hibák felderítését és megelőzését.

Az AI forradalmasítja társadalmunk minden aspektusát, nemcsak a programozás és a szoftverfejlesztés területén. Például nagy előrelépéseket láthattunk az AI és az önvezető autók területén.

A világ egyik vezető vállalata, aki önvezető autókat fejleszt, az Elon Musk által alapított Tesla. Emberi járművezető felügyelete mellett a Tesla autó mostantól automatikusan sávot vált, korlátozottan hozzáférhető autópályákon autonóm módon navigálhat, a tulajdonos pedig behívhatja az autót egy garázsba vagy egy parkolóba. A Tesla célja egy teljesen automatizált, önvezető autó létrehozása emberi felügyelet nélkül.

Amint a gépek intelligensebbé válnak, eljuthatunk egy olyan ponthoz, ahol a gépek felülmúlják az emberek intelligenciáját. Ezt szingularitásnak nevezzük. Jelenleg teljes tudományos fantasztikusnak tűnhet! De olyan jelentős számok, mint Ray Kurzweil, azt jósolják, hogy az emberi szintű intelligenciával rendelkező gépek a következő 20 évben elérhetőek lesznek. Kurzweil ismert a technológiák fejlődésének pontos előrejelzéséről. Erről könyvet írt: A szellemi gépek kora.

Hogyan változik társadalmunk a szuper intelligens gépek eredményeként?

Utolsó szavak

A technológia befolyásolja és a kód életünk szinte minden részét érinti. A szórakoztatás választásától (online játékok, streaming) és a vásárlás módjától kezdve a választásig, amit eszünk, és akár a randevúnkig is! A kód fontos, és több munkahely változik, és megköveteli az emberektől, hogy legalább valamilyen alapvető ismerettel rendelkezzenek a programozásról.

A globális fejlesztői népesség és demográfia 2019 tanulmány szerint azonban a világon csak hozzávetőlegesen 23,9 millió fejlesztő van. Ennek szemszögéből nézve a világ népességének csupán 0,3% -a tud programozni. Ahogy korábban tárgyaltam, egyre nagyobb a függőségünk a szoftvertől és a technológiától. Az Egyesült Államok Munkaügyi Hivatalának statisztikai adatai szerint a szoftvermérnökök iránti kereslet várhatóan 21% -kal fog növekedni 2018-tól 2028-ig. Ezért növelnünk kell a fejlesztők számát.

Ha arra gondolsz, hogy fejlesztő legyél, kezdd el ma. Hihetetlenül izgalmas idő erre! Számos online megtanul kódolható forrás. Vannak olyan saját tempójú platformok, mint a freeCodeCamp. Van egy remek bejegyzés is Laurence Bradfordtól, amely az összes legjobb forrást összeállítja az ingyenes kódolás megtanulásához. Vessen egy kis kutatást, és derítse ki, melyik erőforrás felel meg a tanulási stílusának.

Ha bármilyen kérdése van, vagy csak köszönni szeretne, keressen meg a Twitteren @PhoebeVF.

Külön köszönet Katerina Limpitsouninak az Undraw-tól a cikk illusztrációinak elkészítéséért.