JavaRush /Java Blog /Random-TK /Programmirleme dilleriniň derejeleri

Programmirleme dilleriniň derejeleri

Toparda çap edildi

Giriş

Dürli programmirleme dilleri haýsylar? Olarda haýsy düşünjeler bar? Olar nähili ösdi? Bu makalada derejeler diýlip atlandyrylýan programma dilleriniň görnüşlerine - maşyn kodlaryndan (pes dereje, kompýuter enjamlaryna ýakyn) Java ýa-da C # (ýokary dereje) ýaly dillere serederis. Programmanyň tekst sanawy nollaryň we nollaryň toplumyna öwrülmegiň ýolunda näçe az üýtgeşme bolsa, şonça-da pes bolar.
Programmirleme dilleriniň derejeleri - 1
Indiki serederis:
  1. Pes derejeli diller (maşyn kodlary we gurnama)
  2. Aralyk dereje (C, Fortran….)
  3. Levelokary dereje (C ++, Java, Python, Ruby, JavaScript ...)
Bu dereje, durmuşa geçirmek üçin geljekki programmanyň sanawynyň näderejede jikme-jik bolmalydygyny hem häsiýetlendirýär. Bu proses adamlar üçin nähili ýönekeý? Diliň derejesini, mümkinçilikleriniň birmeňzeş görkezijisi hasaplamaly däl. Programmirleme dili bir ugurda täsirli we beýlekilerde az peýdaly guraldyr. Birleşdiriji hem, agaç ussasy hem agaç bilen işleýär. Birinjisinde esasy gural - pyçaklar toplumy, ikinjisi - palta bar. Şeýle-de bolsa, agaç ussasy oýulan şkafy has owadan eder, agaç ussasy has çalt jaý gurar. Her biri beýlekisiniň işini etmäge ukyply bolsa-da, muny has az ýerine ýetirerler. Kompýuterdäki dürli maglumatlar nollar toplumy hökmünde görkezilýär. Ony gaýtadan işlemek üçin dolandyryş buýruklary, zerur maglumatlaryň ýerleşýän ýerini we üýtgetmegiň usulyny kesgitleýän görkezmeleri öz içine alýan maglumatlardyr.

Maşyn dilleri (Iň pes dereje)

Programma üpjünçiligi sebitinden Apparat meýdanyna gysga wagtlyk baryp görmeli bolarys. Itönekeýleşdirilen görnüşde seredeliň. Prosessor kompýuteriň esasy “beýni”. Gurnalan anakartda awtobuslar (aragatnaşyk üçin maglumat kanallary) arkaly beýleki enjamlar bilen täsirleşmek üçin ulanylýan dolandyryjylar bar.
Programmirleme dilleriniň derejeleri - 2
Käbirleri ýokary tizlikde işleýärler (gyzyl oklar): prosessor ýadyňdan buýruklary çekýär we maglumatlary dolandyrýar, wideo karta, esasanam 3D oýunlarynda, monitoryň ekranynda şekil döretmek üçin köp mukdarda dokumalary, şekilleri, piksel koordinatlaryny we beýleki zatlary sarp edýär. . Beýlekiler (maglumat alyş-çalyş tizliginiň çäklendirilmegi sebäpli) beýle ýokary görkezijilere mätäç däldir. Diagrammada dürli içerki we daşarky enjamlar ýaşyl oklar bilen birleşdirilýär.

Prosessoryň içki dünýäsi

Prosessor buýruklarynyň hemmesi ikilik görnüşinde ýerine ýetirmek üçin ýatdan gelýär. Görkezmeleriň formaty, sany, bölegi onuň arhitekturasyna baglydyr. Olaryň köpüsi biri-birine gabat gelmeýär we dürli ideologiýalara eýerýär. Şeýle hem buýrugyň görnüşi, prosessoryň işleýän re modeimine (8/16/32 ... bit çuňlugy) we maglumat çeşmesine (ýat, registr, stack ...) baglydyr. Şol bir hereketi dürli görkezmeler bilen görkezip bolýar. Prosessorda iki operany (ADD X, Y) goşmak we görkezilenine (INC X) goşmak üçin görkezmeler bar. Bir operanda üç esse goşmak ADD X, 3 görnüşinde ýa-da INC X-a üç gezek jaň edip bolýar. Dürli prosessorlar üçin bu usullaryň haýsysynyň tizlik ýa-da ýat aýak yzy taýdan amatly boljakdygyny çaklamak mümkin däl. Amatlylyk üçin ikilik maglumatlary alty sanly görnüşde ýazylýar. Geliň, tanyş programmanyň bir bölegine seredeliň (sintaksis Java-a meňzeş C dili)
int func() {
    int i = getData("7") ;
    return ++i;
   ...
}
Birmeňzeş amallary prosessor üçin görkezmeler yzygiderliligi görnüşinde ýerine ýetirýän kod: ... 48 83 ec 08 bf bc 05 20 00 31 c0 e8 e8 fe ff ff 48 83 c4 08 83 c0 01 ... Intel prosessory üçin pes derejeli programmirleme dili aslynda şeýle. Argument bilen usuly çagyrýan we bir gezek artdyrylan netijäni gaýtaryp berýän bölek. Bu maşyn dili (kod), ýerine ýetiriş üçin prosessora gönüden-göni, üýtgemezden geçirilýär. Taraz:
  • Theagdaýy doly özleşdirýäris, prosessor we kompýuter enjamlaryny ulanmak üçin iň giň mümkinçiliklerimiz bar.
  • Kody guramak we optimizirlemek üçin ähli mümkinçilikler elýeterlidir.
Minuslar:
  • Prosessorlaryň işleýşi barada giňişleýin bilim almaly we kod ýerine ýetirilende köp sanly enjam faktorlaryny göz öňünde tutmaly.
  • Berlen mysaldan birneme çylşyrymly programmalary döretmek, kod ýazmak we ony düzetmek üçin sarp edilen wagtyň ep-esli artmagyna getirýär.
  • Platforma baglylyk: bir prosessor üçin döredilen programma, köplenç beýlekilerde işlemez. Bu prosessor üçin, beýleki işleýiş usullarynda kod redaktirlemegi talap edilýär.
Maşyn kodlary kompýuterleriň daňynda giňden ulanylýardy, kompýuter pionerleri döwründe programmirlemegiň başga usullary ýokdy. Häzirki wagtda prosessorlary işläp düzmekde ýa-da pes derejeli synag geçirilende mikroelektronika inersenerleri tarapyndan wagtal-wagtal ulanylýar.

Gurnama dili (pes dereje)

Kompýuterden tapawutlylykda, siz we men maglumatlary sanly görnüşde däl-de, tekst / semantik görnüşde has gowy kabul edýäris. Smartfonyňyzda elli aragatnaşyk adyny aňsatlyk bilen atlandyryp bilersiňiz, ýöne degişli telefon belgilerini ýatdan ýazyp bilmezligiňiz mümkin. Programmirlemekde-de edil şonuň ýaly. Üç esasy ädim ätmek bilen görnüş basgançagyny ýokaryk galdyrýarys:
  • Bir simwoliki görkezmäni degişli hereketleri ýerine ýetirýän sanly prosessor görkezmeleriniň toparlary bilen baglanyşdyralyň.
  • Prosessor görkezmeleriniň argumentlerini aýratyn belläliň.
  • Memoryat meýdançalaryny, üýtgeýänleri we aýratyn buýruklaryň ýerleşişini atlandyrmak ukybyny hödürläliň.
Öňki programmanyň böleklerini maşyn kody (ortada) we gurnama dilinde (sagda) deňeşdireliň:
2004b0     48 83 ec 08      sub    $0x8,%rsp
2004b4     bf bc 05 20 00   mov    $0x2005bc,%edi
2004b9     31 c0            xor    %eax,%eax
2004bb     e8 e8 fe ff ff   callq  getData
2004c0     48 83 c4 08      add    $0x8,%rsp
2004c4     83 c0 01         add    $0x1,%eax
Görşüňiz ýaly, programma ýazmak prosesi ýönekeýleşdirildi: sanly buýruk bahalaryny döretmek, geçiş uzynlygyny hasaplamak, öýjüklerde maglumatlary ýatda paýlamak we beýleki prosessor aýratynlyklary üçin maglumat kitaplaryny ulanmagyň zerurlygy ýok. Gerekli hereketi simwoliki buýruklar toplumyndan we ýerine ýetiriş logikasy üçin zerur argumentlerden beýan edýäris, soňra terjimeçi programma tekst faýlyny nollar toplumyna we prosessor üçin düşnükli bolanlara terjime edýär. Taraz:
  • Kod ýazmak we üýtgetmek prosesi ýönekeýleşdirildi.
  • Hardwarehli enjam çeşmelerine gözegçilik edildi.
  • Programmany beýleki platformalara geçirmek has aňsat, ýöne enjamlaryň laýyklygyna baglylykda üýtgetmegi talap edýär.
Minuslar:
  • Gurnama dili pes derejeli programmirleme dilidir. Koduň kiçi bölümlerini hem döretmek kyn. Mundan başga-da, enjamlaryň işleýşini hem göz öňünde tutmalydyr.
  • Platforma baglylyk.
Iň meşhur Java demo mysaly:
public static void main(String[] args) {
    System.out.println("Hello World!");
}
aşakdaky ýaly görüner (Windows API we kernel32.lib ulanyp NASM sintaksis):
global _main
	extern  _GetStdHandle@4
	extern  _WriteFile@20
	extern  _ExitProcess@4

	section .text
_main:
	; DWORD  bytes;
	mov 	ebp, esp
	sub 	esp, 4

	; hStdOut = GetstdHandle( STD_OUTPUT_HANDLE)
	push	-11
	call	_GetStdHandle@4
	mov 	ebx, eax

	; WriteFile( hstdOut, message, length(message), &bytes, 0);
    push	0
	lea 	eax, [ebp-4]
	push	eax
	push	(message_end - message)
	push	message
	push	ebx
	call	_WriteFile@20

	; ExitProcess(0)
	push	0
	call	_ExitProcess@4

	; never here
	hlt
message:
	db  	'Hello, World', 10
message_end:
Maşyn kodlary ýaly, gurnama dili inersenerler we ulgam programmistleri tarapyndan köplenç ulanylýar. Operasiýa ulgamynyň ýadrosynyň dürli periferiýa enjamlary üçin sürüjileriň ýerine ýetiriş aýratynlyklary üçin wagt taýdan möhüm ýa-da möhüm bolan bölekleri ýazmak üçin ulanylýar. Latöne soňky döwürde oňa az-kem ýüz tutýarlar, sebäbi ulanylyşy programmalaryň beýleki platformalara geçirijiligini ep-esli azaldar. Käwagt sökmek prosesini ulanýarlar - kiçi bölekleri ýerine ýetirmek üçin logikany derňemek üçin sanly kodlardan programmanyň gurnama sanawyny döredýärler. Seýrek ýagdaýlarda asyl ýokary derejeli kod ýok bolsa: wiruslara garşy göreşmek ýa-da deslapky kody ýitirmek. Gurnama dili ilkinji / ikinji nesil hasaplanýar (montalerçy ýüze çykmazdan ozal we olaryň simwoliki buýruklardan tapawudyny aýratynlykda göz öňünde tutmarys). Demo sahnasynda ýygnaýjynyň ulanylyşyny belläsim gelýär: sungat, matematika we pes derejeli kodlaşdyrma, döredijileriň çeper pikirlerini çeşme çäklendirmeleri bilen wideo klipleri döredýän programmalar görnüşinde şekillendirýär. Köplenç programmanyň we maglumat faýlyň umumy göwrümi 256 baýtdan geçmeli däldir (4/64 kilobaýt formaty hem meşhur). Ine, 4 KB programmasynyň mysaly:

Topar C / Fortran dilleri (orta / ýokary dereje)

Kompýuter tehnologiýasynyň mümkinçilikleriniň ösmegi bilen, ýygnaýjyda koduň işleýşiniň mukdary we ýerine ýetiriliş wagty kanagatlanarly däldi. Programmalary ýazmak, synagdan geçirmek we goldamak üçin çykdajylar, mümkinçiliklerinden has çalt ululyk tertibini artdyrdy. Enjamyň işleýşi barada programmistden talaplary azaltmak, oňa adam logikasyna ýakyn dillerde ýazmaga mümkinçilik berýän gural bermek zerur boldy. Programmirleme diliniň görnüşleriniň täze derejesine geçiň. Mundan başga-da yzygiderli çagyryş (prosessual programmirleme paradigmasy) bilen dürli modullara bölmek, dürli görnüşli maglumatlary gurmak ukyby bilen üpjün etmek we ş.m. goşmaça mümkinçilikler bilen birlikde, bu çäreler koduň beýleki platformalara gowulaşmagyny, has amatly guramagyny üpjün etdi. toparlaýyn iş. Aboveokardakylaryň hemmesini goldaýan ilkinji dilleriň biri geçen asyryň 50-nji ýyllarynda ösen Fortran boldy . Aýlawlary, şahalary, subroutinleri ulanyp, massiwler bilen işlemek we hakyky, bitewi we çylşyrymly sanlar görnüşinde maglumatlary hödürlemek ýerine ýetiriş logikasynyň beýany bilen tekst görnüşinde döretmek ukyby inersenerleri we alymlary begendirdi. Gysga wagtyň içinde ylmy “çarçuwalar” we kitaphanalar döredildi. Bularyň hemmesi, dar ylmy gurşawda bolsa-da, Fortranyň häzirem aktual bolmagynyň we ösmeginiň netijesi boldy, ösüş goşlary gaty köp bolansoň, diňe IMSL kitaphanasy 1970 -nji ýyldan bäri işjeň ösýär (!), Nädip şuňa meňzeş köp programma üpjünçiligi ýadyňyza düşýärmi? Bu derejedäki dilleriň ösüşiniň başga bir pudagy C. “Fortran” alymlar üçin gural bolan bolsa, “C” programma üpjünçiligini döredýän programmaçylara kömek etmek üçin döredildi: operasiýa ulgamlary, sürüjiler we ş.m. Dil ýadyň paýlanyşyny el bilen dolandyrmaga mümkinçilik berýär we enjam çeşmelerine gönüden-göni girýär. C programmistleri pes derejeli guramalara gözegçilik etmeli bolýarlar, şonuň üçin köpler C ösen gurnama dili we köplenç “orta derejeli dil” diýilýär. Maglumatlary ýygnaýjylara, prosessual we modully programmirlemegiň elementlerine girizen C dili, soňky ýyllarda mikroelektronikanyň çalt ösmegi bilen ýeňilleşdirilen ulgam programmasy üçin esasy dilleriň biri bolup durýar. Gadhli görnüşli enjamlar, dolandyryjylar, tor we beýleki enjamlar sürüjiler, enjamlar bilen özara täsirleşmek üçin hyzmatdaşlyk protokollaryny we beýleki pes derejeli programma üpjünçiligini talap edýär. Aboveokardakylaryň hemmesi häzirki wagtda dile bolan islege goşant goşýar. Obýekte gönükdirilen we funksional prinsipler C sintaksisinden köp zat alyp, C ++, C #, Java görnüşinde hasam ösdürilipdir .
  • Kod döretmek prosesini ýönekeýleşdirmek: görnüşleri girizmek, modullara bölmek, programma sanawlarynyň azalmagy.
  • Прозрачная логика заложенного алгоритма вследствие ухода от машинных codeов к более понятным для человека командам в семантически описательном стиле.
  • Переносимость. Стало достаточно перекомпorровать текст программы для выполнения на другой платформе (возможно, с небольшой модификацией).
  • Скорость откомпorрованных программ.
Минусы:
  • Отсутствие автоматического управления памятью и необходимость постоянного её контроля.
  • Отсутствие реализации концепций an objectно-ориентированного и функционального программирования.

Развитие языков высокого уровня

Programma üpjünçiligini döretmek nukdaýnazaryndan ýokary derejeli programmirleme dilleri, maşyn kodlaryndan daşlaşyp, prosessual dillerden başga-da dürli programmirleme paradigmalaryny durmuşa geçirip başlady. Bular obýekte gönükdirilen ýörelgeleriň durmuşa geçirilmegini hem öz içine alýar. C ++, Java, Python, JavaScript, Ruby ... - bu görnüşdäki dilleriň diapazony häzirki döwürde iň meşhur we islegli. Dürli programma üpjünçiligini durmuşa geçirmek üçin has köp mümkinçilik döredýär we olaryň hersiniň “ýöriteleşdirilişini” anyk kesgitlemek mümkin däl. Relevantöne degişli ugurlarda programmanyň meşhurlygy kitaphanalar / olar bilen işlemek üçin çarçuwalar bilen baglanyşykly, mysal üçin: JavaScript - Frontend. Bu dil, müşderi web brauzeri bilen ulanyjynyň we uzakdaky serweriň özara täsiri üçin döredildi. Iň meşhur kitaphanalar Angular, React we VUE. Häzirki wagtda web we beýleki serwerlerde (arkada) has işjeň ulanylýar, Node.js esasanam meşhur. Ruby - Yzky. Ripazgylary (hyzmat faýllaryny) we web serwerlerinde döretmek üçin ulanylýar. Esasy çarçuwasy Ruby On Rails. Python ylmy we in engineeringenerçilik domenidir (web domeniniň daşynda). Adaty hasaplaýyş we matematiki paketlere (Matematika, Oktawa, MatLab ...) alternatiwadyr, ýöne diliň adaty semantikasy we köp sanly kitaphanasy bar. Maşyn öwreniş ulgamlary, statistika we emeli intellekt ulgamynda köp janköýerleri bar. Freygy-ýygydan ulanylýan kitaphanalarda django, gümürtik, panda we tensorflow bar. C ++ - C diliniň uniwersal, ewolýusiýa ösüşi. Pes derejeli enjamlar bilen täsirleşmek ukybyny ýitirmän, funksional we obýekte gönükdirilen programma üpjünçiligini üpjün edýär. Şol sebäpli programma üpjünçiligi döredilende öndürijilik we çeýeligi amala aşyrylýar, ýöne bahasy hem gabat gelýär: diliň çylşyrymly spesifikasiýasy, programma ýerine ýetirilende çeşmelere garaşsyz gözegçilik etmegiň zerurlygy sebäpli giriş üçin ýokary päsgelçilik. Köp ulanyjy we ulgam programma üpjünçiligi ony ulanyp ýazylýar: operasiýa ulgamy modullary (Windows, Symbian ...), oýunlar, redaktorlar (Adobe Photoshop, Autodesk Maya ...), maglumat bazalary (MSSQL, Oracle ...), oýunçylar ( WinAmp ...) we ş.m. Häzirki zaman programma üpjünçiliginiň çylşyrymly önümdigini, ösüşiniň birbada birnäçe programmirleme dilini ulanýandygyny bellemelidiris we olaryň hersiniň gatnaşma derejesini kesgitlemek gaty kyn bolup biler. umumy netije.

Geljekde ösüş

Soňky döwürde programmirlemegiň başga bir görnüşi meşhurlyk gazandy - funksional (dil derejesiniň mundan beýläkki ösüşi) . Ine, hasaplamalar üçin abstraksiýanyň başga bir görnüşi - funksiýalar toplumyny argument hökmünde alýan we başga birini yzyna gaýtarýan funksiýalar. Üýtgeýjileriň roly şol bir funksiýalar bilen ýerine ýetirilýär (bize mälim bolan üýtgeýjiler, Java-da görnüş deklarasiýasynyň öňüsyrasyna meňzeş hemişelik aňlatmalardyr). Funksiýanyň özi öz çäginde ýapyk, işiniň netijesi diňe geçen argumentlere baglydyr. Mundan iki sany ajaýyp aýratynlyk bar:
  • Synag üçin diňe funksiýa argumentleri gerek (işiň netijesi daşarky üýtgeýänlere we ş.m. bagly däl).
  • Funksiýa görnüşli programma gudrat bilen sazlaşykly taýýar: yzygiderli funksiýa jaňlary goňşy sapaklarda berlip bilner (sebäbi daşarky faktorlar täsir etmeýär) we gulplary talap etmeýär (ýagny sinhronizasiýa meselesi ýok). Köp ýadroly prosessorlaryň giňden kabul edilmegini göz öňünde tutup, bu mowzuga wagt sarp etmek üçin gowy höwes.
Şeýle-de bolsa, giriş çäkleri OOP-dan has ýokary: täsirli kod üçin ýerine ýetiriş algoritmini funksiýalar görnüşinde beýan edip, programma gurmaly. Alsoöne arassa funksional stil üçin logika we kategoriýa teoriýasynyň esaslaryny bilmek gowy bolardy. Iň meşhurlary Haskell, Scala, F #. Emma gorkmaň, funksional programmirlemegiň elementleri Java-da (beýleki häzirki zaman üçünji nesil dillerinde bolşy ýaly) peýda boldy we OOP bilen birleşdirilip bilner. Bu jikme-jiklikleriň hemmesini JavaRush onlaýn tejribe wagtynda has giňişleýin öwrenersiňiz. Logika programmirleme ugry (dilleriň indiki derejesi) pes islegi sebäpli entek giň amaly amaly tapmady. Gurluşyk programmalary aýratyn matematikanyň esaslaryny, takyk logikany, çäklendiriji gurallary we matematiki logikanyň beýleki pudaklaryny bilmegi talap edýär. Iň meşhur işjeň dil Prolog.

Netije

Häzirki wagtda iň köp ýaýran diller OOP. “Java” döredilen gününden bäri hemişe iň ýokarky, adatça ilkinji üçlügiň arasynda meşhur dillerde durýar. OOP-dan başga-da, funksional programmirlemegiň elementlerini öz içine alýar we programmalaryňyzy ýazmagyň dürli görnüşlerini birleşdirip bilersiňiz. Java programmalarynyň diapazony gaty giň - bular iş meseleleri, web serwerlerini (arka tarapy) ýerine ýetirmek, Android programmalaryny döretmek üçin esasy dil, platforma programma gurşawy we iş ýerleri (IDE / AWM) we modellemek we ş.m. . Java-yň pozisiýasy Kärhanalar pudagynda has güýçli - ýokary hilli we uzak möhletli kody we iň çylşyrymly iş logikasyny durmuşa geçirmegi talap edýän korporatiw programma üpjünçiligi.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION