Proqramlaşdırma dillərinin tarixi. Proqramlaşdırma dilləri İlk dəfə proqramlaşdırma dilini yaradanlar




Proqramlaşdırma dillərinin ümumi tarixini və məlum və naməlum dillərin inkişaf tarixini bilmək çox vacibdir. Bu yazıda siz bununla tanış olacaqsınız, amma əvvəlcə “Proqramlaşdırma dili nədir?” sualını xatırlayaq.

Proqramlaşdırma dili problemin həlli proqramını ardıcıl mətn şəklində insan üçün əlverişli formada yazmağa imkan verən qeyd və qaydalar sistemidir.

50s

XX əsrin 50-ci illərində vakuum borulu kompüterlərin meydana çıxması ilə proqramlaşdırma dillərinin sürətli inkişafı başladı. Proqramlaşdırma proqramların bilavasitə maşın göstərişləri şəklində (proqramçıların dediyi kimi kodlarda) yazılması ilə başladı. O dövrdə hər hansı bir proqramın hazırlanmasından xeyli baha başa gələn kompüterlər yüksək effektiv kod tələb edirdi.

Kodlaşdırmanı asanlaşdırmaq üçün maşın yönümlü işlənmişdir ki, bu da maşın təlimatlarını simvolik formada yazmağa imkan verir. Assembly dili müəyyən bir kompüterin təlimat sistemindən asılı idi. Maksimum icra sürəti tələb edən kiçik tapşırıqları proqramlaşdırmaq üçün kifayət qədər rahat idi.

Bununla belə, Assambleya dilində böyük layihələr hazırlamaq çətin idi. Əsas problem, Assambleyada yazılmış proqramın müəyyən bir kompüterin arxitekturasına bağlanması və başqa maşınlara ötürülə bilməməsi idi. Kompüter təkmilləşdirildikdə Assambleyadakı bütün proqramlar yenidən yazılmalı oldu.

Demək olar ki, dərhal kompüterlərin meydana gəlməsi ilə yüksək səviyyəli dillər hazırlanmışdır, yəni. xüsusi arxitekturadan asılı olmayan dillər. Proqramı yüksək səviyyəli dildə yerinə yetirmək üçün əvvəlcə onu maşın əmr dilinə çevirmək lazımdır. Belə tərcüməni yerinə yetirən xüsusi proqrama tərcüməçi və ya kompilyator deyilir.

Tərcümə edilmiş proqram daha sonra birbaşa kompüter tərəfindən yerinə yetirilir. Proqramı müəyyən bir kompüterin arxitekturasından asılı olmayan, lakin buna baxmayaraq, maşın əmr dilinə mümkün qədər yaxın olan ara dilə tərcümə etmək imkanı da var.

Aralıq dil proqramı daha sonra tərcüməçi adlanan xüsusi proqram tərəfindən yerinə yetirilir. İcra olunan proqram fraqmenti icradan dərhal əvvəl aralıq dildən maşın əmr dilinə tərcümə edildikdə, tez tərtib etmək də mümkündür.

50-ci illərin ortalarında Con Backusun rəhbərliyi altında IBM üçün yüksək səviyyəli alqoritmik proqramlaşdırma dili FORTRAN hazırlanmışdır. Arifmetik ifadələri maşın koduna çevirən dillərdə artıq inkişaf olmasına baxmayaraq, şərti ifadələrdən və giriş/çıxış operatorlarından istifadə edərək hesablama alqoritmi yazmaq imkanı verən FORTRAN dilinin (FORmula TRANslator) yaradılması, yüksək səviyyəli proqramlaşdırma dilləri dövrünün başlanğıc nöqtəsi.

Əvvəlcə IBM arxitekturasına yönəlmiş FORTRAN dilinə alternativ olaraq 50-ci illərin sonlarında Peter Naurun rəhbərliyi altında ALGOL (ALGOritmic Language) hazırlanmışdır. Bu dilin tərtibatçılarının qarşısına qoyduğu əsas məqsəd kompüter sisteminin spesifik arxitekturasından müstəqil olmaq idi.

Bundan əlavə, ALGOL dilinin yaradıcıları alqoritmləri təsvir etmək və riyaziyyatda qəbul edilənə yaxın qeyd sistemindən istifadə etmək üçün əlverişli bir dil hazırlamağa çalışırdılar. FORTRAN və ALGOL hesablama proqramlaşdırmasına yönəlmiş ilk dillər idi.

60-lar

60-cı illərin sonlarında Nayard və Dahlın rəhbərliyi altında istifadəçi tərəfindən müəyyən edilmiş məlumat növləri konsepsiyasından istifadə edərək Simula-67 dili hazırlanmışdır. Əslində, bu, siniflər anlayışından istifadə edən ilk dildir.

70-ci illər

70-ci illərin ortalarında Wirth dərhal geniş istifadə olunan Paskal dilini təklif etdi. Eyni zamanda, ABŞ Müdafiə Nazirliyinin təşəbbüsü ilə proqramçı və lord Bayronun qızı Ada Lavleysin şərəfinə Ada adlı yüksək səviyyəli dilin yaradılması üzərində iş başlandı.

Dilin yaradılması tələblərin müəyyən edilməsi və spesifikasiyaların hazırlanması ilə başladı. Layihə üzərində dörd müstəqil qrup çalışdı, lakin onların hamısı Paskal dilini əsas götürdülər. 1980-ci illərin əvvəllərində Ada dili üçün ilk sənaye kompilyatoru hazırlanmışdır.

C inkişafı

Universal proqramlaşdırma dili 70-ci illərin ortalarında Denis Ritchie və Ken Thompson tərəfindən hazırlanmışdır. Bu dil populyar sistem proqramlaşdırma dilinə çevrildi və bir vaxtlar UNIX əməliyyat sisteminin nüvəsini yazmaq üçün istifadə olunurdu.

C dili standartı 1982-ci ildə ANSI işçi qrupu tərəfindən hazırlanmışdır. C dili üçün Beynəlxalq Standart 1990-cı ildə qəbul edilmişdir. C dili proqramlaşdırma dillərinin və Java-nın inkişafı üçün əsas təşkil etmişdir.

C dili əməliyyat sistemləri yaratarkən Assembler-dən həqiqətən xilas olmağı mümkün etdi. Məsələn, Unix əməliyyat sisteminin demək olar ki, bütün mətni C dilində yazılmışdır və beləliklə, konkret kompüterdən asılı deyildir.

C-nin əsas üstünlüyü onun sadəliyi və psevdo-elmi həllərin olmamasıdır. Parametrlərin funksiyaya ötürülməsi mexanizmi (yalnız dəyərlə) sadə və aydın şəkildə təsvir edilmişdir. C proqramını yaradan proqramçı həmişə bu proqramın necə icra olunacağını aydın başa düşür.

Göstərici anlayışı, C dilinin statik və avtomatik (stek) dəyişənləri hər hansı bir müasir kompüterin strukturunu ən yaxından əks etdirir, buna görə də C proqramları sazlama üçün effektiv və rahatdır.

Hazırda proqramların böyük əksəriyyəti C və C++ dillərində yazılır. Hər hansı bir əməliyyat sisteminin interfeysi (sözdə API - Tətbiq Proqramı İnterfeysi), yəni. proqram tərtibatçıları üçün nəzərdə tutulmuş sistem zəngləri toplusu adətən C dilində funksiyalar toplusudur.

Alqoritmik dillərlə yanaşı, işgüzar məlumatların emalı üçün nəzərdə tutulan dillər, həmçinin süni intellekt dilləri paralel olaraq inkişaf etmişdir. Birinciyə COBOL (Common Business Oriented Language) dili, ikincisinə isə LISP (LISt Processing) və Proloq dilləri daxildir.

60-cı illərdə J. McCarthy-nin rəhbərliyi altında hazırlanmış LISP dili, oyun nəzəriyyəsində geniş tətbiq tapmış ilk funksional siyahı emal dili idi.

90-cı illər

90-cı illərdə İnternetin yayılması ilə paylanmış məlumatların emalı imkanları genişləndi ki, bu da proqramlaşdırma dillərinin inkişafına təsir etdi. Perl, Document Description Languages ​​və XML kimi server proqramlarının yaradılmasına yönəlmiş dillər meydana çıxdı.

Ənənəvi proqramlaşdırma dilləri C++ və Paskal da dəyişikliklərə məruz qaldı: proqramlaşdırma dili təkcə dilin özünün funksionallığını deyil, həm də proqramlaşdırma mühitinin təmin etdiyi sinif kitabxanalarını ifadə etməyə başladı.

Diqqət proqramlaşdırma dillərinin özlərinin spesifikasiyasından paylanmış tətbiqlərin qarşılıqlı əlaqəsi mexanizmlərinin standartlaşdırılmasına yönəldilmişdir. Yeni texnologiyalar meydana çıxdı - paylanmış obyektlərin qarşılıqlı əlaqəsini təyin edən COM və CORBA.

Proqramlaşdırma dillərinin tətbiqi sahələri

Hal-hazırda proqramlaşdırma dilləri insan fəaliyyətinin müxtəlif sahələrində istifadə olunur, məsələn:

  • elmi hesablama (C++, FORTRAN, Java dilləri);
  • sistem proqramlaşdırması (C++, Java dilləri);
  • məlumat emalı (C++, COBOL, Java dilləri);
  • süni intellekt (LISP, Prolog);
  • nəşriyyat fəaliyyəti (Postscript, TeX);
  • məlumatların uzaqdan emalı (Perl, PHP, Java, C++);
  • sənədlərin təsviri (HTML, XML).

Proqramlaşdırma dillərinin tarixinə əsaslanaraq deyə bilərik ki, zaman keçdikcə bəzi dillər inkişaf edib, yeni xüsusiyyətlər əldə edib və tələbatda qalıb, digərləri isə öz aktuallığını itirib və bu gün ən yaxşı halda sırf nəzəri maraq doğurur.

Mənə həmişə elə gəlirdi ki, Fortran birincidir, bu, xüsusən proqramlaşdırma dilləri tarixinin yəqin ki, ən məşhur diaqramında əksini tapıb. Əslində təsir və populyarlıq baxımından Fortran əlbəttə ki, birinci idi. Ancaq tarixi baxımdan yox.

[Tamamilə dəqiq desək, həqiqətən ilk proqramlaşdırma dili, görünür, Çarlz Bebbicin proqramlarının Lavleysin qrafinyası Ada Oqusta Bayronun “Analitik mühərrikin eskizi” adlı məşhur məqaləsində yazılan nota idi (məqalə bir mətnin tərcüməsi idi). İtalyan Menabrea tərəfindən Babbagenin fərq mühərrikinin işləməsi ilə bağlı məqalə və Ada Augusta tərəfindən yazılmış əhəmiyyətli bir əlavə var). Bununla belə, bu, tam bir proqramlaşdırma dili deyildi və onun nəzərdə tutulduğu maşın yalnız parlaq bir insanın zehnində mövcud idi. Yeri gəlmişkən qeyd edim ki, 1991-ci ildə London Elm Muzeyi onun Bebbicin rəsmləri əsasında onun maşınını yaratdı və o, hazırda işlək vəziyyətdədir]

Beləliklə, ilk proqramlaşdırma dili. Bu, heç də Fortran deyildi, lakin alman alimi, ixtiraçı və dizayneri Konrad Zuse tərəfindən nasistdə işlənib hazırlanmış Plankalkül, yəni alman dilindən “Planların Hesabı” və ya “Hesablamalar Planı” kimi tərcümə olunan heyrətamiz bir dil idi. 1942-1945-ci illərdə Almaniya.

[Zuse eyni zamanda bir neçə müxtəlif kompüter modelləri hazırladı. Məsələn, onun Z3 modeli də məşhur Marc I və ENIAC-dan əvvəl yaradılmışdı və eyni zamanda tamamilə tam hüquqlu maşın idi. ]

İddia olunur ki, Zuse bütün nailiyyətlərinə tamamilə müstəqil şəkildə, amerikalıların və ingilislərin yaxın vaxtlarda həyata keçirdiyi işlərdən xəbəri olmadan, hətta Bebbecin yaradıcılığından da xəbəri olmadan nail olub.

Proqramlaşdırma dilinin yaradılması kompüterlərin “hardware” hissəsinin yaradılması işinin təbii davamı idi. Zuse özü ondan istifadə edərək şahmat oynamaq üçün proqram yazmağa çalışdı. Dil üzərində iş təxminən 1946-cı ildə tamamlandı, lakin dil inkişaf etdirilmədi və hətta yazılı təlimat yalnız 1972-ci ildə nəşr olundu. Buna görə dil naməlum oldu və sənayenin gələcək inkişafına əhəmiyyətli təsir göstərmədi (məsələn, Fortran ilə müqayisədə).

Bununla belə, Plankalkül, şübhəsiz ki, dünyanın ilk yüksək səviyyəli proqramlaşdırma dili idi. Dilin əsas anlayışlarına aşağıdakılar daxildir:

  • Alt proqramların olması (və bu 1940-cı illərdədir!!!)
  • Təyinat operatorunun olması (=>)
  • Velosipedlər
  • Şərti ifadə (əgər)
  • Massivləri manipulyasiya etmək bacarığı
  • Siyahıları manipulyasiya etmək bacarığı
Dili yaratarkən Zuse mühəndislər və alimlər tərəfindən qoyulan bir çox problemi topladı. Dilin həqiqətən bu problemləri həll etməyə qadir olduğunu nümayiş etdirmək üçün çoxlu sayda nümunə proqramlar yazılmışdır (xüsusən də şahmat oynayan proqram üçün təxminən 60 səhifəlik nümunələr).

Dilin problemlərindən biri onun son dərəcə mürəkkəb sintaksisi idi ki, bu da müasir proqramçı üçün çox qeyri-adi idi. Plankalkül dilində A = A+1 tapşırığına bir nümunə.

Plankalkül dünyanın ilk yüksək səviyyəli proqramlaşdırma dilidir, alman mühəndis Konrad Zuse tərəfindən hazırlanmışdır
Z4 kompüteri üçün 1942 və 1946 (aşağıda göstərilən kompüter, Vikipediyadan götürülmüş şəkil).

İkinci Dünya Müharibəsi gedirdi, Zuse başqa ölkələrin alimlərindən təcrid olunmuş şəkildə, tamamilə müstəqil işləyirdi. Bu müddət ərzində o, təkcə proqramlaşdırma dilini deyil,
həm də onun üzərində şahmat mövqelərini qiymətləndirmək üçün 49 səhifəlik proqramlar yazmışdır. Onun əsəri tam olaraq xeyli sonra, 1972-ci ildə nəşr olundu.

Mən bu proqramlaşdırma dili haqqında arxeoloji tədqiqat kimi danışmaq riskini götürəcəyəm. Üstəlik, rus dilində bu dil haqqında çox az danışılır.

Yalnız 1957-ci ildə (iş 1954-cü ildə başlamışdır) ən çox ilk yüksək səviyyəli dil hesab edən bir dil olan Fortran ortaya çıxdı.

"Z4" elektromexaniki idi, buna görə Plankalkyl tərtibçisi və ya tərcüməçisi yox idi, lakin 2000-ci ildə Svobodnıda
Berlin Universiteti (Freie Universität Berlin) onun tərcüməçisini yaratdı
dialekt (brauzerdə Java applet kimi işləyir).

Həyata keçirilən dialekt Plankalkül-2000 adlanır və müxtəlif sadələşdirmələri ilə orijinaldan fərqlənir.
Məsələn, qeyd forması sadələşdirilmişdir.
Birinci sətir ifadənin özünü, aşağıda isə onun bəzi arqumentlərini (dəyişən növü, indekslər və s.) ehtiva edirdi. Bundan əlavə, əməliyyatların simvolları sadələşdirilmişdir,
sizə və mənə daha tanış bir forma gətirdi.

Dil, mənim fikrimcə, qırxıncı illər üçün kifayət qədər zəngindir: şərti konstruksiyalar, iki növ döngə (while və for üçün analoqu), massivlər və tuplelər var,
alt proqramları təsvir edə və çağıra bilərsiniz (lakin rekursiya yoxdur).

Bütün dəyişənlər dörd növə bölünür.

  • "Dəyişən" ( IN giriş dəyişənləri) “V” hərfi və rəqəmlə başlayan, yalnız oxumaq üçün nəzərdə tutulmuş alt proqramların giriş dəyişənləridir.
  • "Zwischenwert" ( Z aralıq dəyərlər), oxuna bilən və yazıla bilən, “Z” və rəqəmlə başlayan aralıq hesablanmış dəyərləri saxlamaq üçün nəzərdə tutulmuşdur.
  • "Nəticə" ( R nəticə) - bu dəyişənlər “R” və rəqəmdən başlayaraq hesablamanın nəticəsini qaytarır.
  • "İndizə" ( indekslər) - döngə dəyişənləri (üçün analoqu), "i" ilə başlayın, sonra bir sıra ola bilər, nömrə iç-içə döngələri təşkil etmək üçün lazımdır.
Üç növ dəyişən mövcuddur. “Z4” üzən nöqtəli nömrələrlə işləyə bilsə də, tərcüməçi bunu edə bilməz.
  • Qeyri-mənfi tam ədəd üçün ölçü bitlərlə göstərilir. “0” yazmağın iki forması var - bir bit, “n.0” - “n” bit, məsələn, 8.0 - bir bayt (8 bit).
  • Tuple mötərizədə göstərilmişdir, məsələn (3.0, 4.0) - bunlar üç və dörd bitdən ibarət iki dəyişəndir, tuple birdən çox elementə malik olmalıdır.
  • Massiv nöqtə vasitəsilə yazılır, məsələn: 4.5.0 - hər biri beş bitdən ibarət dörd elementdən ibarət massiv, 32.(0, 8.0, 16.0) - hər birinin üç dəyişəni var: bir bit, səkkiz və
    on altı.
Plankalküll sintaksisdə çox sadələşdirilə bilər, lakin müasir dialekt Zusenin istifadə etdiyi qeydi demək olar ki, tam olaraq kopyalayır
proqramı kağız üzərində "debug" ehtiyacı. Ancaq dili qurmaq o qədər sadədir ki, mən onu 15 dəqiqə ərzində tamamilə öyrəndim və hətta bir neçə versiyada bir neçə proqram yazdım.

Onlardan biri göstərilən (sıra ilə) Fibonaççi sayını hesablayır:
P0 FaktEvgenyStepanischev (V0[:4.0]) => (R0[:10.0]) (0, 1) => (Z0[:10.0], Z1[:10.0]) W1 (V0[:4.0]) [ i > 0 -> (Z0[:10.0] + Z1[:10.0], Z1[:10.0] - Z0[:10.0]) => (Z1[:10.0], Z0[:10.0]) ] Z1[:10.0] => R0[:10.0] SON
Bunu belə işə salmalısınız: tərcüməçi ilə səhifəni açın, proqramımı pəncərəyə köçürün, "Tərtib et" düyməsini basın, ayrıca
Java appleti olan pəncərə (kompüterdə Java-nın quraşdırılması tələb olunur), açılan pəncərədə siçan vasitəsilə V0 başlanğıc dəyərini bit-bit yazın (yaşıl dairələrə klikləmək lazımdır),
sonra brauzer pəncərəsində "Çalış" düyməsini basın, qırmızı xəttdə (R0) nəticədə dəyəri görəcəksiniz.


Dildəki alt proqramlar "P" simvolu və unikal nömrə ilə başlayır, ardınca onu çağırmaq olar, mənim alt proqramım "FactEvgenyStepanischev" adlanır, bitir
“END” açar sözü ilə alt proqram (orijinal Plankalküledə yox idi).

Alt proqram qəbul edilmiş və qaytarılmış dəyərləri təsvir edir, mən hər giriş üçün bir dəyişən, ölçüsü 4 bit və bir çıxış dəyişəni, ölçüsü 10 istifadə edirəm
Z0 və Z1 aralıq dəyişənlərinə “sıfır” və “bir” dəyərləri təyin edilir. Dəyişənlərin növü hər dəfə istifadə edildikdə göstərilməlidir; dəyişən digərinə çevrilməlidir;
növü mümkün deyil.

Aşağıda "for" döngəsi (W1) var, çünki mən döngə dəyişəninin sayını göstərməmişəm (burada buraxılmış birinci kvadrat mötərizələrdə göstərilib), "i" döngə dəyişəni nömrəsiz istifadə olunur.
Təkrarların sayı dəyirmi mötərizədə, dövrün gövdəsi isə sonrakı kvadrat mötərizədə göstərilir. Detallar ola bilər
təsvirində tapın.

“Ox” əməliyyatı („->“) şərti konstruksiyadır, soldakı ifadə doğru olarsa sağdakı hissə yerinə yetiriləcək. Məsələn, dialektdə yalnız ən sadə ifadələr işləyir
Orada bir döngə daxil edə bilərsiniz, lakin "Çalış" düyməsi appletdə görünmədi, ona görə də mən onu loop daxilində təyin etməklə məhdudlaşdım.

Burada Pearl, Python və ya PHP istifadə edənlərə yaxşı məlum olan mürəkkəb tapşırıqdan istifadə etdim, lakin o, fərqli işləyir - tapşırıqlar yerinə yetirilir.
ardıcıl olaraq, soldan sağa, ona görə də özümü "(Z0[:10.0] + Z1[:10.0], Z1[:10.0]) => (Z1[:10.0], Z0[:10.0]) ilə məhdudlaşdıra bilmirəm ", nəticə gözlənilən olmayacaq.

Sonda alt proqramın nəticə dəyərinə aralıq dəyər təyin edirəm.

Bundan başqa dildə demək olar ki, heç nə yoxdur. Massiv elementlərinə girişi təsvir etməyin, funksiyanı və “while” dövrəsini ayrıca çağırmağın mənası yoxdur;
Dil tərəfindən dəstəklənən bütün əməliyyatlar (onlardan bir neçəsi var - məntiqi əməliyyatlar, bit əməliyyatları və dörd arifmetik əməliyyat) tanış görünür.

Həbsdən qorxma, ssenaridən qorxma,
Vəba və aclıqdan qorxma,
Və qorxmalı olduğunuz yeganə şey budur
Kim deyəcək: "Mən bunu necə edəcəyimi bilirəm!"
(A. Qaliç)

Gəlin bunu düz və qısa izah edək: “ilk olaraq hansı proqramlaşdırma dilini seçməliyəm?” sualına düzgün cavab. təbiətdə yoxdur. Hətta sinfin “bu üçündən biri” cavabı. Bu, indi də yoxdur, mən bunu yazdığım konkret anda, 10 aprel 2017-ci il, Kiyev vaxtı ilə 21:38 - amma bu suala bir ay, altı ay və ya baxaraq cavab verməyə çalışmağın daha az mənası var. bir il qabaqda.

Mövcud olan bir neçədir düzgün suallar verməközünüzə vermək üçün faydalı olan suallar. Bu, peşəyə daxil olmaq üçün ilk test tapşırığınız olacaq: bu suallara cavab vermək və qərar qəbul etməzdən əvvəl ümumiyyətlə mövzu sahəsini düşünüb araşdırmaq istəyirsiniz?

Əgər belədirsə, gəl məni izlə.

Bəzi xəbərdarlıqlar

İlk olaraq, bir dil kifayət deyil. Hətta təhsilin birinci ilində. Ən azı bir neçə "ixtisaslaşdırılmış" dil hələ də tələb olunacaq (HTML, CSS, SQL, YAML, JSON, XML, Markdown - ən azı müxtəlif nümunələr sintaksislər, bu, demək olar ki, mütləq oxunmalı və yüksək ehtimalla - yazılı). Ancaq təkcə bu deyil. Qeyri-JS proqramçı, demək olar ki, bir az JS oxumalıdır; JS proqramçısı - Python-da təsvir olunan alqoritmin icrasını yoxlamaq; bir sistem proqramçısının başqasının skript dilindəki pis kodu ilə məşğul olması üçün.

Və "orta" səviyyəyə gedən yolda onlardan yarım çoxunu mənimsəməli olacaqsınız. Əsl peşəkar olmaq üçün isə hər cür fantastik zibilin paradiqmalarını başa düşməlisiniz.

İkincisi, Çətin ki, ömrün boyu bir dildə yazasan. Və çətin ki, kifayət qədər uzun olsun. Ola bilsin ki, bir ay belə burada olmayacaqsan. 2003-cü ildə ilk işimdə məni C++ alqoritmisti kimi işə götürdüm, lakin mən bir az PHP-də vebsaytı dəstəklədim, həmçinin Excel VBA-da kitabxanamıza interfeys əlavə etdim. (titrəyir). Və heç bir şey normal deyil, bu sadəcə yeniyetmələrin başına gəlmir.

Ancaq təkcə bu deyil - sevimli ofisinizdəki "əsas" dil dəyişəcək və ya başqa bir işəgötürən sizi sevdiyiniz mövzuda işə götürəcək, başlanğıc və ya müəssisə mədəniyyətinin hava cərəyanları dəyişəcək - və WHAM - artıq ofisinizin strukturlarını xatırlamırsınız. belə diqqətlə seçilmiş "birinci dil".

Buna görə də, ümumiyyətlə, bu seçimi müalicə etməməlisiniz həddindən artıq çox ciddi, arvad və ya ev seçmək kimi (onlar da dəyişdirilə bilər - amma yenə də bir az daha çətindir). Başlamaq, hər şeyi sınamaq və özünüzü tapmaq bir neçə həftə/ay/il “hətta haradan başlamaq lazımdır”ı təhlil etməkdən daha mənalı strategiyadır.

Üçüncüsü, və ən əsası (və ilk ikisindən irəli gəlir) - çox vaxt "siz dili seçirsiniz" deyil, dil səni seçir. Nə etdiyinizlə həqiqətən maraqlanmağa, bunu həyatınızın vacib bir hissəsi kimi seçməyə dəyər - və mən xüsusi olaraq belə insanlarla danışıram, “şənbə günləri part-time proqramlaşdırma” ilə işləməyə ümid edənlərlə deyil (heç nə edə bilməz) onları xilas edin) - buna görə də bu seçimi etməyə dəyər və sonra "nə seçmək" ilə bağlı bütün məsləhətlər əhəmiyyətsiz olacaq. Maraqlı bir tapşırıq və ya perspektivli bir işəgötürən öz-özünə görünəcək, onu sərinləşdirə bilmədiyin dil öz-özünə düşəcək, amma başqa biri böyüyəcək. Sadəcə bizi izləyin.

Diqqət, düzgün suallar!

Və yenə də nədənsə başlamaq üçün qız/oğlan həyat haqqında düşünməyə başlayır (yəni hansı proqramlaşdırma dilini öyrənəcəyini seçir. başlamaq), özünüzə bunu soruşa bilərsiniz:

Niyə oxumağa gedirsən?Əvvəlcə özünüzə vicdanla soruşmaq üçün çox vacib bir sual. Əsas peşəniz (məsələn, mikrobiologiya və ya mühasibatlıq) üçün əlavə alət əldə edirsiniz? Boş vaxtlarınızda əylənirsiniz? Məktəbdə uşağa kömək et?.. Yaxşı, mkdev-də biz bir qayda olaraq, proqramçı kimi işləyəcəyini düşünürük (baxmayaraq ki, biz mikrobioloqa dərs verməkdən məmnun olarıq - Ruby-nin onlar arasında çox məşhur olduğunu bilirdinizmi?) . Amma: siz artıq əminsiniz ki, İT sahəsində bir peşəni mümkün qədər tez tapmaq istəyirsiniz, yoxsa indicə sınamağa qərar vermisiniz, bu sizin üçündür? İkinci halda, bəyəndiyinizi başa düşmək üçün onlarla dil və yanaşmanı sınamağa dəyər ola bilər - ya da heç bir şey yoxdur, bu da yaxşıdır!

Əlaqədar sual: Nə qədər vaxtınız var? Aydın bir müddət olmadan "bir ildən sonra mən artıq X dollar qazanmalıyam" - özünüz üçün "universitet sinfi" təhsilini dərhal planlaşdırmaq ağlabatan (və olduqca xoş) ola bilər: yəni bir neçə klassik dilin siyahısını tərtib edin - Sxem, Haskell, Prolog, bir neçə sənaye (Java , Ruby, JS), bir neçə super dəbli olanlar (Rust, Pony, Elixir)... Və “dəqiq nə yazmaq” sualı birtəhər öz-özünə yaranacaq. . Ancaq "əsl və tez bir peşə" istəyirsinizsə, onda...

Hansı sahədə işləmək istədiyinizi dəqiq bilirsinizmi?“Yalnız oyun inkişafı, başqa heç nə mənə yaraşmır”, “Məktəbdən bəri arzuladığım şey süni intellektdir”, “Mən avadanlıqlara daha yaxın olmaq, hər cür robot və sensorları proqramlaşdırmaq istəyirəm” və ya hətta “Dostlarım “bigdata” ilə seriallar haqqında startap başlayacağıq” bu suala cavab vermək üçün yaxşı seçimdir. Ancaq onlara sahib olmaq məcburiyyətində deyilsiniz. “Zəhmət olmasa, mənə bütün diapazonu göstərin” də yaxşı cavabdır. Və "bu arada, əmimin şirkətindəki mühasibinə kömək etməyə çalışacağam, amma daha maraqlı bir şey istəyirlər" də normaldır.

Viktor sizə proqramlaşdırmada ilk addımlarınızı atmağa kömək edəcək, sizə əsasları və Ruby dilini öyrədəcək!

Daha: Nə etmək istərdiniz? Deyəsən yuxarıdakı sualla eyni sualdır? Amma yox. Gözlərinizi yumun və ideal iş axınınızın necə göründüyünü təsəvvür edin? İstifadəçinin nə qədər səy sərf edildiyini bilmədən xoşbəxt olması üçün interfeyslə sınaqdan keçirin? Oyunun fizika mühərriki üçün yeni hissəciklərin toqquşması alqoritmi icad edin və onu təkmilləşdirmək üçün üç il lazımdır? Hər kəs ağlına gəlməzdən əvvəl onlarla tanınmış komponenti yeni bir başlanğıc ideyasına birləşdirərək tez bir zamanda çoxlu kod yazın? Yeni bir mühitdə işləmək üçün mürəkkəb bir xarici şeylə məşğul olmaq? - çoxlu sayda seçim var və bəziləri hətta "sadəcə proqramçı" peşəsindən uzaqlaşır - devops sahəsinə və ya UI mütəxəssisləri və ya məlumat analitikləri sahəsinə... Bu meditasiyaya ən azı 20 dəqiqə vaxt ayırın. nəticə Tamamilə gözlənilməz ola bilər.

Məsələn (əvvəlki sualla əlaqədar olaraq), hətta oyunun inkişafında iştirak etmək istədiyinizə əmin olsanız belə, yeni səviyyələri aradan qaldırmaq istədiyinizi və ya fiziki cəhətdən dəqiq toqquşma alqoritmlərini işləyərək həqiqətən əylənəcəyinizi anlayın və ya - yüz milyonlarla əlaqəyə tab gətirə bilən bir oyun serverinin yaradılması - bu, hələ də öyrənmə və özünü inkişaf etdirmək üçün çox fərqli istiqamətlərdir.

Və yalnız yuxarıda göstərilən bütün suallara cavab verdikdən (və ya qəsdən cavab verməyi təxirə salmağa qərar verdikdən) sonra praqmatik bir sual verməyin mənası var: Hazırda hansı dillər aktiv şəkildə istifadə olunur?- sizi maraqlandıran sahədə, mövzuda və mühitdə. Və yaxın gələcəkdə mənimsəmək üçün üç (doğrudur!) seçin.

Tam olaraq nə seçmək lazımdır - aşağıda qısa bir baxış təqdim etsə də, yerindəcə başa düşməli olacaqsınız bu gün məşhur olanlardan bəziləri dillər.

Bəzi cavablar

Qəribə sakit bir səs eşidirsiniz?

Aşağıda sadalanan “cavablar” köhnəlmiş və paslanmışdır. Bu məqaləni yazıldıqdan altı ay sonra oxuyursunuzsa, çox güman ki, "cavablar" bölməsi artıq bir qədər köhnəlmişdir ( Əgər bəzi fəlakətli hadisə baş vermədi, nəticədə hər şey köhnəldi); bir il sonra oxudunuz - tamamilə köhnəlmişdir. 5 ildən sonra oxuyursan -...amma şeytan bilir. Sahəmizdə hər şey hər gün dəyişir, lakin çox vaxt uzun müddət ərzində kifayət qədər sabit qalır.

Yaxşı, ümumiyyətlə, aydındır - diqqətlə oxuyun.

Aşağıda xəyali ən yaxşı 15 cari proqramlaşdırma dili haqqında subyektiv, qısa və natamam məlumat (əlifba sırası ilə).

Müəllif onların hər birinə müəyyən bir nömrə təyin etdi: bu, dou.ua tərtibatçıları üçün Ukraynanın əsas veb saytında ən azı dilin qeyd olunduğu vakansiyaların sayıdır. Bu rəqəmlər özlüyündə heç bir məna kəsb etmir, lakin postsovet/Avropa ölkələrindən birinin nümunəsindən istifadə edərək bəzi natamam müqayisəli təhlillər aparmağa, çox qeyri-dəqiq müqayisəli nəticələr çıxarmağa imkan verir.

Diqqət yetirin: bu nömrələrin mahiyyəti o qədər də çox deyil ki, "rəqəm daha böyük olanı seçmək lazımdır"! Məsələ ondadır ki, bu dillərin heç biri üçün rəqəm sıfıra bərabər deyil - çox böyük olmayan və düzünü desək, çox da firavan olmayan bir ölkədə. Yəni orada 5 yazılmış bir dildə bir iş tapa bilərsiniz - ancaq bunun üçün onu həqiqətən sevməlisiniz və məqsəd sadəcə "layiqli pul üçün bir şey proqramlaşdırmaqdırsa" - əlbəttə ki, sayın harda daha çox olduğunu seçmək lazımdır, istəyəni işə götürəcəklər, görünür .

    C(100?- deyəsən, axtarış sistemi öhdəsindən gələ bilmədi) - proqramlaşdırmanın yeganə yaşayan babası və üstəlik, bütün canlıların ən canlısı. Hər şey sistemi (Rust and Go-a düzəlişlərlə, aşağıda olan), bütün növ mikrokontrollerlərin və quraşdırılmış cihazların proqramlaşdırılması, dronlar üçün hər cür drayverlər və digər ağılları qarışdıran şeylər hələ də C-dir. digər dilləri və kitabxanaları sürətləndirmək (bir növ elmi axmaqlıq, məsələn, əvvəlcə Python-da yazılmış, sonra sürət üçün C-də yenidən yazılmışdır, sonra bu C tətbiqi üçün sarğılar Ruby, Julia və Haskell-də görünür ... biz belə edirik. yaşayır). Bir sözlə, mümkün deyil birinci dil, lakin öyrənmək üçün məcburi - mütləq. Üstəlik, o, ümumiyyətlə dayanmır və yeni standartlar olduqca təzə və yaxşıdır;

    C++ (144)- C-nin eybəcər (bəzilərinə görə) və ya ləzzətli mürəkkəb (bəzilərinə görə) qardaşı oğlu. Obyekt yönümlü, meta-proqramlaşdırıla bilən, dəhşətli dərəcədə həddən artıq mürəkkəb, yavaş tərtib... bir sözlə, C++ proqramlaşdırma dilləri arasında mənim ilk sevgimdir. . İndi o, mühakimə edə bildiyi qədər, oyunların, bəzi masa üstü sistemlərin və bir az C-nin mümkün olduğu hər yerdə istifadə olunur, lakin daha mürəkkəb kod tələb olunur (çünki gcc kompilyatoru demək olar ki, bütün OS-lərdə mövcuddur və hər ikisini tərtib edir. );

    C# (414)- proqramçıların öz ruhlarını şeytana satdıqları və demək olar ki, Microsoft ekosisteminə sıx bağlı olduqları bir neçə dildən biri (düzünü desək - xüsusən tərtibatçılar üçün - olduqca təsirli şəkildə inkişaf etdirilmişdir). Tətbiq sahələri - oyunlar və ya Complex Expensive Enterprise proqramı. Dilin özü, bu an kimi, olduqca gözəl və mütərəqqidir. Və ümumiyyətlə, demək olar ki, bütün yeni olmayan və praqmatik ümumi təyinatlı dillər kimi, bir az funksionallıq, çoxlu OO, bəzi metaproqramlaşdırma və s.;

    Clojure (6)- proqramlaşdırma dillərinin belə sehrli unicorn, funksional bir dil olan Lisp-in varisi olan JVM-də işləyir (aşağıda Java haqqında oxuyun). Onun ClojureScript ləhcəsi JS-də tərtib edilir (həmçinin bunun nə üçün vacib olduğunu aşağıda oxuyun). “Ağıllı” startaplarda və Çox Ciddi Şirkətlərin istehsalında istifadə olunur. Siz yalnız Böyük Sevgi ilə seçə bilərsiniz (amma o, sərindir);

    Erlang+Eliksir (5+10)- Erlanq telekommunikasiya (əvvəllər) və ümumiyyətlə yüksək yüklü paylanmış (indi) proqramların yaradılması üçün xüsusilə məşhur olan dil və platformadır. Elixir eyni platformada işləyən, lakin Erlanqdan daha az yad olan bir dildir (lakin platformanın “əsas” dilini hələ də ən azı bir az başa düşmək lazımdır, aşağıda Java haqqında müzakirəyə baxın). Bu gün bütün bunlar bir az “elitizm”i təlqin edir, lakin o, bəzi sahələrdə (məsələn, bank sistemlərində) möhkəm kök salıb – və olduqca maraqlıdır;

    ES (JavaScript, CoffeeScript, TypeScript və s.) (788+10+64+...)- hazırda aşkar sevimli olan ES/JS/... mahiyyətcə dil deyil, dillər ailəsidir. Onların üzərində veb interfeyslər və mobil interfeyslər (bir neçə müxtəlif üsullarla), həmçinin (bir neçə başqa yolla) server və admin proqram təminatı yazılıb və şeytan keçəldir. Bu gün dəqiq olaraq “JavaScript dili” adlandırılan şeyi müəyyən etmək olduqca çətindir: “JavaScript proqramçısı” kimi işə götürməklə, bəxtinizdən asılı olaraq, bank sisteminin qədim interfeysini saxlayan şəxs ola bilərsiniz. yeri gəlmişkən, hər hansı bir brauzerdə işləməlidir; və ya güclü tipli TypeScript-də elmi məlumatların kompleks vizuallaşdırılmasını yazan dəbli komandanın bir hissəsi; və ya birdən köhnə Nokia-da işləyən bir şeyə kompleks şəkildə yığılmış dilin “növbəti” versiyasında gələcəyin interfeysinin hazırlanmasında iştirak edin... bir sözlə təsvir edilə bilməyən bütöv bir dünya. paraqraf. Amma bu sahədə “öz dilinizi” axtarmaq olduqca təhlükəlidir;

Real inkişafda proqramlaşdırma dilinin seçiminin nəyə əsaslandığı haqqında üçüncü bir fikir və hekayə də var

    Getmək (78)- Google tərəfindən əsasən "sürətli, lal, etibarlı kod hazırlamaq" halları üçün hazırlanmış çubuq qədər sadə və səmərəli dil. Onun içindəki düşüncə uçuşu dilin kobudluğu ilə dərhal kəsilir. Ancaq təsirlidir - necə olduğunu təsvir edə bilmirəm;

    Java (466)- xüsusi hal. Java həm dil, həm də platformadır (JVM) - və bu platforma, məsələn, məzəli və sərin Clojure, elmi cəhətdən əsaslandırılmış Scala və JRuby (eyni Ruby, lakin JVM üçün) işləyir. Və bu gün Java-nın özü bir zamanlar şöhrət qazandığı "korporativ qullar üçün məhdud dil" deyil. İnanılmaz sayda güclü kitabxanaları, bu platformada işləyən dillərin seçimini və onun çox yönlülüyünü nəzərə alsaq, hər bir özünə hörmət edən proqramçı Java haqqında bir az təsəvvürə malik olmalıdır. Java isə Android üçün yeganə (bəzi qeyd-şərtlərlə) inkişaf dilidir;

    PHP (431)- dəhşətli reputasiyaya malik köhnə internet işğalçısı. Müasir versiyada o, cəhənnəm mirasının çoxundan qurtulub və ümumiyyətlə, olduqca layiqli müasir OO dilidir. Ancaq köhnə yaddaşa görə, İnternet infrastrukturunun çox əhəmiyyətli bir hissəsini təşkil edir. PHP mütəxəssisini işə götürərək, siz eyni dərəcədə çox güman ki, Arxitektura və Testlər ilə səliqəli bir layihə ilə nəticələnə bilərsiniz - və ya 2000 sətir üçün strukturlaşdırılmamış if/else ilə dəlilikdən əvvəlki sistemi dəstəkləyə bilərsiniz;

    Python (303)- bir vaxtlar internet və startaplar üçün dəbli dil kimi Ruby-nin “rəqibi” idi, indi bu dil əsasən onun üzərində böyüyən mürəkkəb və böyüklər üçün veb proqramları dəstəkləmək üçündür – və daha çox elmi/böyük məlumat tədqiqatları üçün, bəzi yerlərdə hətta R kölgəsi (aşağıya bax);

    R (16)- ümumi təyinatlı dil, lakin yalnız elm adamları/bigdata tərəfindən istifadə olunur. Bu olduqca cəhənnəm sintaksisdir (köhnə olduğuna görə), lakin bunun üçün çoxlu gözəl paketlər və üzərində yazılmış araşdırmalar var. Demək olar ki, dünyanın ən yaxşı dili, belə çıxır marağını təmin etmək;

    Yaqut (124)- cəmi bir neçə il əvvəl “dəbli” və “hipster”, bu gün sadəcə olaraq əsas dillərdən biridir. Çox ifadəli və lakonik, bir az "sehrli", olduqca yavaş. Əsasən veb inkişafı üçün istifadə olunur. Bu gün ilk baxışdan sevilməsi və ya nifrət edilməsi asan, iş tapmaqda isə çox çətinlik çəkməyən bir dildir. Ruby həm də adminlər və testçilər tərəfindən sevilir;

    Pas (3)- kifayət qədər yeni oyunçulardan biri. Sürətli və çətin. Sistem proqramlaşdırma sahəsində C-ni əvəz edəcəyini vəd edir, lakin hələ ki, onu “gələcək üçün” öyrənmək daha mənalı görünür;

    Scala (60)- Java platformasında "ağıllı kiçik qardaş": müasir, mürəkkəb, funksional, bütün biznes analitikaları tərəfindən çox sevilir və buna görə də sürətlə populyarlıq qazanır;

    Swift / Objective-C (58+15)- iOS inkişafı üçün yeganə seçim. Əlbəttə ki, siz yalnız Swift-ə diqqət yetirməlisiniz (Objective-C artıq yalnız köhnə proqramları dəstəkləmək üçündür) - və ümumiyyətlə, bu, nə xüsusi xüsusiyyətləri, nə də hər hansı xüsusi cəfəngiyyatı, C# ilə müqayisə edilə bilən layiqli müasir dil və Java. Onun tətbiqi (qəsdən) məhdud olduğundan, yalnız Apple-da öz püşklərini qəti şəkildə atmağa qərar verənlər üçün birincisi olaraq tövsiyə edilə bilər.

Nədənsə, ümumiyyətlə, belədir.

Bu siyahıya daxil edilməyən bəzi şeylər var - məsələn, tərtibatçıların olduqca tələbatlı olduğu Perl, lakin dilin özü qəribə vəziyyətdədir və mən onu "birinci" dil kimi tövsiyə edə bilmərəm. Və ya, məsələn, Lua da məşhurdur, lakin digər sistemlər (əsasən oyunlar) üçün kiçik skriptlərin dili olaraq "sadəcə Lua proqramçısı" olmaq tamamilə mənasız görünür.

Eh, mən hər şeyi başa düşürəm. Nə seçmək?..

Yaxşı ki. Hamısını götür. (smiley)

Yox, həqiqətən. Əslində, ağlabatan bir strategiya (əlbəttə ki, vaxtınızın əhəmiyyətli bir hissəsini bizim peşəmizdə keçirəcəksinizsə və "yarım il əlavə pul qazanmayacaqsan") nə olduğunu anlamaqdır. bəziləriən azı yaxın aylarda maraqlandığınız dillər. Onları dizaynerlər üçün təlimatlardakı rənglər kimi seçə bilərsiniz - "yaxın olanlardan" da, "əksdən" də, "tamamlayıcılardan" da...

İlk mərhələlərdə məqsədiniz onu maraqlı etmək və uğur qazanmağa başlamaqdır. Ancaq bu məqsədə yalnız siz yol aça bilərsiniz və çox güman ki, ilk dəfə deyil. Beləliklə, gedir.

Qısa desək...

Bizim sahəmizdə sual vermək həmişə düzgün cavabları bilməkdən daha vacibdir. Çünki cavablar dəyişir. Və suallar hər gün lazımdır. Maraqlı olun, hər şeyi bir az öyrənin, dünyaya daha yaxından baxın.

Qalan şeylər öz-özünə baş verir.

Tətbiq olunan ilk yüksək səviyyəli kompüter proqramlaşdırma dili FORTRAN (FORmula TRANslator) olmuşdur. O, 1954-1957-ci illər arasında bir qrup IBM Corporation proqramçıları tərəfindən yaradılmışdır. Yarandıqdan bir neçə il sonra Fortranın kommersiya satışı başladı - bundan əvvəl o, ya maşın kodlarından, ya da simvolik montajçılardan istifadə etməklə həyata keçirilirdi.

Əvvəla, Fortran elmi və mühəndislik ictimaiyyətində geniş yayıldı, burada hesablamalar aparıldı.

Bugünkü Fortranın əsas üstünlüklərindən biri orada yazılmış çoxlu sayda proqram və rutin kitabxanadır. Bu dilin minlərlə paketində mürəkkəb inteqral tənliklərin həlli, matrisa vurulması və s. paketləri tapa bilərsiniz. Bu paketlər bir çox onilliklər ərzində yaradılmışdır - bu günə qədər öz aktuallığını itirməmişdir. Onların kitabxanalarının əksəriyyəti yaxşı sənədləşdirilmiş, sazlanmış və yüksək effektivliyə malikdir, lakin onlar daim öz Fortran kodunu avtomatik olaraq müasir proqram təminatına çevirməyə çalışırlar.

Fortranın tətbiqi tarixi

Fortran adlı effektiv alternativ dilin hazırlanmasından sonra kompüter ictimaiyyəti yeni məhsula şübhə ilə yanaşırdı. Fortran-ın köməyi ilə proqramlaşdırmanın daha səmərəli və daha sürətli olacağına az adam inanırdı. Lakin zaman keçdikcə alimlər dilin imkanlarını yüksək qiymətləndirdilər və intensiv proqram hesablamalarını yazmaq üçün ondan fəal şəkildə istifadə etməyə başladılar. Fortran xüsusilə texniki tətbiqlər üçün uyğun idi, bunda bütün növ məlumatların hərtərəfli toplanması ona çox kömək etdi.

Müasir Fortran yeni proqram texnologiyaları və proqram hesablama arxitekturalarından səmərəli istifadə etməyə imkan verən imkanlarla tamamlanmışdır.

Fortranın heyrətamiz uğurundan sonra Avropa şirkətləri IBM-in kompüter sənayesinə rəhbərlik etməyə başlayacağından qorxmağa başladılar. Amerika və Alman icmaları universal proqramlaşdırma dilini inkişaf etdirmək üçün öz komitələrini yaratdılar, lakin sonradan bir komitədə birləşdilər. Onun mütəxəssisləri yeni bir dil hazırladılar və onu Beynəlxalq Alqoritmik Dil (IAL) adlandırdılar, lakin ALGOritmic Language tez bir zamanda yeni məhsul üçün ümumi istifadə edilən ada çevrildiyi üçün komitə IAL-ın rəsmi adını ALGOL olaraq dəyişməli oldu.