Proqramlaşdırma dillərinin qısa tarixi. Proqramlaşdırma dillərinin yaranma tarixi İlk proqramlaşdırma dilləri




Avtomatik rəqəmsal kompüterlərin yaradılmasına səbəb olan ən inqilabi ideyalardan biri 19-cu əsrin 20-ci illərində Çarlz Babidc tərəfindən hesablamaların - proqramın sonradan avtomatik həyata keçirilməsi üçün maşının işləmə qaydasının əvvəlcədən qeyd edilməsi haqqında söylədiyi fikir idi. . Fransız ixtiraçısı Joseph Marie Jacquard tərəfindən belə maşınları idarə etmək üçün icad edilmiş Babyge tərəfindən istifadə olunan perfokartlarda proqramların qeyd edilməsinin texniki cəhətdən kompüterdə proqramların saxlanmasının müasir üsulları ilə heç bir ortaqlığı olmasa da, burada prinsip mahiyyətcə eynidir. Bu andan proqramlaşdırmanın tarixi başlayır.
Babidgenin müasiri Ada Levellace dünyanın ilk proqramçısı adlanır. O, nəzəri cəhətdən bu gün də proqramlaşdırmada istifadə olunan hesablamaların ardıcıllığına nəzarət etmək üçün bəzi üsullar işləyib hazırladı. O, həmçinin demək olar ki, hər hansı bir müasir proqramlaşdırma dilinin ən vacib konstruksiyalarından birini - döngəni təsvir etdi.

Proqramlaşdırma dillərinin tarixində inqilabi bir məqam John Mauchly tərəfindən təklif olunan xüsusi simvollardan istifadə edərək maşın təlimatlarının kodlaşdırılması sisteminin ortaya çıxması idi. Təklif etdiyi kodlaşdırma sistemi həmkarlarından biri olan Qreys Murray Hopperi ilhamlandırdı. Mark-1 kompüterində işləyərkən o və qrupu bir çox problemlərlə üzləşməli oldu və onların ağlına gələn hər şey ilk dəfə oldu. Xüsusilə, onlar alt proqramlarla gəldilər. Proqramlaşdırma texnikasının başqa bir fundamental konsepsiyası ilk dəfə Hopper və onun qrupu tərəfindən təqdim edilmişdir: “debugging”.
40-cı illərin sonlarında J. Mauchly primitiv yüksək səviyyəli proqramlaşdırma dili olan “Qısa kod” adlı sistem yaratdı. Orada proqramçı həll edilməli olan məsələni riyazi düsturlar şəklində yazır, sonra isə xüsusi cədvəldən istifadə edərək, simvol-xarakterə çevrilərək bu düsturları iki hərfli kodlara çevirir. Sonradan xüsusi kompüter proqramı bu kodları ikili maşın koduna çevirdi. C.Mauchly tərəfindən hazırlanmış sistem ilk primitiv tərcüməçilərdən biri hesab olunur.

Artıq 1951-ci ildə Hopper dünyanın ilk tərtibçisini yaratdı və o, bu termini də təqdim etdi. Hopper kompilyatoru əmrlərin birləşdirilməsi funksiyasını yerinə yetirir və tərcümə zamanı alt proqramları təşkil edir, kompüter yaddaşını ayırır və yüksək səviyyəli əmrləri (o zaman psevdokodları) maşın əmrlərinə çevirirdi. "Alt proqramlar kitabxanada (kompüterin) var və siz kitabxanadan material seçdiyiniz zaman buna kompilyasiya deyilir" deyə o, yaratdığı terminin mənşəyini belə izah etdi.

1954-cü ildə Q. Hopperin rəhbərlik etdiyi qrup proqramlaşdırma dilini və kompilyatoru özündə birləşdirən sistem işləyib hazırladı ki, bu da sonralar Math-Matic adlandırıldı. Math-Matic uğurla başa çatdıqdan sonra Hopper və onun komandası istifadəçilərə adi ingilis dilinə bənzər bir dildə proqramlaşdırma imkanı verəcək yeni dil və kompilyator hazırlamağa başladılar. 1958-ci ildə Flow-Matic kompilyatoru ortaya çıxdı. Flow-Matic kompilyatoru verilənlərin kommersiya emalı tapşırıqları üçün ilk dil idi.
Bu istiqamətdə inkişaf COBOL dilinin (Common Business Oriented Language) yaradılmasına səbəb oldu. 1960-cı ildə yaradılmışdır. Bu dildə Fortran və Alqol ilə müqayisədə riyazi alətlər az işlənib, lakin mətn emalı alətləri və verilənlərin tələb olunan sənəd formasında çıxarılmasının təşkili yaxşı işlənib. İdarəetmə və biznes sahələrində kütləvi məlumatların emalı üçün əsas dil kimi nəzərdə tutulmuşdur.

50-ci illərin ortaları proqramlaşdırma sahəsində sürətli tərəqqi ilə xarakterizə olunur. Maşın əmrlərində proqramlaşdırmanın rolu azalmağa başladı. Maşınlar və proqramçılar arasında vasitəçi rolunu oynayan proqramlaşdırma dillərinin yeni növləri meydana çıxmağa başladı. Birinci və ən geniş yayılmışlardan biri 1954-cü ildə bir qrup IBM proqramçıları tərəfindən hazırlanmış Fortran (FORTRAN, FORmula TRANslator-dan - formula tərcüməçisi) idi (birinci versiya). Bu dil riyazi xarakterli elmi və texniki hesablamalara yönəldilmişdir və PC-də riyazi və mühəndislik məsələlərinin həlli üçün klassik proqramlaşdırma dilidir.
İlk yüksək səviyyəli proqramlaşdırma dilləri üçün dillərin mövzu yönümlü olması xarakterik xüsusiyyət idi.
İlk versiyası 1958-ci ildə ortaya çıxan proqramlaşdırma dilləri arasında Algol xüsusi yer tutur. Algolun tərtibatçılarından biri Fortranın "atası" Con Backus idi. ALGOrithmic Language adı onun alqoritmlərin yazılması üçün nəzərdə tutulduğunu vurğulayır. Aydın məntiqi strukturu sayəsində Alqol elmi-texniki ədəbiyyatda alqoritmlərin yazılması üçün standart vasitəyə çevrilmişdir.

60-cı illərin ortalarında Tomas Kurtz və Con Kameni (Dartmut Kollecində riyaziyyat departamentinin işçiləri) sadə ingilis sözlərindən ibarət ixtisaslaşmış proqramlaşdırma dili yaratdılar. Yeni dil “Başlanğıc Hərtərəfli Simvolik Təlimat Kodu və ya qısaca BASIC” adlanırdı. Yeni dilin doğulduğu ili 1964-cü il hesab etmək olar. Bu gün universal BASIC dili (bir çox versiyaları var) böyük populyarlıq qazanmışdır və bütün dünyada müxtəlif kateqoriyalı fərdi kompüter istifadəçiləri arasında geniş yayılmışdır. Bu, BASIC-in 70-ci illərin sonlarında geniş yayılmasına başlanan fərdi kompüterlərin daxili dili kimi istifadə olunmağa başlaması ilə çox kömək etdi. Bununla belə, BASIC strukturlaşdırılmamış bir dildir və buna görə də keyfiyyətli proqramlaşdırmanın tədrisi üçün zəif uyğundur. Ədalət naminə qeyd etmək lazımdır ki, BASIC-in fərdi kompüterlər üçün ən son versiyaları (məsələn, QBasic) daha strukturlaşıb və vizual imkanlarına görə Paskal kimi dillərə yaxınlaşır.

Tərtibatçılar dilləri müxtəlif sinif tapşırıqlarına yönəltdilər, onları bu və ya digər dərəcədə müəyyən bir PC arxitekturasına bağladılar və şəxsi zövqləri və fikirləri həyata keçirdilər. 60-cı illərdə universal proqramlaşdırma dili yaratmaqla bu “ixtilafı” aradan qaldırmağa cəhdlər edildi. Bu istiqamətin ilk ideyası 1967-ci ildə IBM tərəfindən hazırlanmış PL/1 (Programm Language One) idi. Bu dil istənilən problemi həll etmək iqtidarında olduğunu iddia edirdi: hesablama, mətnin işlənməsi, məlumatın yığılması və axtarışı. Bununla belə, çox mürəkkəb olduğu ortaya çıxdı, ondan tərcüməçi kifayət qədər optimal deyildi və bir sıra aşkar edilməmiş səhvləri ehtiva etdi.
Bununla belə, dillərin universallaşdırılması xətti dəstəkləndi. Köhnə dillər universal versiyalara çevrildi: ALGOL-68 (1968), Fortran-77. Güman edilirdi ki, belə dillər inkişaf edib təkmilləşəcək və bütün digər dilləri sıxışdırmağa başlayacaq. Lakin bu cəhdlərin heç biri uğurlu alınmadı.

LISP dili 1965-ci ildə ortaya çıxdı. Ondakı əsas anlayış rekursiv müəyyən edilmiş funksiyalar anlayışıdır. İstənilən alqoritmin müəyyən rekursiv funksiyalar toplusundan istifadə etməklə təsvir oluna biləcəyi sübut olunduğundan, LISP mahiyyətcə universal bir dildir. Onun köməyi ilə bir PC kifayət qədər mürəkkəb prosesləri, xüsusən də insanların intellektual fəaliyyətini simulyasiya edə bilər.
Proloq 1972-ci ildə Fransada “süni intellekt”dəki problemləri həll etmək üçün hazırlanmışdır. Proloq müxtəlif ifadələri, mülahizələrin məntiqini rəsmi şəkildə təsvir etməyə imkan verir və PC-ni verilən suallara cavab verməyə məcbur edir.
Proqramlaşdırma dilləri tarixində əlamətdar hadisə 1971-ci ildə Paskal dilinin yaradılması oldu. Onun müəllifi isveçrəli alim Niklaus Virtdir. Wirth onu 17-ci əsrin böyük fransız riyaziyyatçısı və dini filosofu Blez Paskalın şərəfinə adlandırdı, o, ilk əlavə cihazını icad etdi və buna görə də yeni dil onun adını aldı. Bu dil əvvəlcə strukturlaşdırılmış proqramlaşdırma üçün tədris dili kimi işlənib hazırlanmışdır və həqiqətən də indi məktəblərdə və universitetlərdə proqramlaşdırmanın tədrisi üçün əsas dillərdən biridir.

1975-ci ildə iki hadisə proqramlaşdırma tarixində əlamətdar hadisə oldu - Bill Gates və Paul Allen BASIC versiyasını inkişaf etdirərək özlərini elan etdilər və Wirth və Jensen "Pascal User Manual and Report" dilinin klassik təsvirini buraxdılar.

1983-cü ildə Turbo-Paskal sistemini inkişaf etdirən fransız Filip Kahn tərəfindən maliyyə də daxil olmaqla, daha az təsir edici uğur əldə edildi. Onun ideyasının mahiyyəti proqramın işlənməsinin ardıcıl mərhələlərini - kompilyasiya, keçidlərin redaktəsi, sazlama və xətaların diaqnostikasını vahid interfeysdə birləşdirmək idi. Turbo Pascal təkcə dil və ondan tərcüməçi deyil, həm də istifadəçiyə Paskalda rahat işləməyə imkan verən əməliyyat qabığıdır. Bu dil təhsil məqsədindən kənara çıxmış və universal imkanlara malik peşəkar proqramlaşdırma dilinə çevrilmişdir. Bu üstünlüklərinə görə Paskal bir çox müasir proqramlaşdırma dillərinin mənbəyinə çevrilmişdir. O vaxtdan bəri Turbo Paskalın bir neçə versiyası ortaya çıxdı, sonuncusu yeddincidir.
Borland/Inprise Turbo Pascal məhsul xəttini tamamladı və Windows üçün vizual inkişaf sistemini - Delphi-ni buraxmağa keçdi.

Proqram sistemlərinin (o cümlədən əməliyyat sistemlərinin) tərtibatçıları arasında çox populyar olan C dili (birinci versiya – 1972) müasir proqramlaşdırmada böyük iz buraxmışdır. Bu dil əməliyyat sistemlərinin, tərcüməçilərin, verilənlər bazalarının və digər sistem və tətbiq proqramlarının inkişafı üçün instrumental dil kimi yaradılmışdır. C həm yüksək səviyyəli dilin xüsusiyyətlərini, həm də maşın yönümlü dili birləşdirir, proqramçıya BASIC və Paskal kimi dillərin təmin etmədiyi bütün maşın resurslarına çıxış imkanı verir.
60-cı illərin sonundan 80-ci illərin əvvəllərinə qədər olan dövr proqram təminatı böhranını müşayiət edən müxtəlif proqramlaşdırma dillərinin sayında sürətli artımla səciyyələnirdi. 1975-ci ilin yanvarında Pentaqon tərcüməçilərin xaosunu nizama salmaq qərarına gəldi və bir universal dili inkişaf etdirmək üçün bir komitə yaratdı. 1979-cu ilin mayında qalib elan olundu - Jan İxbiyanın rəhbərlik etdiyi bir qrup alim. Qalib gələn dil Augusta Ada Levellace-in şərəfinə Ada adını aldı. Bu dil böyük proqram sistemlərinin yaradılması və uzunmüddətli (uzunmüddətli) texniki xidməti üçün nəzərdə tutulmuşdur, paralel emal və real vaxt rejimində proseslərə nəzarət etməyə imkan verir.

Uzun illər ərzində proqram təminatı Fortran, BASIC, Pascal, Ada, C kimi əməliyyat və prosedur dilləri əsasında qurulmuşdur. Proqramlaşdırma dilləri inkişaf etdikcə proqramların yaradılmasına başqa, prinsipial olaraq fərqli yanaşmalar geniş yayıldı.
Müxtəlif meyarlara görə proqramlaşdırma dillərinin çox sayda təsnifatı var. Ən ümumi təsnifatlar bunlardır:
 yüksək səviyyəli (Pascal, BASIC) və aşağı səviyyəli proqramlaşdırma dilləri (Assembler);
 ciddi tipli (Pascal) və sərbəst yazılmış (BASIC);
 obyekt yönümlü proqramlaşdırmanın (C++) dəstəyi ilə və dəstəyi olmadan və s.

Başqa bir təsnifata nəzər salaq. Proqramlaşdırma dilləri aşağıdakılara bölünür:
1) Maşın yönümlü dillər:
- maşın dilləri;
- simvolik kodlaşdırma dilləri;
 avtomatik kodlar;
- makro.
2) Maşından asılı olmayan dillər:
- problem yönümlü dillər;
- universal dillər;
- interaktiv dillər;
- qeyri-prosessual dillər.

Maşın yönümlü dillər

Maşın yönümlü dillər, operatorlar və qrafik vasitələrin dəsti kompüterin xüsusiyyətlərindən (daxili dil, yaddaş strukturu və s.) əhəmiyyətli dərəcədə asılı olan dillərdir. Maşın yönümlü dillər aşağıdakı xüsusiyyətlərə malikdir:
 yaradılmış proqramların yüksək keyfiyyəti (kompaktlıq və icra sürəti);
 konkret aparat resurslarından istifadə etmək bacarığı;
 obyekt kodunun və yaddaş sifarişlərinin proqnozlaşdırıla bilməsi;
 effektiv proqramlar yaratmaq üçün bu PC-nin komanda sistemini və əməliyyat xüsusiyyətlərini bilmək lazımdır;
 səhvlərdən zəif qorunan proqramların (xüsusilə də maşın dillərində və ASC-də) yazılmasının əmək tutumlu prosesi;
 aşağı proqramlaşdırma sürəti;
 bu dillərdə tərtib edilmiş proqramların digər növ kompüterlərdə birbaşa istifadəsinin mümkünsüzlüyü.
Maşın yönümlü dillər avtomatik proqramlaşdırma dərəcəsinə görə siniflərə bölünür.

Maşın dili

Fərdi kompüterin özünəməxsus maşın dili (bundan sonra ML) var, onların müəyyən etdiyi operandlar üzərində müəyyən əməliyyatları yerinə yetirmək təyin olunur, buna görə də ML əmr dilidir. Komanda operandların yeri və yerinə yetirilən əməliyyat növü haqqında məlumat verir.
Yeni kompüter modellərində, alqoritmik proqramlaşdırma dillərinin operatorlarına funksional hərəkətlərinə daha yaxın olan daha mürəkkəb əmrləri həyata keçirmək üçün aparatda daxili dillərin təkmilləşdirilməsi tendensiyası var.

Simvolik Kodlaşdırma Dilləri

Simvolik Kodlaşdırma Dilləri (bundan sonra SKL adlandırılacaq), ML kimi, əmr dilləridir. Bununla belə, ikili (daxili kodda) və ya səkkizlik (tez-tez proqramların yazılması zamanı istifadə olunur) rəqəmlərin ardıcıllığı olan maşın təlimatlarında əməliyyat kodları və ünvanlar YSC-də yazı forması proqramçıya kömək edən simvollar (identifikatorlar) ilə əvəz olunur. əməliyyatın semantik məzmununu daha asan xatırlayır. Bu proqramların tərtibi zamanı xətaların sayının əhəmiyyətli dərəcədə azaldılmasını təmin edir.
Simvolik ünvanlardan istifadə YASK yaratmaq üçün ilk addımdır. PC əmrləri həqiqi (fiziki) ünvanlar əvəzinə simvolik ünvanları ehtiva edir. Tərtib edilmiş proqramın nəticələrinə əsasən, ilkin aralıq və nəticədə alınan dəyərlərin saxlanması üçün lazımi sayda xanalar müəyyən edilir. Proqramın simvolik ünvanlarda tərtibindən ayrıca yerinə yetirilən ünvanların təyin edilməsi daha az ixtisaslı proqramçı və ya xüsusi proqram tərəfindən həyata keçirilə bilər ki, bu da proqramçının işini xeyli asanlaşdırır.

Avtokodlar

Makro əmrlərin genişləndirilmiş tətbiqi vasitəsilə YSC-nin bütün imkanlarını özündə cəmləşdirən dillər var - onlara avtokodlar deyilir.

Müxtəlif proqramlarda məlumatı çevirmək üçün müəyyən prosedurlara uyğun gələn kifayət qədər tez-tez istifadə olunan əmr ardıcıllığı var. Bu cür prosedurların effektiv həyata keçirilməsi onların xüsusi makro əmrlər şəklində tərtib edilməsi və sonuncunun proqramçı üçün əlçatan olan proqramlaşdırma dilinə daxil edilməsi ilə təmin edilir. Makro əmrləri maşın əmrlərinə iki üsulla çevrilir - düzülmə və generasiya. Mərhələ sistemi "skeletləri" ehtiva edir - makro əmri ilə göstərilən tələb olunan funksiyanı həyata keçirən bir sıra əmrlər. Makro təlimatlar, tərcümə prosesi zamanı proqramın "skeletinə" daxil edilən və onu real maşın proqramına çevirən faktiki parametrlərin ötürülməsini təmin edir.
Nəsil sistemində makro komandanı təhlil edən, hansı funksiyanın yerinə yetirilməli olduğunu müəyyən edən və bu funksiyanı həyata keçirən əmrlərin lazımi ardıcıllığını formalaşdıran xüsusi proqramlar mövcuddur.
Bu sistemlərin hər ikisi ASC tərcüməçilərindən və avtokod operatorları olan bir sıra makro əmrlərdən istifadə edir.
Hazırlanmış avtokodlara assemblerlər deyilir. Xidmət proqramları və s., adətən, montaj dillərində yazılır.

Makro

Tələb olunan kompüter hərəkətlərinin yerinə yetirilməsini təsvir edən simvollar ardıcıllığını daha sıxlaşdırılmış formada əvəz etmək üçün alət olan dil makro (əvəzetmə aləti) adlanır.
Əsasən, makro orijinal proqramın qeydini qısaltmaq üçün nəzərdə tutulmuşdur. Makroların işləməsini təmin edən proqram komponenti makro prosessor adlanır. Makroprosessor makro-müəyyənedici və mənbə mətni qəbul edir. Makroprosessorun çağırışa cavabı çıxış mətni verməkdir.
Makrolar həm proqramlar, həm də verilənlərlə bərabər işləyə bilər.

Maşın müstəqil dillər

Maşın-müstəqil dillər problemlərin həlli üçün alqoritmləri və emal ediləcək məlumatı təsvir etmək üçün bir vasitədir. Onlardan geniş istifadəçilər üçün istifadə etmək asandır və onlardan fərdi kompüterin işinin təşkilinin xüsusiyyətlərini bilmələrini tələb etmir.
Belə dillərə yüksək səviyyəli proqramlaşdırma dilləri deyilir. Belə dillərdə tərtib edilmiş proqramlar dilə baxmaq qaydalarına (tapşırıqlar, seqmentlər, bloklar və s.) uyğun olaraq qurulmuş ifadələrin ardıcıllığıdır. Dil operatorları proqramı ML-yə çevirdikdən sonra sistemin yerinə yetirməli olduğu hərəkətləri təsvir edir.
Beləliklə, tez-tez maşın proqramlarında istifadə olunan əmr ardıcıllığı (prosedurlar, alt proqramlar) yüksək səviyyəli dillərdə fərdi ifadələrlə təmsil olunur. Proqramçı hesablama prosesini maşın göstərişləri səviyyəsində ətraflı təsvir etməyə deyil, alqoritmin əsas xüsusiyyətlərinə diqqət yetirə bildi.

Problem yönümlü dillər

Kompüter texnologiyasının tətbiqi sahələrinin genişlənməsi ilə yeni sinif problemlərin tərtibi və həllinin təqdimatının rəsmiləşdirilməsi zərurəti yarandı. Bu sahədə qeydlərdən və terminologiyadan istifadə edərək, təyin edilmiş məsələlər üçün tələb olunan həll alqoritmlərini təsvir etməyə imkan verən proqramlaşdırma dilləri yaratmaq lazım idi; onlar problem yönümlü dillərə çevrildi. Bu dillər konkret problemlərin həllinə yönəlib və proqramçıya problemi qısa və aydın şəkildə tərtib etməyə və lazımi formada nəticələr əldə etməyə imkan verən vasitələrlə təmin etməlidir.
Bir çox problemli dil var, məsələn:
- Fortran, Alqol – riyazi məsələlərin həlli üçün yaradılmış dillər;
- Simula, Slang - modelləşdirmə üçün;
- Lisp, Snoball - siyahı strukturları ilə işləmək üçün.

Universal dillər

Universal dillər geniş spektrli tapşırıqlar üçün yaradılmışdır: kommersiya, elmi, modelləşdirmə və s. İlk universal dil IBM tərəfindən hazırlanmış və dillər ardıcıllığı ilə PL/1 olmuşdur. İkinci ən güclü universal dil ALGOL-68 adlanır.

Danışıq dilləri

Yeni texniki imkanların yaranması sistem proqramçıları qarşısında bir vəzifə qoydu - insanla fərdi kompüter arasında sürətli qarşılıqlı əlaqəni təmin edən proqram vasitələri yaratmaq; onlara interaktiv dillər deyilir.
Bu iş iki istiqamətdə aparılıb. Əvvəllər işlənməmiş (dialoq olmayan) dillərdə tərtib edilmiş tapşırıqların yerinə yetirilməsinə operativ təsir göstərmək üçün xüsusi nəzarət dilləri yaradılmışdır. İdarəetmə məqsədlərinə əlavə olaraq problemlərin həlli üçün alqoritmlərin təsvirini təmin edəcək dillər də hazırlanmışdır.
İstifadəçi ilə operativ qarşılıqlı əlaqənin təmin edilməsi zərurəti, obyekt proqramı maşın kodunda alındıqdan sonra da mənbə proqramın surətinin kompüter yaddaşında saxlanmasını tələb edirdi. İnteraktiv dildən istifadə etməklə proqrama dəyişikliklər edərkən proqramlaşdırma sistemi xüsusi cədvəllərdən istifadə edərək mənbə və obyekt proqramlarının strukturları arasında əlaqə qurur. Bu, obyekt proqramında tələb olunan redaksiya dəyişikliklərini etməyə imkan verir.
Danışıq dillərinə bir nümunə BASIC-dir.

Qeyri-prosedur dilləri

Qeyri-prosessual dillər sabit alqoritmlərdən (cədvəl dilləri və hesabat generatorları) və əməliyyat sistemləri ilə ünsiyyət üçün dillərdən istifadə edərək işlənmiş məlumatların təşkilini təsvir edən dillər qrupunu təşkil edir.
Həm tapşırığı, həm də onu həll etmək üçün lazım olan hərəkətləri aydın şəkildə təsvir etməyə imkan verən qərar cədvəlləri hər hansı bir hərəkətə keçməzdən əvvəl hansı şərtlərin yerinə yetirilməli olduğunu dəqiq müəyyən etməyə imkan verir. Müəyyən bir vəziyyəti təsvir edən bir qərar cədvəli həll alqoritmlərinin həyata keçirilməsinin bütün mümkün blok diaqramlarını ehtiva edir.
Cədvəl üsulları istənilən peşənin mütəxəssisləri tərəfindən asanlıqla mənimsənilir. Cədvəl dilində yazılmış proqramlar sistemin təhlili zamanı yaranan mürəkkəb vəziyyətləri rahat şəkildə təsvir edir.
Proqramlaşdırma dilləri müxtəlif məqsədlərə xidmət edir və onların seçimi istifadəçinin rahatlığı, müəyyən bir kompüter və tapşırıq üçün uyğunluğu ilə müəyyən edilir. Və kompüter üçün problemlər çox müxtəlif ola bilər: hesablama, iqtisadi, qrafik, ekspert və s. Kompüterin həll etdiyi məsələlərin bu müxtəlifliyi proqramlaşdırma dillərinin müxtəlifliyini müəyyən edir. Proqramlaşdırmada problemin sinfinə, proqramçının səviyyəsinə və maraqlarına əsaslanan fərdi yanaşma ilə ən yaxşı nəticələr əldə edilir.

Basic və Visual Basic proqramlaşdırma dillərinin yaranma tarixi

Basic proqramlaşdırma dili 1964-cü ildə Dartmut Kollecinin iki professoru Con Kenemi və Tomas Kurtz tərəfindən tələbələrə proqramlaşdırma bacarıqlarını öyrətmək üçün yaradılmışdır. Dil o qədər sadə və başa düşülən oldu ki, bir müddət sonra digər təhsil müəssisələrində də istifadə olunmağa başladı. 1975-ci ildə ilk mikrokompüterlərin meydana çıxması ilə Basic estafeti Microsoft-un qurucuları Bill Qeyts və Pol Allen tərəfindən götürüldü. Məhz onlar ilk Altair kompüterləri (MITS Altairs) üçün 4KB RAM-da işləyə bilən Basic proqramının yeni versiyasını yaratdılar. Zamanla məhz bu versiya dünyanın ən populyar proqramlaşdırma dillərindən birinə çevrildi. Şöhrət zirvəsinə gedən yolda Basic bir çox çətinliklərlə üzləşdi, o, həmişə şərəflə öhdəsindən gəldi və ilk fərdi kompüterlər IBM PC meydana çıxanda o, proqramlaşdırmada standart oldu, lakin GW-Basic şəklində. Sonra Turbo Basic, QuickBasic, Basic PDS var idi, lakin dilin yeni versiyasını hazırlayarkən həmişə əvvəlki versiyalarla uyğunluq qorunurdu və demək olar ki, ilk Basic üçün yazılmış proqram (kiçik dəyişikliklərlə) bunun sonrakı versiyalarında yaxşı işləyə bilərdi. dil. Ancaq yeni dövrlər gəldi və 90-cı illərin əvvəllərində Microsoft Windows əməliyyat sistemi yeni qrafik istifadəçi interfeysi (GUI) ilə ortaya çıxdı.

Proqramçıların həyatı cəhənnəmə çevrilib. Sadə bir proqram yaratmaq üçün bir neçə səhifə kod yazmaq lazım idi: menyular və pəncərələr yaratmaq, şriftləri dəyişdirmək, yaddaşı təmizləmək, düymələri "çəkmək" və s. Bununla belə, yeni interfeysin üstünlükləri o qədər danılmaz idi ki, artıq bu əməliyyat sisteminin üçüncü versiyası fərdi kompüter üçün faktiki standarta çevrildi. Bu zaman Microsoft-da Windows üçün yeni proqramlaşdırma dilinin yaradılması üçün bir neçə paralel layihələr həyata keçirilirdi. Və 1991-ci ildə "indi hətta təcrübəsiz proqramçılar asanlıqla Windows üçün proqramlar yarada bilərlər" şüarı altında yeni Microsoft Visual Basic alətinin ilk versiyası ortaya çıxdı. Həmin anda Microsoft bu sistemin imkanlarını kifayət qədər təvazökarlıqla qiymətləndirərək onu ilk növbədə yeni başlayanlar və qeyri-peşəkar proqramçılar kateqoriyasına yönəltdi. O zaman əsas vəzifə o vaxtlar kifayət qədər yeni Windows mühitində sadə və rahat inkişaf alətini bazara çıxarmaq idi, proqramlaşdırma hətta təcrübəli mütəxəssislər üçün də problem idi. Visual Basic tərtibatçıları tərəfindən yaradılmış proqramlaşdırma sistemi Windows-un mürəkkəb daxili strukturundan “geri çəkilməyə” və uşaq tikinti dəstində olduğu kimi “kublardan” proqramlar yaratmağa imkan verdi. Menyular, pəncərələr, siyahılar, düymələr, mətn daxiletmə sahələri və digər Windows interfeys elementləri sadə sürüklə və buraxma əməliyyatlarından istifadə etməklə proqrama əlavə edilmişdir.

VB proqramçıları bu dili öyrənməyə başlayandan bir neçə dəqiqə ərzində ilk proqramlarını yaratdılar! Bundan əlavə, Visual Basic tərtibatçılara standart obyektlərlə yanaşı proqramlarda da istifadə oluna bilən yeni “kub” obyektləri yaratmağa imkan verdi. Bir çox C proqramçıları Microsoftun Windows proqramlarını inkişaf etdirmək üçün sadə və başa düşülən alət hazırlamaq cəhdlərinə sakitcə gülsələr də, Visual Basic bütün dünyada qalibiyyət yürüşünə başladı və heç bir şey bu prosesi dayandıra bilmədi. Son maneələr 1994-cü ildə Tətbiqlər üçün Visual Basic-in buraxılması ilə düşdü. Məhz bu zaman, VBA-nın Microsoft Office-ə daxil edilməsindən sonra Basic Windows üçün əsas proqramlaşdırma standartlarından birinə çevrilməyə başladı. Microsoft üçün Basic dili xüsusi əhəmiyyət kəsb edir; bir vaxtlar Altair 8800 kompüteri üçün Basic versiyasının hazırlanması onun yaradıcıları Bill Qeyts və Pol Allenin proqramlaşdırma karyerasının başlanğıcını qoydu. Buna görə də, bir vaxtlar - 1989-cu ildə, müxtəlif şirkətlər arasında müxtəlif proqramlaşdırma dillərində inkişaf mühitlərinin yaradılmasının əsas istiqamətlərini bölüşdürmək vaxtı gəldikdə, Microsoft QuickBasic-i saxladı - Basic-də proqramların inkişafı üçün bir mühit, məsələn, bundan imtina etdi. Paskal proqramlaşdırma dili üzərində işləmək, onu Borland-a buraxmaq, o da öz növbəsində Basic versiyası üzərində işi dayandırdı (Paskal sonradan Delfi dili oldu).

Əvvəlcə oyuncaq kimi nəzərdə tutulan Microsoft-un Visual Basic proqramı proqramlaşdırma dünyasını fırtına ilə ələ keçirdi. Onun populyarlığı iki səbəblə bağlıdır: nisbi sadəlik və məhsuldarlıq. VB proqramları C/C++ analoqlarından daha yavaşdır, lakin onlar hələ də bir çox iş məqsədləri üçün kifayət qədər sürətlidirlər və daha az inkişaf vaxtı tələb edirlər. Formalar VB-nin Windows proqramçılarına təklif etdiyi eyni səylərə qənaət edən abstraksiya idi. VB IDE, düymələr və siyahı qutuları kimi idarəetmə elementlərini alətlər panelindən forma üzərinə sürükləməklə pəncərələri qrafik şəkildə tərtib etməyə imkan verdi. Formanın görünüşündən razı qaldıqdan sonra kod tərəfinə keçə və hər bir forma nəzarəti üçün hadisə işləyiciləri yaza bilərsiniz.

Beləliklə, VB-də bir tətbiqin hazırlanması bir-biri ilə danışan və lazımi məlumat üçün verilənlər bazası ilə məsləhətləşən bir neçə forma yaratmaqdan ibarət idi. Nəticədə ortaya çıxan forma, pəncərə üsullarından istifadə etmək üçün daha rahat bir yol təklif edən bir pəncərə oldu. VB bəzi gizli C/C++ sintaksisini silməklə səhvləri azaldıb. Xüsusi hallar istisna olmaqla, ifadələr bir kod sətri ilə məhdudlaşırdı və dəyişənlər ayrı-ayrı kod sətirlərində elan edilməli və işə salınmalı idi. Təyinat və müqayisə operatorları eyni simvoldan istifadə edirdilər, lakin VB qrammatikası bu operatorların niyyətlərini aydınlaşdıracaq şəkildə istifadə olunmasını tələb edirdi.

Bəlkə də ən əsası, heç bir göstərici yox idi - Microsoft BASIC-in ilk versiyalarından bəri Bill Qeytsin tələbi. Göstəricilər istənilən ünvanda yaddaşa birbaşa çıxış imkanı verdiyi üçün faydalı olsa da, ehtiyatla istifadə edilmədikdə onların istifadəsi xətalara meyllidir. BASIC-in qrammatik sadəliyə olan tələbi onun əvvəlcə təlim dili kimi yaradılmasından irəli gəlir: “Başlanğıclar üçün Ümumi Məqsədli Simvolik Təlimat Kodu”. COM komponentləri və Microsoft Transaction Server.Microsoft klient-server arxitekturaları üçün verilənlər bazasından və ya başqa maşından məlumatları əldə etmək üçün nazik istifadəçi interfeyslərinin uzaq VB komponentləri ilə qarşılıqlı əlaqədə olduğu üç səviyyəli yanaşma təklif etdi.

VBScript və VBA-dan (VB for Applications) istifadə edərək, siz veb-brauzerlər üçün skriptlər yaza və Microsoft Office proqramlarını avtomatlaşdıra bilərsiniz. Bundan əlavə, VB6-dan Internet Explorer ilə işləyən Active-X idarəetmə vasitələrini yaratmaq üçün istifadə oluna bilər, baxmayaraq ki, bu, nadir hallarda edilir, çünki VB iş vaxtı DLL-nin İnternet müştəri maşınında quraşdırılmasını tələb edir. VB5-dən başlayaraq VB proqramları maşın koduna tərtib edilirdi, lakin onlar ümumi istifadə edilən funksiyaları təmin edən və VB-nin obyekt imkanlarını həyata keçirən DLL-nin istifadəsinə əsaslanırdı. Maraqlısı ondan ibarətdir ki, VB kompilyatoru tərcümə üçün çox keçid rejimindən istifadə edir və son nəticədə aralıq dilə kompilyasiya etdikdən sonra maşın kodu çıxışı hazırlamaq üçün Microsoft C++ kompilyatorundan istifadə edir. .NET-in toxumları VB-nin bu xüsusiyyətində görünür - iş vaxtı kitabxanasından və C++ arxa ucundan istifadə.

C# proqramlaşdırma dilinin yaranma tarixi

C# dili 2000-ci ilin iyununda Anders Hejlsberg başda olmaqla Microsoft-un inkişaf etdiricilərinin böyük bir qrupunun gərgin əməyi nəticəsində yaranmışdır. Bu adam IBM fərdi kompüterləri üçün tərtib edilmiş ilk proqramlaşdırma dillərindən birinin - Turbo Paskalın müəllifi kimi tanınır. Yəqin ki, keçmiş Sovet İttifaqı ərazisində bir çox təcrübəli tərtibatçılar və sadəcə olaraq universitetlərdə bu və ya digər formada proqramlaşdırma üzrə təhsil almış insanlar bu məhsulun cazibəsini və istifadəsinin asanlığını yaşayıblar. Bundan əlavə, Borland Korporasiyasında işləyərkən Anders Hejlsberg Delphi inteqrasiya mühitinin yaradılması ilə məşhurlaşdı (o, bu layihəyə 4.0 versiyasının buraxılışına qədər rəhbərlik etdi).
Təsadüfi deyildi ki, C# dilinin və .NET təşəbbüsünün yaranması 2000-ci ilin yayın əvvəlində baş verdi. Məhz bu anda Microsoft mesajlaşma və məlumat mübadiləsi sahəsində yeni komponent texnologiyaları və həllərin sənaye versiyalarını hazırladı. eləcə də İnternet proqramlarının yaradılması (COM+, ASP+, ADO+, SOAP, Biztalk Framework). Şübhəsiz ki, bu yeni məhsulları tanıtmağın ən yaxşı yolu onların tam dəstəyi ilə tərtibatçılar üçün alətlər dəsti yaratmaqdır. Bu, yeni C# dilinin əsas məqsədlərindən biridir. Bundan əlavə, Microsoft artıq eyni alətləri və inkişaf dillərini genişləndirə bilmədi, bu da onları müasir avadanlığın dəstəklənməsi və 1990-cı illərin əvvəllərində yaradılmış məhsullarla geriyə uyğunluğu qorumaq kimi ziddiyyətli tələblərə cavab vermək üçün getdikcə daha mürəkkəb hala gətirdi. Windows-un ilk görünüşü zamanı. Elə bir vaxt gəlir ki, tərtibatçıya asanlıqla müasir proqram məhsulları yaratmağa imkan verəcək sadə, lakin mürəkkəb dillər, mühitlər və inkişaf alətləri dəsti yaratmaq üçün sıfırdan başlamaq lazımdır.

C# və .NET başlanğıc nöqtəsidir. Sadə dillə desək, .NET yeni platformadır, Windows-da proqramlaşdırma üçün yeni API-dir və C# həmin platforma ilə işləmək və inkişaf mühitlərinin tərəqqisindən tam istifadə etmək üçün sıfırdan yaradılmış yeni dildir. son 20 ildə obyekt yönümlü proqramlaşdırma prinsiplərinin başa düşülməsi.
Qeyd etmək lazımdır ki, geriyə uyğunluq itirilmir. Mövcud proqramlar işləyəcək və .NET platforması mövcud proqram təminatı ilə işləmək üçün nəzərdə tutulmuşdur. Windows-da komponentlər arasında əlaqə indi demək olar ki, tamamilə COM-dan istifadə etməklə həyata keçirilir. Bunu nəzərə alaraq, .NET (a) .NET komponentlərinin onlarla danışa bilməsi üçün mövcud COM komponentləri ətrafında sarğılar yaratmaq və (b) adi COM komponentləri kimi görünməsi üçün .NET komponentləri ətrafında sarğılar yaratmaq imkanına malikdir.

C# müəllifləri müasir obyekt yönümlü dillərin (Java kimi) sadəliyini və ifadəliliyini C++ dilinin zənginliyi və gücü ilə birləşdirən dil yaratmağa çalışırdılar. Anders Hejlsberg-ə görə, C# sintaksisinin çox hissəsini C++-dan götürür. Xüsusilə, o, strukturlar və sadalamalar kimi rahat məlumat növlərini ehtiva edir (C++ dilinin digər nəsli - Java-da bu elementlər yoxdur, bu da proqramlaşdırma zamanı müəyyən narahatlıqlar yaradır). C# sintaktik konstruksiyaları təkcə C++ dilindən deyil, həm də Visual Basic-dən miras qalmışdır. Məsələn, C#, Visual Basic kimi, sinif xüsusiyyətlərindən istifadə edir. C++ kimi, C# da yaratdığınız növlər üçün operatorun həddən artıq yüklənməsinə imkan verir (Java heç bir funksiyanı dəstəkləmir). C# əslində müxtəlif dillərin hibrididir. Eyni zamanda, C# sintaktik olaraq Java-dan heç də az deyil (əgər çox deyilsə) təmizdir, Visual Basic qədər sadədir və C++ ilə demək olar ki, eyni gücə və çevikliyə malikdir.

C# xüsusiyyətləri:

Tam və dəqiq müəyyən edilmiş əsas növlərin dəsti.
- XML ​​sənədlərinin avtomatik yaradılması üçün quraşdırılmış dəstək. Dinamik olaraq ayrılmış yaddaşın avtomatik buraxılması.
- İstifadəçi tərəfindən müəyyən edilmiş atributlarla sinifləri və metodları qeyd etmək bacarığı. Bu, sənədlər üçün faydalı ola bilər və tərtib prosesinə təsir göstərə bilər (məsələn, siz yalnız debug rejimində tərtib edilməli olan metodları qeyd edə bilərsiniz).
- .NET baza sinif kitabxanasına tam giriş, həmçinin Windows API-yə asan giriş (əgər buna həqiqətən ehtiyacınız varsa).
- Lazım gələrsə, göstəricilər və birbaşa yaddaşa giriş. Bununla belə, dil elə qurulub ki, demək olar ki, bütün hallarda onsuz da edə bilərsiniz.
- VB stil xassələri və hadisələr üçün dəstək.
- Kompilyasiya açarlarını dəyişdirmək asandır. ActiveX nəzarətləri (COM komponentləri) ilə eyni şəkildə başqa kodla çağırıla bilən .NET komponenti icra olunanları və ya kitabxanaları əldə etməyə imkan verir.
- Dinamik ASP.NET veb səhifələrini yazmaq üçün C# istifadə etmək bacarığı.

Bu dilin nəzərdə tutulmadığı sahələrdən biri vaxt baxımından kritik və yüksək məhsuldarlığa malik proqramlardır ki, burada dövrənin icrası üçün 1000 və ya 1050 maşın dövrü tələb olunur və resursların dərhal buraxılması vacibdir. C++ bu sahədə ən yaxşı aşağı səviyyəli dil olaraq qalır. C#-da kodun müəyyən nöqtələrində yerinə yetirilməsinə zəmanət verilən daxili funksiyalar və destruktorlar kimi yüksək performanslı proqramlar yaratmaq üçün lazım olan bəzi əsas xüsusiyyətlər yoxdur. Bu dil müasir video oyunları yaratmaq üçün də fəal şəkildə istifadə olunur, məsələn, Battlefield 3 oyunu qismən C# dilində, tamamilə .NET texnologiyasında yazılmışdı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ə mövcud deyil, mən bunu yazdığım konkret anda, 10 aprel 2017-ci il, Kiyev vaxtı ilə 21:38 - ancaq bir ay, altı ay və ya baxaraq bu suala cavab verməyə çalışmağın daha az mənası var. bir il qabaqda.

Mövcud olan bir neçədir düzgün suallarö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, demək olar ki, mütləq oxunmalı və yüksək ehtimalla - yazılı). Ancaq təkcə bu deyil. Qeyri-JS proqramçısı demək olar ki, bir az JS oxumalıdır; JS proqramçısı - Python-da təsvir olunan alqoritmin icrasını yoxlamaq; sistem proqramçısının skript dilində başqasının 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 "dili siz 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 iş 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şqası böyüyəcək. Sadəcə bizi izləyin.

Diqqət, düzgün suallar!

Və yenə də bir yerdən 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 üçün əlavə alət əldə edin (məsələn, mikrobiologiya və ya mühasibatlıq)? 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ə, o zaman...

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 teleseriallar haqqında startap quracağam.” bigdata ilə” 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ə salmaq qərarına gəldikdən) sonra praqmatik bir sual verməyin mənası var: Hazırda hansı dillər fəal şə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 xülasə 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. Bizim 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 edin: 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əlisiniz"! 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ısı olan bir dildə 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ırmaq"dı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ı, ü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 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 inkişafı üçün, bəzi masa üstü sistemləri 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 bütün əməliyyat sistemlərində 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ü də bu dəqiqə 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 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ə Java-nın özü bu gün heç də 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 müəyyən 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 bir şöhrətə sahib olan 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 layihə ilə nəticələnə bilərsiniz - ya da 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-ni bağlayır (aşağıya baxın);

    R (16)- ümumi təyinatlı dildir, 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. Dünyanın demək olar ki, ən yaxşı dili, belə çıxır marağını təmin etmək;

    Ruby (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 bu gün adminlər və testçilər tərəfindən də sevilir, hər ikisi üçün əla alətlərə malikdir;

    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çimdir. Ə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 üçün əlamətdar deyil və Java. Bu, yalnız Apple ilə öz püşkünü atmağa qərar verənlər üçün ilk olaraq tövsiyə edilə bilər, çünki onun tətbiqi (qəsdən) məhduddur.

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, 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 qazanmasanız") 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ısaca 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.

Kasper Beyer "Proqramlaşdırma Dillərinin Qısa Tamamilə Dəqiq Tarixi".

1800

Joseph Marie Jacquard dəzgahı perfokartları oxumağı öyrədir və beləliklə, ilk çox yivli məlumat emal cihazını yaradır. Onun ixtirası Skynetin doğulmasını qabaqcadan görən ipək toxuyanlar tərəfindən düşmənçiliklə qarşılandı.

1842

Ada Lavleys nəcib axtarışlarını davam etdirərkən darıxırdı. O, bir dəftərdə daha sonra nəşr olunan ilk kompüter proqramı kimi tanınacaq bir eskiz çəkdi. Yeganə narahatçılıq kompüterin hələ icad edilməməsi idi.

1936

Alan Turinq hər şeyi icad edir, lakin bu, onu kimyəvi kastrasiyaya məhkum edən Britaniya məhkəməsinin gözündə haqq qazandırmır.

Kraliça daha sonra onu əfv etdi, lakin təəssüf ki, o vaxta qədər çoxdan ölmüşdü.

1957

John Backus real proqramçıların istifadə etdiyi ilk dil olan FORTRAN-ı yaradır.

1959

Qreys Hopper ilk sənaye yönümlü proqramlaşdırma dilini icad edir və onu “ümumi biznes yönümlü dil” və ya qısaca COBOL adlandırır.

1964

John George Kemeny və Thomas Kurtz qərara gəldilər ki, proqramlaşdırma çox çətin idi və onlar əsaslara qayıtmalıdırlar. Onlar öz proqramlaşdırma dillərini BASIC adlandırırlar.

1970

Niklaus Wirth Paskal dilini inkişaf etdirir. Bu, onun yaradılmasında iştirak etdiyi bir neçə dildən biridir e Wirth: O, dil yaratmağı xoşlayırdı.

O, həmçinin Mur Qanununu mənasız edən Wirth Qanununu tərtib etdi, çünki tərtibatçılar edəcəklər Və o qədər şişirdilmiş proqramlar yaradın ki, hətta meynfreymlər də onlarla ayaqlaşa bilmir. Bu, daha sonra Electron.js ixtirası ilə sübut ediləcəkdi.

1972

Dennis Ritchie Bell Labs-dakı işindən sıxıldı və buruq mötərizələri ilə C yaratmağa qərar verdi və layihə böyük uğur qazandı.O, daha sonra performansı yaxşılaşdırmaq üçün seqmentasiya xətaları və digər tərtibatçıya uyğun funksiyalar əlavə etdi.

Onun hələ bir neçə saatı qaldığından o, Bell Labs-dakı dostları ilə birlikdə C dilini nümayiş etdirmək üçün nümunə proqram yaratmağa qərar verdilər və Unix adlı əməliyyat sistemi yaratdılar.

1980

Alan Curtis Kaye obyekt yönümlü proqramlaşdırmanı icad edir və onu Smalltalk adlandırır. Smalltalk-da hər şey bir obyektdir, hətta obyekt də bir obyektdir.

1987

Larri Uol dini sahədəki təcrübəsi ilə vaiz olur və onun e ci doktrina Perl edir.

1983

Jean David Ishbia, Ada Lovelace-in proqramının heç vaxt yerindən qalxmadığını fərq etdi və bir dil yaratmağa və ona (Ada) adını verməyə qərar verdi. Amma dil də başlamır.

1986

Brad Cox və Tom Love Smalltalk əsasında C-nin oxunmaz versiyasını hazırlamağa qərar verdilər. Onu Objective-C adlandırdılar, lakin heç kim onun sintaksisini başa düşə bilməz.

1983

Björn Stroustrup gələcəyə qayıdır və C dilinin tələb etdiyini görürçox az kompilyasiya vaxtı. O, ağlına gələn hər bir xüsusiyyəti dilə əlavə edir və onu C++ adlandırır.

Dünyanın hər yerindən proqramçılar razılaşırlar və onlara iş yerində pişik videolarına baxmaq və xkcd oxumaq üçün parlaq bəhanə verirlər.

1991

Guido van Rossum qıvrımlı breketləri sevmir, ona görə də icad edir. Dilin sintaksisini seçərkən müəllif Monty Python və onun uçan sirkindən ilham alıb.

1993

Robert Ierusalimski və dostları yerli, braziliyalı skript dilinin lazım olduğuna qərar verdilər. IN Lokallaşdırma zamanı indekslərin 0 əvəzinə 1-dən saymağa başlamasına səbəb olan xəta baş verdi. Bu dil də Lua adlanırdı.

1994

Rasmus Lerdorf öz CGI ana səhifə skriptləri üçün şablon mühərriki yaradır və onun nöqtə fayllarını internetdə yayımlayır.

Dünya bu nöqtə fayllarını hər yerdə istifadə etməyə qərar verir və Rasmus qəzəb içində onlara bəzi əlavə verilənlər bazası bağlamaları əlavə edir və nəticəni RHP adlandırır.

1995

Yukihiro Matsumoto çox da sevinmədi və digər proqramçıların da bədbəxt olduğunu gördü. Onları xoşbəxt etmək üçün Rubini yaradır. Ruby yaratdıqdan sonra “Matz” xoşbəxtdir, Ruby icması xoşbəxtdir, hamı xoşbəxtdir.

1995

Brendan Eich dünyadakı bütün veb-brauzerləri və nəhayət Skynet-i idarə edəcək dili inkişaf etdirmək üçün işdən bir gün istirahət edir. Əvvəlcə Netscape-ə getdi və bu dilin LiveScript adlandığını söylədi, lakin kodun nəzərdən keçirilməsi zamanı Java populyarlıq qazandı, ona görə də qərara alındı qıvrım mötərizələrdən istifadə edin və dilin adını JavaScript olaraq dəyişdirin.

Məlum oldu ki, Java ticarət nişanıdır və bu, problemlərə səbəb ola bilər, ona görə də JavaScript sonralar adını dəyişib, lakin yenə də köhnə adla çağırılır.

1996

James Gosling, dizayn nümunələrinin praqmatizmdən üstün olduğu ilk həqiqətən ətraflı obyekt yönümlü proqramlaşdırma dili olan Java-nı icad etdi.

2001

Anders Hejlsberg Java-nı yenidən kəşf edir və C# dilini çağırır, çünki C dilində proqramlaşdırma Java-da proqramlaşdırmadan daha soyuq görünür. Java-nın yeni versiyası hər kəsin xoşuna gəlir, çünki o, Java-dan tamamilə fərqlidir.

2005

David Heinemeier Hansson daha sonra Ruby on Rails adlı veb çərçivə yaradır. İnsanlar unudurlar ki, bunlar iki fərqli şeydir.

2006

Con Resiq JavaScript köməkçi kitabxanası yazır. Hər kəs bunun bir dil olduğunu düşünür və İnternetdən jQuery kodunu kopyalayıb yapışdıraraq karyera qurur.

2009

Ken Thompson və Rob Pike C dilinə bənzər, lakin daha çox satıla bilən, daha çox təhlükəsizlik alətləri və maskot kimi Gophers ilə bir dil yaratmağa qərar verirlər.

Onlar bu dili Go adlandırırlar, mənbəni açmağa qərar verirlər və markalı dizliklər və Gopher dəbilqələri satmağa başlayırlar.

2010

Qreydon Hoare də C dilinə bənzər bir dil yaratmaq istəyir. Onu Rust adlandırır. Hər kəs proqram təminatının hər bir hissəsinin Rust-da dərhal yenidən yazılmasını tələb edir. Qreydon daha parlaq bir şey istəyir və Apple üçün Swift üzərində işləməyə başlayır.

2012

Anders Hejlsberg veb brauzerlərdə C# yazmaq istəyir. O, mahiyyətcə daha çox Java ilə JavaScript olan TypeScript-i yaradır.

2013

Ceremi Aşkenas Ruby tərtibatçıları kimi xoşbəxt olmaq istəyir, ona görə də o, JavaScript-ə tərcümə edilən, lakin daha çox Ruby kimi görünən CoffeeScript yaradır. Ceremi heç vaxt Matz və Ruby tərtibatçıları qədər xoşbəxt olmamışdı.

2014

Chris Latner Swift-i yaradır, onun əsas məqsədi Objective-C olmaq deyil. Nəhayət, bu dil Java-ya bənzəyir.

İnkişafın başlanğıcı

Assambleya dili

Effektiv bir proqrama sahib olmaq lazım olduqda, maşın dilləri əvəzinə onlara yaxın olan maşın yönümlü dillərdən - assemblerlərdən istifadə olunur. İnsanlar maşın əmrləri yerinə mnemonik əmrlərdən istifadə edirlər.

Ancaq montajçı ilə işləmək belə olduqca mürəkkəbdir və xüsusi təlim tələb edir.

Məsələn, Zilog Z80 prosessoru üçün 00000101 maşın təlimatı prosessora B registrini bir azaltmağı əmr edir. Assambleya dilində bu da DEC B kimi yazılacaq.

Strukturlaşdırılmış proqramlaşdırma

Növbəti addım 1954-cü ildə ilk yüksək səviyyəli dil olan Fortran dilinin yaradılması ilə atıldı. FORTRAN - FORMULA TƏRCÜMƏSİ). Yüksək səviyyəli dillər bəzi danışıq dili sözlərindən və ümumi riyazi simvollardan istifadə edərək təbii dilləri təqlid edir. Bu dillər insanlar üçün daha əlverişlidir, onların köməyi ilə bir neçə min sətir uzunluğunda proqramlar yaza bilərsiniz. Lakin qısa proqramlarda asan başa düşülsə də, daha böyük proqramlara gəldikdə dil oxunmaz və idarə olunması çətinləşirdi. Bu problemin həlli strukturlaşdırılmış proqramlaşdırma dillərinin ixtirası ilə gəldi. strukturlaşdırılmış proqramlaşdırma dili ), məsələn, ALGOL (1958), Paskal (1970), C (1972).

Strukturlaşdırılmış proqramlaşdırma dəqiq müəyyən edilmiş idarəetmə strukturlarını, proqram bloklarını, qeyd-şərtsiz atlama (GOTO) təlimatlarını, müstəqil alt proqramları, rekursiya dəstəyini və yerli dəyişənləri əhatə edir.

Bu yanaşmanın mahiyyəti proqramı onun komponent elementlərinə bölmək bacarığıdır.

Həmçinin yaradılmışdır funksional(tətbiqi) dillər (Məsələn: Lisp - İngilis. SİYAHI Emalı, 1958) və beyin oyunu dillər (məsələn: Prolog - İngilis dili) LOGic-də proqramlaşdırma, 1972).

Strukturlaşdırılmış proqramlaşdırma istifadə edildikdə əla nəticələr versə də, proqram müəyyən uzunluğa çatdıqda belə uğursuz olur. Daha mürəkkəb (və daha uzun) proqram yazmaq üçün proqramlaşdırmaya yeni yanaşma tələb olunurdu.

OOP

Nəticədə 1970-ci illərin sonu və 1980-ci illərin əvvəllərində obyekt yönümlü proqramlaşdırmanın prinsipləri işlənib hazırlanmışdır. OOP strukturlaşdırılmış proqramlaşdırmanın ən yaxşı prinsiplərini əsasları adlanan güclü yeni konsepsiyalarla birləşdirir. kapsulyasiya, polimorfizmmiras.

Obyekt yönümlü dillərə nümunələr bunlardır: Object Pascal, C++,

OOP, problemi komponent hissələrinə bölmək və hər biri ilə ayrıca işləmək yolu ilə proqramları optimal şəkildə təşkil etməyə imkan verir. Müəyyən bir problemi həll edən obyekt yönümlü dildə proqram mahiyyətcə dünyanın bu problemlə əlaqəli bir hissəsini təsvir edir.

Bağlantılar

  • Proqramlaşdırma və hesablama tarixi

Wikimedia Fondu. 2010.

Digər lüğətlərdə “Proqramlaşdırma Dillərinin İnkişafının Qısa Tarixi”nin nə olduğuna baxın:

    Proqramlaşdırma dili proqramların yazılması üçün nəzərdə tutulmuş rəsmi işarə sistemidir. Proqram adətən hansısa alqoritmi icraçıya başa düşülən formada təqdim edir (məsələn, kompüter). Proqramlaşdırma dili dəsti müəyyən edir... ... Vikipediya

    Ruby Semantikası: çoxparadiqma İcra növü: tərcüməçi Çıxış tarixi: 1995 Müəllif(lər): Yukihiro Matsumoto Son versiya: 1.9.1 ... Wikipedia

    Ruby Semantika: çoxparadiqma İcra növü: tərcüməçi Çıxış tarixi: 1995 Müəllif(lər): Yukihiro Matsumoto Son versiya: 1.9.1 ... Vikipediya - (Haykakan Sovetakan Socialistakan Hanrapetutyun) Ermənistan (Hayastan Ermənilər Ölkəsi). I. Ümumi məlumat Ermənistan SSR 29 noyabr 1920-ci ildə yaradılmışdır. 12 mart 1922-ci ildən 1936-cı il dekabrın 5-dək Zaqafqaziya Federasiyasının tərkibində olmuşdur (Bax... ...

    - (Lietuvos Taribu Sosialist Respublikası) Litva (Lietuvos). I. Ümumi məlumat Litva SSR 21 iyul 1940-cı ildə yaradılmışdır. 3 avqust 1940-cı ildən SSRİ-nin tərkibində olmuşdur. SSRİ-nin Qərbi Avropa hissəsində yerləşir. Şimalla sərhədləri...... Böyük Sovet Ensiklopediyası

    Atmosferdə sınaq üçün Buran OK GLI nümunəsi (BTS 002). Aviasiya və kosmik salon MAKS, 1999 ... Vikipediya

İcazə verin, proqramlaşdırma dillərinin inkişafındakı bəzi ümumi tendensiyaları qeyd edim. Ağıllı oxucu yəqin ki, nə deyəcəyimi çoxdan təxmin edib. Dillər daha böyük və daha çox abstraksiyaya doğru inkişaf edir. Və bu, səmərəliliyin azalması ilə müşayiət olunur. Sual: abstraksiya buna dəyərmi? Cavab: dəyər. Buna dəyər, çünki abstraksiya səviyyəsinin artırılması proqramlaşdırmanın etibarlılığı səviyyəsinin artmasına səbəb olur. Aşağı səmərəliliklə daha sürətli kompüterlər qurmaqla mübarizə aparmaq olar. Yaddaş tələbləri çox yüksəkdirsə, yaddaşın ölçüsünü artıra bilərsiniz. Bu, əlbəttə ki, vaxt və pul tələb edir, lakin həll edilə bilər. Ancaq proqramlardakı səhvlərlə məşğul olmağın yalnız bir yolu var: onlar düzəldilməlidir. Və ya daha yaxşısı, bunu etmə. Daha yaxşısı, onları törətməyi mümkün qədər çətinləşdirin. Proqramlaşdırma dilləri sahəsində aparılan bütün tədqiqatlar məhz buna yönəlib. Və səmərəliliyin itirilməsi ilə barışmalısan.

Bu araşdırmanın məqsədi oxucuya mövcud proqramlaşdırma dillərinin müxtəlifliyi haqqında fikir verməyə çalışmaq idi. Proqramçılar arasında tez-tez müəyyən bir dilin (C, C++, Paskal və s.) “universal tətbiqi” haqqında fikir var. Bu fikir bir neçə səbəbdən yaranır: məlumat çatışmazlığı, vərdiş, düşüncə ətaləti. Birinci amili bir az kompensasiya etməyə çalışdım. Qalanlarına gəlincə, yalnız onu deyə bilərəm ki, əsl peşəkar daim öz peşəkarlığını artırmaq üçün səy göstərməlidir. Və bunun üçün sınaqdan qorxmamalısınız. Bəs ətrafınızdakı hər kəs C/C++/VB/Pascal/Perl/Java/… dilində yazırsa, necə (uyğun olaraq altını çəkin)? Niyə yeni bir şey sınamırsınız? Bəs bunun daha təsirli olduğu ortaya çıxarsa? Əlbəttə ki, yeni bir dildən istifadə etməyə başlamazdan əvvəl onun bütün xüsusiyyətlərini, o cümlədən effektiv tətbiqetmənin mövcudluğunu, mövcud modullarla qarşılıqlı əlaqəni və s.-ni diqqətlə öyrənməli və yalnız bundan sonra qərar qəbul etməlisiniz. Təbii ki, hər zaman yanlış yola getmək riski var, amma... Yalnız heç nə etməyənlər səhv etmirlər.

Və daha da. “A dili B dilindən yaxşıdır” kimi müzakirələri eşitmişəm və bəzən iştirak etmişəm. Ümid edirəm ki, bu rəyi oxuduqdan sonra çoxları bu cür mübahisələrin mənasızlığına əmin olacaqlar. Müzakirə edilə bilən maksimum, müəyyən bir problemi müəyyən şərtlərdə həll edərkən bir dilin digərinə nisbətən üstünlükləridir. Bu, həqiqətən bəzən mübahisə etmək üçün bir şeyin olduğu yerdir. Və həll bəzən heç də aydın olmur. Bununla belə, “ümumiyyətlə” mübahisə etmək açıq-aşkar axmaqlıqdır.

Bu yazı “X dili ÖLMELİDİR” deyə qışqıranlara cavab olaraq nəzərdə tutulmuşdu. Ümid edirəm ki, cavab kifayət qədər adekvat və inandırıcı oldu. Ümid edirəm ki, məqalə polemik olmaqla yanaşı, tərbiyəvi əhəmiyyətə malikdir.