JavaRush /Blog Jawa /Random-JV /Tingkat basa pamrograman

Tingkat basa pamrograman

Diterbitake ing grup

Pambuka

Apa basa pamrograman sing beda-beda? Apa jenis konsep sing ditempelake ing dheweke? Kepiye carane dheweke berkembang? Ing artikel iki, kita bakal nliti jinis-jinis basa pamrograman adhedhasar tingkat sing diarani - saka kode mesin (tingkat rendah, cedhak karo hardware komputer) nganti basa kayata Jawa utawa C # (tingkat dhuwur). Transformasi sing luwih sithik ing dhaptar teks program sing ditindakake ing sadawane cara ngowahi dadi sakumpulan nol lan siji, tingkat sing luwih murah.
Tingkat basa pamrograman - 1
Sabanjure kita bakal katon ing:
  1. Basa tingkat rendah (kode mesin lan perakitan)
  2. Tingkat menengah (C, Fortran….)
  3. Tingkat dhuwur (C++, Java, Python, Ruby, JavaScript...)
Tingkat kasebut uga nggambarake sepira rinci dhaptar program sing bakal teka kudu rinci kanggo ngetrapake implementasine. Carane prasaja proses iki kanggo manungsa? Tingkat basa kudu ora dianggep minangka indikator sing ora jelas babagan kemampuane. Basa pamrograman minangka alat sing efektif ing sawijining wilayah lan kurang migunani ing wilayah liyane. Tukang kayu lan tukang kayu nyambut gawe. Sing pisanan duwe alat utama - set pahat, sing kapindho - kapak. Nanging, tukang kayu bakal nggawe lemari sing diukir luwih elegan, lan tukang kayu bakal mbangun omah luwih cepet. Sanajan saben wong bisa nindakake pakaryan liyane, dheweke bakal nindakake kanthi kurang efisien. Macem-macem data ing komputer dituduhake minangka set nol lan siji. Perintah kontrol kanggo pangolahan yaiku data sing padha ngemot instruksi sing nemtokake lokasi informasi sing dibutuhake lan cara modifikasi.

Basa mesin (tingkat paling ngisor)

Kita kudu nggawe kunjungan singkat saka area Software menyang area Hardware. Ayo padha ndeleng ing wangun simplified. Prosesor minangka "otak" utama komputer. Papan induk sing dipasang ngemot pengontrol sing digunakake kanggo sesambungan karo piranti liyane liwat bus (saluran data kanggo komunikasi).
Tingkat basa pamrograman - 2
Sawetara bisa kanthi kacepetan dhuwur (panah abang): prosesor nggambar printah saka memori lan manipulasi data, kertu video, utamane ing game 3D, nggunakake tekstur, bentuk, koordinat piksel lan obyek liyane kanggo nggawe gambar ing layar monitor. . Liyane (amarga watesan ing kacepetan ijol-ijolan informasi) ora mbutuhake indikator dhuwur kasebut. Macem-macem piranti internal lan eksternal disambungake ing diagram kanthi panah ijo.

Donya utama prosesor

Kabeh printah prosesor teka saka memori kanggo eksekusi ing wangun binar. Format, nomer, subset instruksi gumantung ing arsitektur. Akèh-akèhé ora cocog karo siji lan sijiné lan ngetutake ideologi sing béda-béda. Lan uga jinis printah banget gumantung ing mode (8/16/32... ambane dicokot) lan sumber data (memori, ndhaftar, tumpukan ...) karo kang prosesor dianggo. Tumindak sing padha bisa dituduhake kanthi instruksi sing beda. Prosesor duwe instruksi kanggo nambah rong operan (ADD X,Y) lan nambah siji menyang sing ditemtokake (INC X). Nambahake telu menyang operan bisa ditindakake minangka ADD X, 3 utawa kanthi nelpon INC X kaping telu. Lan, kanggo prosesor sing beda-beda, ora bisa prédhiksi cara kasebut kanthi optimal babagan kacepetan utawa jejak memori. Kanggo penak, informasi binar ditulis ing wangun heksadesimal. Ayo nimbang bagean saka program sing akrab (basa C, sintaks sing padha karo Jawa)
int func() {
    int i = getData("7") ;
    return ++i;
   ...
}
Kode sing ngleksanakake tumindak sing padha ing wangun urutan instruksi kanggo prosesor: ... 48 83 ec 08 bf bc 05 20 00 31 c0 e8 e8 fe ff ff 48 83 c4 08 83 c0 01 ... Iki minangka basa pamrograman tingkat rendah kanggo prosesor Intel. Fragmen sing nyebutake metode kanthi argumentasi lan ngasilake asil sing ditambahake siji. Iki minangka basa mesin (kode), sing ditransfer langsung, tanpa transformasi, menyang prosesor kanggo eksekusi. Kaluwihan:
  • We are rampung Master saka kahanan, kita duwe kemungkinan paling amba kanggo nggunakake prosesor lan hardware komputer.
  • Kabeh opsi kanggo ngatur lan ngoptimalake kode kasedhiya kanggo kita.
Minus:
  • Sampeyan kudu duwe kawruh ekstensif babagan fungsi prosesor lan njupuk akeh faktor hardware nalika nglakokake kode.
  • Nggawe program sing rada luwih rumit tinimbang conto sing diwenehake ndadékaké tambah akeh wektu kanggo nulis kode lan debugging.
  • Katergantungan platform: program sing digawe kanggo siji prosesor umume ora bisa digunakake ing liyane. Bisa uga kanggo prosesor iki, ing mode operasi liyane, panyuntingan kode bakal dibutuhake.
Kode mesin akeh digunakake nalika wiwitan komputer; ora ana metode pemrograman liyane ing jaman pionir komputer. Saiki, sok-sok digunakake dening insinyur mikroelektronik nalika ngembangake utawa nguji prosesor tingkat rendah.

Basa rakitan (tingkat rendah)

Ora kaya komputer, sampeyan lan aku ngerteni informasi luwih apik ing wangun teks / semantik tinimbang ing wangun digital. Sampeyan bisa kanthi gampang nyebutake sèket jeneng kontak ing smartphone, nanging sampeyan ora bisa nulis nomer telpon sing cocog. Iku padha karo pemrograman. Kita pindhah munggah tangga jinis kanthi njupuk telung langkah dhasar:
  • Ayo kita nggandhengake siji instruksi simbolis menyang klompok instruksi prosesor digital sing nindakake tumindak sing cocog.
  • Ayo nyorot argumentasi instruksi prosesor kanthi kapisah.
  • Ayo ngenalake kemampuan kanggo jeneng wilayah memori, variabel, lan lokasi printah individu.
Ayo mbandhingake fragmen program sadurunge ing kode mesin (tengah) lan ing basa perakitan (tengen):
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
Kaya sing sampeyan ngerteni, proses nulis program wis disederhanakake: ora perlu nggunakake buku referensi kanggo ngasilake nilai printah digital, ngitung dawa transisi, nyebarake data ing memori ing sel, lan fitur prosesor liyane. Kita njlèntrèhaké tumindak sing dibutuhake saka sakumpulan printah simbolis lan argumen sing perlu kanggo logika eksekusi, banjur program penerjemah nerjemahake file teks menyang sakumpulan nol lan sing bisa dingerteni prosesor. Kaluwihan:
  • Proses nulis lan ngowahi kode wis disederhanakake.
  • Kontrol kabeh sumber daya hardware dijaga.
  • Iku relatif luwih gampang kanggo port program kanggo platform liyane, nanging mbutuhake modifikasi gumantung kompatibilitas hardware.
Minus:
  • Basa assembly minangka basa pamrograman tingkat rendah. Nggawe malah bagean cilik saka kode iku angel. Kajaba iku, iku uga perlu kanggo njupuk menyang akun operasi tartamtu saka peralatan.
  • Katergantungan platform.
Conto demo Jawa sing paling populer:
public static void main(String[] args) {
    System.out.println("Hello World!");
}
bakal katon (sintaks NASM, nggunakake Windows API lan kernel32.lib) kaya ing ngisor iki:
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:
Kaya kode mesin, basa assembly luwih kerep digunakake dening insinyur lan programer sistem. Iki digunakake kanggo nulis bagean gumantung hardware saka kernel sistem operasi sing wektu-kritis utawa kritis kanggo fitur implementasine driver kanggo macem-macem piranti peripheral. Nanging akhir-akhir iki, dheweke kurang nggunakake, amarga panggunaane nyuda portabilitas program menyang platform liyane. Kadhangkala dheweke nggunakake proses disassembly - nggawe dhaptar assembler program saka kode digital kanggo ngurai logika kanggo ngeksekusi pecahan cilik. Ing kasus sing jarang, yen kode tingkat dhuwur asli ora kasedhiya: analisis virus kanggo nglawan utawa ilang kode sumber. Basa rakitan dianggep minangka generasi pisanan / kaloro (kita ora bakal nimbang pseudocodes sadurunge muncule assembler lan bedane saka perintah simbolis). Aku pengin nyorot panggunaan assembler ing Demo Scene: gabungan seni, matématika lan pengkodean tingkat rendah, ngemot gagasan seni para pangripta ing wangun program sing ngasilake klip video kanthi watesan sumber daya. Asring ukuran total program lan file data ngirim ora ngluwihi 256 bita (format 4/64 kilobyte uga populer). Punika conto program 4 KB:

Grup C/Basa Fortran (tingkat menengah/tinggi)

Kanthi pangembangan kemampuan teknologi komputer, jumlah fungsionalitas lan wektu implementasi kode ing assembler ora puas maneh. Biaya nulis, nguji, lan njaga program saya mundhak luwih cepet tinimbang kemampuane. Sampeyan perlu kanggo ngurangi syarat saka programmer ing syarat-syarat kawruh saka fungsi saka peralatan, kanggo menehi wong alat sing bakal ngidini kanggo nulis ing basa cedhak logika manungsa. Pindhah menyang tingkat anyar jinis basa pamrograman. Nyedhiyani kemampuan kanggo dipérang dadi macem-macem modul kanthi panggilan urutan luwih lanjut (paradigma pemrograman prosedural), nyedhiyakake macem-macem jinis data kanthi kemampuan kanggo mbangun, lan liya-liyane. kerja tim. Salah sawijining basa pisanan sing ndhukung kabeh ing ndhuwur yaiku Fortran, dikembangake ing taun 50-an ing abad pungkasan . Kemampuan kanggo nggawe ing wangun teks kanthi katrangan saka logika eksekusi nggunakake puteran, cabang, subrutin lan operasi karo susunan lan presenting data ing wangun nyata, integer lan nomer Komplek seneng engineers lan ilmuwan. Ing wektu sing cendhak, "kerangka" ilmiah lan perpustakaan digawe. Kabeh iki minangka akibat saka kasunyatan sing Fortran isih relevan saiki, sanajan ing lingkungan ilmiah sing sempit, lan berkembang, amarga bagasi pembangunan gedhe banget, perpustakaan IMSL mung wis aktif berkembang wiwit 1970 (!), kepiye carane akeh piranti lunak sing cocog sing padha sampeyan bisa ngelingi? Cabang pangembangan basa liyane ing tingkat iki yaiku C. Yen Fortran dadi alat kanggo para ilmuwan, banjur C digawe kanggo mbantu programer nggawe piranti lunak aplikasi: sistem operasi, driver, lan liya-liyane. Basa kasebut ngidini sampeyan ngontrol alokasi memori kanthi manual lan menehi akses langsung menyang sumber daya hardware. Programer C kudu ngontrol entitas tingkat rendah, mula akeh sing duwe pendapat yen C minangka basa rakitan sing luwih maju lan asring diarani basa "tingkat menengah". Sawise ngenalake ngetik data menyang assembler, unsur pemrograman prosedural lan modular, basa C isih dadi salah sawijining basa utama kanggo pemrograman sistem, sing uga difasilitasi dening pangembangan mikroelektronik kanthi cepet ing jaman saiki. Kabeh jinis gadget, pengontrol, jaringan lan piranti liyane mbutuhake driver, implementasi protokol kanggo kolaborasi lan piranti lunak tingkat rendah liyane kanggo ngetrapake interaksi karo peralatan kasebut. Kabeh ing ndhuwur nyumbang kanggo dikarepake kanggo basa saiki. Prinsip berorientasi obyek lan fungsional dikembangake maneh ing wangun C++, C#, Java, njupuk akeh saka sintaksis C. Pros:
  • Nyederhanakake proses nggawe kode: introduksi jinis, divisi menyang modul, nyuda dhaptar program.
  • Прозрачная логика заложенного алгоритма вследствие ухода от машинных codeов к более понятным для человека командам в семантически описательном стиле.
  • Переносимость. Стало достаточно перекомпorровать текст программы для выполнения на другой платформе (возможно, с небольшой модификацией).
  • Скорость откомпorрованных программ.
Минусы:
  • Отсутствие автоматического управления памятью и необходимость постоянного её контроля.
  • Отсутствие реализации концепций an objectно-ориентированного и функционального программирования.

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

Basa pemrograman tingkat dhuwur, ing babagan nggawe piranti lunak, saya tambah akeh wiwit pindhah saka kode mesin lan ngetrapake macem-macem paradigma pemrograman saliyane prosedural. Iki uga kalebu implementasine prinsip berorientasi obyek. C++, Java, Python, JavaScript, Ruby... - macem-macem basa jinis iki paling populer lan dikarepake saiki. Padha nyedhiyakake luwih akeh kesempatan kanggo ngetrapake macem-macem piranti lunak lan ora bisa nemtokake kanthi jelas "spesialisasi" saben wong. Nanging popularitas aplikasi ing wilayah sing relevan amarga perpustakaan / kerangka kerja kanggo nggarap, contone: JavaScript - Frontend. Basa iki dirancang kanggo interaksi antarane browser web klien lan pangguna lan server remot. Pustaka sing paling populer yaiku Angular, React lan VUE. Saiki, iki relatif aktif digunakake ing web lan server liyane (backend), Node.js utamané populer. Ruby - Backend. Iki digunakake kanggo nggawe skrip (file layanan) lan ing server web. Kerangka utama yaiku Ruby On Rails. Python minangka domain ilmiah lan teknik (saliyane domain web). Iku alternatif kanggo komputasi standar lan paket matématika (Mathematica, Octave, MatLab ...), nanging nduweni semantik biasanipun saka basa lan nomer akeh perpustakaan. Nduwe akeh penggemar ing bidang sistem pembelajaran mesin, statistik lan intelijen buatan. Pustaka sing kerep digunakake kalebu django, numpy, panda, lan tensorflow. C ++ - Pangembangan evolusi universal saka basa C. Nyedhiyakake kemampuan pemrograman fungsional lan berorientasi obyek tanpa kelangan kemampuan kanggo sesambungan karo hardware tingkat rendah. Amarga iki, produktivitas lan keluwesan diwujudake nalika nggawe piranti lunak, nanging regane uga cocog: alangan dhuwur kanggo mlebu amarga spesifikasi basa sing kompleks, perlu kanggo ngontrol sumber daya nalika nglakokake program kasebut. Akeh pangguna tunggal lan piranti lunak sistem sing ditulis nggunakake: modul sistem operasi (Windows, Symbian...), game, editor (Adobe Photoshop, Autodesk Maya...), database (MSSQL, Oracle...), pemain ( WinAmp...), lan liya-liyane. Perlu dicathet yen piranti lunak modern minangka produk sing kompleks, pangembangan sing nggunakake sawetara basa pamrograman sekaligus, lan bisa uga angel banget kanggo nemtokake tingkat partisipasi saben wong ing program kasebut. asil sakabèhé.

Kemajuan luwih

Bubar, jinis pemrograman liyane wis entuk popularitas - fungsional (pangembangan luwih saka tingkat basa) . Iki minangka jinis abstraksi liyane kanggo petungan - fungsi sing njupuk sakumpulan fungsi minangka argumen lan ngasilake liyane. Peran variabel dimainake dening fungsi sing padha (variabel sing akrab karo kita mung ekspresi konstan, padha karo final sadurunge deklarasi jinis ing Jawa). Fungsi kasebut dhewe ditutup ing ruang lingkup, asil operasi kasebut mung gumantung marang argumen sing dilewati. Ana rong sifat sing luar biasa:
  • Kanggo nguji, kita mung butuh argumen fungsi (asil karya ora gumantung marang variabel eksternal, lsp).
  • Program gaya fungsional siap-siap kanthi ajaib: panggilan fungsi urutan bisa ditindakake ing benang tetanggan (amarga ora kena pengaruh faktor eksternal) lan ora mbutuhake kunci (yaiku, ora ana masalah sinkronisasi). A nyurung apik kanggo nyawisake wektu kanggo topik iki, diwenehi Adoption nyebar saka prosesor multi-inti.
Nanging, ambang entri luwih dhuwur tinimbang kanggo OOP: kanggo kode efektif perlu kanggo mbangun program, njlèntrèhaké algoritma eksekusi ing wangun fungsi. Nanging uga kanggo gaya fungsional murni, luwih becik ngerti dasar-dasar logika lan teori kategori. Paling populer yaiku Haskell, Scala, F #. Nanging aja wedi, unsur pemrograman fungsional wis muncul ing Jawa (uga ing basa generasi katelu modern liyane) lan bisa digabung karo OOP. Sampeyan bakal ngerti kabeh rincian kasebut kanthi luwih rinci ing internship online JavaRush. Bidang pemrograman logika (tingkat basa sabanjure) durung nemokake aplikasi praktis sing wiyar amarga kurang dikarepake. Program bangunan mbutuhake kawruh babagan dhasar matematika diskrit, logika predikat, alat kendala lan cabang logika matematika liyane. Basa aktif sing paling populer yaiku Prolog.

Kesimpulan

Saiki, basa sing paling umum yaiku OOP. Jawa, wiwit wiwitane, tansah ana ing ndhuwur, biasane ing telung ndhuwur, basa populer. Saliyane OOP, ngemot unsur program fungsi, lan sampeyan bisa gabungke macem-macem gaya nulis program. Jangkoan aplikasi Jawa jembar banget - iki minangka tugas bisnis, implementasi server web (backend), basa utama kanggo nggawe aplikasi Android, lingkungan pemrograman lintas platform lan papan kerja (IDE/AWM) lan pemodelan, lan liya-liyane. . Posisi Jawa utamane kuwat ing sektor Enterprise - area piranti lunak perusahaan sing mbutuhake kode kualitas dhuwur lan umur dawa lan implementasine logika bisnis sing paling rumit.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION