Sejarah bahasa pemrograman. Bahasa pemrograman Siapa yang pertama kali mengembangkan bahasa pemrograman




Sangat penting untuk mengetahui sejarah umum bahasa pemrograman dan sejarah perkembangan bahasa yang dikenal dan tidak dikenal. Pada artikel ini Anda akan mengenalnya, tapi pertama-tama mari kita ingat “Apa itu bahasa pemrograman?”

Bahasa pemrograman adalah sistem notasi dan aturan yang memungkinkan Anda menulis program untuk memecahkan suatu masalah dalam bentuk teks berurutan dalam bentuk yang nyaman bagi seseorang.

50an

Pada tahun lima puluhan abad kedua puluh, dengan munculnya komputer tabung vakum, perkembangan pesat bahasa pemrograman dimulai. Pemrograman dimulai dengan menulis program secara langsung dalam bentuk instruksi mesin (dalam bentuk kode, seperti yang dikatakan pemrogram). Komputer, yang pada saat itu memerlukan biaya yang jauh lebih mahal daripada pengembangan program apa pun, memerlukan kode yang sangat efisien.

Untuk mempermudah pengkodean, dikembangkan berorientasi mesin, yang memungkinkan penulisan instruksi mesin dalam bentuk simbolis. Bahasa rakitan bergantung pada sistem instruksi komputer tertentu. Cukup nyaman untuk memprogram tugas-tugas kecil yang memerlukan kecepatan eksekusi maksimum.

Namun, proyek besar sulit dikembangkan dalam bahasa Majelis. Masalah utamanya adalah program yang ditulis dalam Majelis terikat dengan arsitektur komputer tertentu dan tidak dapat ditransfer ke mesin lain. Ketika komputer diperbaiki, semua program di Majelis harus ditulis ulang lagi.

Hampir segera dengan munculnya komputer, bahasa tingkat tinggi dikembangkan, yaitu. bahasa yang tidak bergantung pada arsitektur tertentu. Untuk menjalankan suatu program dalam bahasa tingkat tinggi, program tersebut harus diterjemahkan terlebih dahulu ke dalam bahasa perintah mesin. Program khusus yang melakukan penerjemahan tersebut disebut penerjemah atau kompiler.

Program yang diterjemahkan kemudian dijalankan langsung oleh komputer. Ada juga kemungkinan untuk menerjemahkan program ke dalam bahasa perantara yang tidak bergantung pada arsitektur komputer tertentu, namun, bagaimanapun, sedekat mungkin dengan bahasa perintah mesin.

Program bahasa perantara tersebut kemudian dieksekusi oleh program khusus yang disebut interpreter. Kompilasi dengan cepat juga dimungkinkan ketika fragmen program yang dieksekusi diterjemahkan dari bahasa perantara ke bahasa perintah mesin segera sebelum eksekusi.

Pada pertengahan tahun 50-an, di bawah kepemimpinan John Backus, bahasa pemrograman algoritmik tingkat tinggi FORTRAN dikembangkan untuk IBM. Terlepas dari kenyataan bahwa sudah ada perkembangan dalam bahasa yang mengubah ekspresi aritmatika menjadi kode mesin, penciptaan bahasa FORTRAN (FORmula TRANslator), yang memberikan kemampuan untuk menulis algoritma perhitungan menggunakan pernyataan kondisional dan operator input/output, menjadi titik awal era bahasa pemrograman tingkat tinggi.

Sebagai alternatif dari bahasa FORTRAN, yang awalnya ditujukan untuk arsitektur IBM, ALGOL (ALGOrithmic Language) dikembangkan di bawah kepemimpinan Peter Naur pada akhir tahun 50an. Tujuan utama yang dikejar oleh para pengembang bahasa ini adalah kemandirian dari arsitektur spesifik sistem komputer.

Selain itu, pencipta bahasa ALGOL berusaha mengembangkan bahasa yang nyaman untuk mendeskripsikan algoritma dan menggunakan sistem notasi yang mirip dengan yang diadopsi dalam matematika. FORTRAN dan ALGOL adalah bahasa pertama yang berfokus pada pemrograman komputasi.

60an

Pada akhir tahun 60an, di bawah kepemimpinan Nayard dan Dahl, bahasa Simula-67 dikembangkan, menggunakan konsep tipe data yang ditentukan pengguna. Faktanya, ini adalah bahasa pertama yang menggunakan konsep kelas.

70an

Pada pertengahan tahun 70-an, Wirth mengusulkan bahasa Pascal, yang segera digunakan secara luas. Pada saat yang sama, atas inisiatif Departemen Pertahanan AS, pekerjaan dimulai untuk menciptakan bahasa tingkat tinggi yang disebut Ada - untuk menghormati Ada Lovelace, seorang programmer dan putri Lord Byron.

Penciptaan bahasa dimulai dengan mendefinisikan persyaratan dan mengembangkan spesifikasi. Empat kelompok independen mengerjakan proyek ini, tetapi mereka semua menggunakan Pascal sebagai dasar. Pada awal tahun 1980an, kompiler industri pertama untuk bahasa Ada dikembangkan.

pengembangan C

Bahasa pemrograman universal dikembangkan pada pertengahan tahun 70an oleh Denis Ritchie dan Ken Thompson. Bahasa tersebut menjadi bahasa pemrograman sistem yang populer dan pernah digunakan untuk menulis kernel sistem operasi UNIX.

Standar bahasa C dikembangkan oleh kelompok kerja ANSI pada tahun 1982. Standar Internasional untuk bahasa C diadopsi pada tahun 1990. Bahasa C menjadi dasar berkembangnya bahasa pemrograman dan Java.

Bahasa C memungkinkan untuk menghilangkan Assembler saat membuat sistem operasi. Misalnya, hampir semua teks sistem operasi Unix ditulis dalam C dan karenanya tidak bergantung pada komputer tertentu.

Keuntungan utama C adalah kesederhanaannya dan tidak adanya solusi pseudoscientific. Mekanisme meneruskan parameter ke suatu fungsi (hanya berdasarkan nilai) dijelaskan secara sederhana dan jelas. Seorang programmer yang membuat program C selalu memahami dengan jelas bagaimana program ini akan dijalankan.

Konsep variabel pointer, statis dan otomatis (tumpukan) dari bahasa C paling mencerminkan struktur komputer modern mana pun, oleh karena itu program C efektif dan nyaman untuk debugging.

Saat ini, sebagian besar program ditulis dalam C dan C++. Antarmuka sistem operasi apa pun (yang disebut API - Antarmuka Program Aplikasi), mis. sekumpulan panggilan sistem yang ditujukan untuk pengembang aplikasi biasanya berupa sekumpulan fungsi dalam bahasa C.

Seiring dengan bahasa algoritmik, bahasa yang dimaksudkan untuk memproses informasi bisnis, serta bahasa kecerdasan buatan, dikembangkan secara paralel. Yang pertama mencakup bahasa COBOL (COMmon Business Oriented Language), dan yang kedua mencakup bahasa LISP (LISt Processing) dan Prolog.

Bahasa LISP, yang dikembangkan pada tahun 60an di bawah kepemimpinan J. McCarthy, adalah bahasa pemrosesan daftar fungsional pertama yang banyak diterapkan dalam teori permainan.

tahun 90an

Pada tahun 90-an, dengan menyebarnya Internet, kemungkinan pemrosesan data terdistribusi meluas, yang juga mempengaruhi perkembangan bahasa pemrograman. Bahasa yang berfokus pada pembuatan aplikasi server telah bermunculan, seperti Perl, Bahasa Deskripsi Dokumen, dan XML.

Bahasa pemrograman tradisional C++ dan Pascal juga mengalami perubahan: bahasa pemrograman mulai berarti tidak hanya fungsionalitas bahasa itu sendiri, tetapi juga perpustakaan kelas yang disediakan oleh lingkungan pemrograman.

Penekanannya dialihkan dari spesifikasi bahasa pemrograman itu sendiri ke standarisasi mekanisme interaksi aplikasi terdistribusi. Teknologi baru telah muncul - COM dan CORBA, yang mengatur interaksi objek terdistribusi.

Bidang penerapan bahasa pemrograman

Saat ini bahasa pemrograman digunakan dalam berbagai bidang aktivitas manusia, seperti:

  • komputasi ilmiah (bahasa C++, FORTRAN, Java);
  • pemrograman sistem (bahasa C++, Java);
  • pemrosesan informasi (bahasa C++, COBOL, Java);
  • kecerdasan buatan (LISP, Prolog);
  • kegiatan penerbitan (Postscript, TeX);
  • pemrosesan informasi jarak jauh (Perl, PHP, Java, C++);
  • deskripsi dokumen (HTML, XML).

Berdasarkan sejarah bahasa pemrograman, kita dapat mengatakan bahwa seiring berjalannya waktu, beberapa bahasa telah berkembang, memperoleh fitur-fitur baru dan tetap diminati, sementara bahasa lain telah kehilangan relevansinya dan saat ini, paling banter, hanya untuk kepentingan teoretis.

Bagi saya, Fortran selalu tampak sebagai yang pertama, yang, khususnya, mungkin tercermin dalam diagram paling terkenal dalam sejarah bahasa pemrograman. Faktanya, dalam hal pengaruh dan popularitas, Fortran tentu saja yang pertama. Namun, dari sudut pandang sejarah, tidak.

[Lebih tepatnya, bahasa pemrograman pertama, tampaknya, adalah notasi yang digunakan untuk menulis program Charles Babbage dalam artikel terkenal oleh Ada Augusta Byron, Countess of Lovelace "Sketch Of the Analytical Engine" (artikel tersebut adalah terjemahan dari sebuah artikel oleh Menabrea Italia tentang pengoperasian mesin pembeda Babbage dan berisi tambahan penting yang ditulis oleh Ada Augusta sendiri). Namun, itu bukanlah bahasa pemrograman yang sebenarnya, dan mesin yang dimaksudkan untuk itu hanya ada dalam pikiran orang yang brilian. Ngomong-ngomong, saya perhatikan bahwa pada tahun 1991 Museum Sains di London menciptakan mesinnya berdasarkan gambar Babbage dan sekarang mesin tersebut berfungsi dengan baik]

Jadi, bahasa pemrograman pertama. Itu sama sekali bukan Fortran, tetapi bahasa dengan nama yang luar biasa - Plankalkül, yang diterjemahkan dari bahasa Jerman sebagai "Kalkulus Rencana" atau "Rencana Perhitungan", dikembangkan oleh ilmuwan, penemu, dan perancang Jerman Konrad Zuse di Nazi Jerman antara tahun 1942 dan 1945.

[Zuse juga merancang beberapa model komputer yang berbeda. Misalnya, Z3 miliknya juga dibuat sebelum Marc I dan ENIAC yang terkenal dan pada saat yang sama merupakan mesin yang sepenuhnya lengkap. ]

Diduga bahwa Zuse mencapai semua prestasinya secara mandiri, tanpa mendapat informasi tentang pekerjaan Amerika dan Inggris yang dilakukan dalam waktu dekat, dan bahkan tanpa mengetahui tentang pekerjaan Babbage.

Penciptaan bahasa pemrograman merupakan kelanjutan alami dari pekerjaan menciptakan bagian “perangkat keras” komputer. Zuse sendiri mencoba menggunakannya untuk menulis program bermain catur. Pengerjaan bahasa tersebut selesai sekitar tahun 1946, namun bahasa tersebut belum dikembangkan dan bahkan manual tertulisnya baru diterbitkan pada tahun 1972. Oleh karena itu, bahasa tersebut ternyata tidak diketahui dan tidak berdampak signifikan terhadap perkembangan industri selanjutnya (dibandingkan, misalnya dengan Fortran).

Namun, Plankalkül tidak diragukan lagi merupakan bahasa pemrograman tingkat tinggi pertama di dunia. Konsep dasar bahasa meliputi:

  • Kehadiran subrutin (dan ini terjadi pada tahun 1940-an!!!)
  • Kehadiran operator penugasan (=>)
  • Siklus
  • Pernyataan bersyarat (jika)
  • Kemampuan untuk memanipulasi array
  • Kemampuan untuk memanipulasi daftar
Saat menciptakan bahasa tersebut, Zuse mengumpulkan banyak masalah yang diajukan oleh para insinyur dan ilmuwan. Untuk menunjukkan bahwa bahasa tersebut benar-benar mampu memecahkan masalah ini, sejumlah besar contoh program telah ditulis (khususnya, sekitar 60 halaman contoh untuk program bermain catur).

Salah satu masalah bahasa ini adalah sintaksisnya yang sangat rumit, yang sangat tidak biasa bagi programmer modern. Berikut contoh tugas A = A+1 dalam bahasa Plankalkül.

Plankalkül adalah bahasa pemrograman tingkat tinggi pertama di dunia, yang dikembangkan oleh insinyur Jerman Konrad Zuse antara
1942 dan 1946 untuk komputer Z4 miliknya (komputer gambar di bawah, foto diambil dari Wikipedia).

Perang Dunia Kedua sedang berlangsung, Zuse bekerja secara terpisah dari ilmuwan dari negara lain, sepenuhnya mandiri. Selama ini, ia tidak hanya menciptakan bahasa pemrograman,
tetapi juga menulis 49 halaman program untuk memperkirakan posisi catur di dalamnya. Karyanya diterbitkan secara penuh kemudian, pada tahun 1972.

Saya akan mengambil risiko membicarakan bahasa pemrograman ini sebagai survei arkeologi. Terlebih lagi, sangat sedikit yang dikatakan tentang bahasa ini dalam bahasa Rusia.

Baru pada tahun 1957 (pekerjaan dimulai pada tahun 1954) Fortran muncul, sebuah bahasa yang dianggap sebagian besar sebagai bahasa tingkat tinggi pertama.

"Z4" bersifat elektro-mekanis, jadi tidak ada kompiler atau juru bahasa Plankalkyl, tetapi pada tahun 2000 di Svobodny
Universitas Berlin (Freie Universität Berlin) menciptakan penerjemahnya
dialek (berjalan sebagai applet Java di browser).

Dialek yang diterapkan disebut Plankalkül-2000 dan berbeda dari aslinya dengan berbagai penyederhanaan.
Misalnya, bentuk notasi disederhanakan; Zuse menggunakan notasi dua dimensi -
Baris pertama berisi ekspresi itu sendiri, dan di bawah beberapa argumennya (tipe variabel, indeks, dan sebagainya). Selain itu, ikon operasinya sendiri telah disederhanakan,
dibawa ke bentuk yang lebih akrab bagi Anda dan saya.

Bahasanya cukup kaya menurut saya untuk tahun empat puluhan: ada konstruksi kondisional, dua jenis loop (analog dengan while dan for), ada array dan tupel,
Anda dapat mendeskripsikan dan memanggil subrutin (tetapi tidak ada rekursi).

Semua variabel dibagi menjadi empat jenis.

  • "Variabel" ( DI DALAM variabel masukan) adalah variabel masukan subrutin, hanya baca, dimulai dengan huruf “V” dan angka.
  • "Zwischenwert" ( Z nilai antara), dapat dibaca dan ditulis, dirancang untuk menyimpan nilai terhitung antara, dimulai dengan “Z” dan angka.
  • "Hasilnya" ( R result) - variabel ini mengembalikan hasil perhitungan, dimulai dengan “R” dan angka.
  • "India" ( DAN indeks) - variabel loop (analog dengan for), dimulai dengan "i", lalu mungkin ada angka, nomor tersebut diperlukan untuk mengatur loop bersarang.
Ada tiga jenis variabel yang tersedia. Terlepas dari kenyataan bahwa "Z4" dapat beroperasi dengan angka floating point, penerjemah tidak dapat melakukan hal ini.
  • Untuk bilangan bulat non-negatif, dimensinya ditunjukkan dalam bit. Ada dua bentuk penulisan “0” - satu bit, “n.0” - “n” bit, misalnya 8.0 - satu byte (8 bit).
  • Tupel ditunjukkan dalam tanda kurung, misalnya (3.0, 4.0) - ini adalah dua variabel tiga dan empat bit, tupel harus memiliki lebih dari satu elemen.
  • Sebuah array ditulis melalui sebuah titik, misalnya: 4.5.0 - sebuah array yang terdiri dari empat elemen yang masing-masing terdiri dari lima bit, 32.(0, 8.0, 16.0) - 32 tupel, yang masing-masing memiliki tiga variabel: satu bit, delapan dan
    enambelas.
Plankalküll jelas dapat disederhanakan secara signifikan dalam sintaksisnya, tetapi dialek modern hampir persis meniru notasi yang digunakan Zuse. Saya percaya bahwa sintaksis ini lahir karena itu
kebutuhan untuk “men-debug” program di atas kertas. Namun, bahasanya sangat sederhana untuk diatur sehingga saya mempelajarinya sepenuhnya dalam 15 menit dan bahkan menulis beberapa program di dalamnya dalam beberapa versi.

Salah satunya menghitung bilangan Fibonacci yang ditentukan (berurutan):
Fakta P0EvgenyStepanischev (V0[:4.0]) => (R0[:10.0]) (0, 1) => (Z0[:10.0], Z1[:10.0]) W1 (V0[:4.0]) [ i > 0 -> (Z0[:10.0] + Z1[:10.0], Z1[:10.0] - Z0[:10.0]) => (Z1[:10.0], Z0[:10.0]) ] Z1[:10.0] => R0[:10.0] AKHIR
Anda harus meluncurkannya seperti ini: buka halaman dengan penerjemah, salin program saya ke jendela, klik "Kompilasi", yang terpisah
jendela dengan applet Java (memerlukan Java untuk diinstal di komputer), di jendela yang terbuka, gunakan mouse untuk mengetikkan nilai awal V0 sedikit demi sedikit (Anda perlu mengklik lingkaran hijau),
lalu di jendela browser klik “Run”, di garis merah (R0) Anda akan melihat nilai yang dihasilkan.


Subrutin dalam bahasa dimulai dengan simbol "P" dan nomor unik, diikuti dengan nama yang dapat dipanggil, subrutin saya disebut "FaktaEvgenyStepanischev", diakhiri
subrutin dengan kata kunci “END” (tidak ada di Plankalküle asli).

Subrutin menjelaskan nilai yang diterima dan dikembalikan, saya menggunakan satu variabel per input, berukuran 4 bit, dan satu variabel output, berukuran 10. Baris pertama
nilai "nol" dan "satu" ditetapkan ke variabel perantara Z0 dan Z1. Jenis variabel harus ditentukan setiap kali digunakan; variabel tersebut harus dikonversi ke variabel lain
jenisnya tidak mungkin.

Di bawah ini adalah loop “for” (W1), karena saya tidak menunjukkan nomor variabel loop (ditunjukkan dalam tanda kurung siku pertama, yang dihilangkan di sini), variabel loop “i” digunakan, tanpa nomor.
Jumlah pengulangan ditunjukkan dalam tanda kurung bulat, dan isi siklus ditunjukkan dalam tanda kurung siku berikutnya. Detailnya bisa
temukan di deskripsi.

Operasi “panah” („->”) adalah konstruksi bersyarat, bagian di sebelah kanan akan dieksekusi jika ekspresi di sebelah kiri benar. Misalnya, hanya ekspresi paling sederhana yang berfungsi dalam dialek tersebut
Anda dapat menyisipkan loop di sana, tetapi tombol "Jalankan" tidak muncul di applet, jadi saya membatasi diri untuk menetapkannya di dalam loop.

Di sini saya menggunakan tugas yang kompleks, yang diketahui oleh mereka yang menggunakan Pearl, Python atau PHP, tetapi cara kerjanya berbeda - tugas dilakukan
secara berurutan, dari kiri ke kanan, jadi saya tidak bisa membatasi diri pada "(Z0[:10.0] + Z1[:10.0], Z1[:10.0]) => (Z1[:10.0], Z0[:10.0]) ", hasilnya tidak akan seperti yang diharapkan.

Pada akhirnya saya menetapkan nilai perantara ke nilai subrutin yang dihasilkan.

Selain itu, hampir tidak ada apa pun dalam bahasa tersebut. Tidak ada gunanya menjelaskan akses ke elemen array, memanggil fungsi, dan loop "sementara" secara terpisah; mereka terlihat cukup alami dalam kerangka sintaksis ini.
Semua operasi yang didukung oleh bahasa tersebut (ada beberapa di antaranya - operasi logika, operasi bit, dan empat operasi aritmatika) terlihat familier.

Jangan takut penjara, jangan takut dengan scrip,
Jangan takut akan penyakit sampar dan kelaparan,
Dan satu-satunya hal yang perlu Anda takuti adalah
Siapa yang akan berkata: “Saya tahu bagaimana melakukannya!”
(A.Ggalich)

Mari kita perjelas: jawaban yang benar untuk pertanyaan “bahasa pemrograman mana yang harus saya pilih terlebih dahulu?” tidak ada di alam. Bahkan jawaban kelas “satu dari tiga ini.” Itu tidak ada bahkan sekarang, pada saat tertentu ketika saya menulis ini, 10 April 2017, 21:38 waktu Kyiv - tetapi tidak ada gunanya mencoba menjawab pertanyaan ini, melihat sebulan, enam bulan atau setahun ke depan.

Yang ada ada beberapa menanyakan pertanyaan yang tepat pertanyaan yang berguna untuk ditanyakan pada diri sendiri. Ini akan menjadi tugas ujian pertama Anda untuk memasuki profesi ini: apakah Anda ingin menjawab pertanyaan-pertanyaan ini dan secara umum memikirkan dan meneliti bidang studi tersebut sebelum mengambil keputusan?

Jika ya, ikuti saya.

Beberapa peringatan

Pertama, satu bahasa saja tidak cukup. Bahkan di tahun pertama studi. Setidaknya beberapa bahasa "khusus" masih diperlukan (HTML, CSS, SQL, YAML, JSON, XML, Markdown - setidaknya contoh yang berbeda sintaksis, yang hampir pasti harus dibaca, dan kemungkinan besar - ditulis). Tapi tidak hanya itu. Seorang programmer non-JS hampir pasti perlu membaca sedikit JS; Pemrogram JS - periksa implementasi algoritma yang dijelaskan dengan Python; bagi pemrogram sistem untuk menangani kode buruk orang lain dalam bahasa skrip.

Dan dalam perjalanan ke tingkat "menengah", Anda harus menguasai setengah lusinnya. Dan untuk menjadi seorang profesional sejati, Anda perlu memahami paradigma segala jenis sampah yang fantastis.

Kedua, Kecil kemungkinan Anda akan menulis dalam satu bahasa sepanjang hidup Anda. Dan bahkan tidak cukup lama. Mungkin Anda bahkan tidak akan berada di sini selama sebulan. Pada pekerjaan pertama saya di tahun 2003, saya dipekerjakan sebagai ahli algoritma C++, namun saya juga sedikit mendukung situs web dalam PHP, dan juga menambahkan antarmuka ke perpustakaan kami di Excel VBA (bergidik). Dan tidak ada hal normal yang tidak terjadi begitu saja pada junior.

Tapi tidak hanya itu - bahasa "utama" di kantor favorit Anda akan berubah, atau perusahaan lain akan mempekerjakan Anda pada topik favorit Anda, arus udara startup atau budaya perusahaan akan berubah - dan WHAM - Anda tidak lagi ingat struktur dari kantor tersebut. "bahasa pertama" dipilih dengan sangat hati-hati.

Oleh karena itu, secara umum, Anda sebaiknya tidak mempertimbangkan pilihan ini terlalu banyak serius, seperti memilih istri atau rumah (bisa juga diubah - tapi masih sedikit lebih sulit). Memulai, mencoba segalanya dan menemukan strategi Anda adalah strategi yang jauh lebih bermakna daripada menghabiskan beberapa minggu/bulan/tahun menganalisis “dari mana harus memulai.”

Ketiga, dan yang paling penting (dan mengikuti dua yang pertama) - seringkali bukan “Anda yang memilih bahasanya”, tetapi lidah memilihmu. Ada baiknya Anda benar-benar tertarik dengan apa yang Anda lakukan, memilihnya sebagai bagian penting dalam hidup Anda - dan saya berbicara secara khusus kepada orang-orang seperti itu, bukan kepada mereka yang berharap untuk “bekerja paruh waktu di hari Sabtu” (tidak ada yang bisa selamatkan mereka) - jadi, ada baiknya membuat pilihan ini, dan semua saran tentang "apa yang harus dipilih" akan menjadi tidak relevan. Tugas yang menarik atau perusahaan yang menjanjikan akan muncul dengan sendirinya, bahasa yang tidak bisa Anda gunakan untuk membuatnya keren akan hilang dengan sendirinya, tetapi bahasa lain akan berkembang. Pantau terus.

Perhatian, pertanyaan yang tepat!

Namun, untuk memulainya, seorang perempuan/laki-laki memikirkan tentang kehidupan (yaitu, memilih bahasa pemrograman mana yang akan dipelajari untuk memulai), Anda mungkin bertanya pada diri sendiri ini:

Mengapa kamu akan belajar? Sebuah pertanyaan yang sangat penting untuk ditanyakan pada diri sendiri dengan jujur ​​terlebih dahulu. Dapatkan alat tambahan untuk profesi utama Anda (misalnya mikrobiologi atau akuntansi)? Bersenang-senang di waktu luang Anda? Membantu anak di sekolah?.. Baiklah, di mkdev kami secara default berasumsi bahwa Anda akan bekerja sebagai programmer (meskipun kami akan dengan senang hati mengajar ahli mikrobiologi - tahukah Anda bahwa Ruby sangat populer di kalangan mereka?) . Namun: apakah Anda sudah yakin ingin mencari profesi di bidang IT secepat mungkin, atau Anda baru saja memutuskan untuk mencobanya, apakah itu cocok untuk Anda? Dalam kasus kedua, mungkin ada baiknya mencoba selusin bahasa dan pendekatan untuk memahami apa yang Anda suka - atau tidak sama sekali, tidak apa-apa juga!

Pertanyaan terkait: Berapa banyak waktu yang Anda punya? Tanpa tenggat waktu yang jelas “dalam setahun saya seharusnya sudah mendapatkan X dolar” - mungkin masuk akal (dan cukup menyenangkan) untuk segera merencanakan sendiri pendidikan “kelas universitas”: yaitu, membuat daftar beberapa bahasa klasik - Skema, Haskell, Prolog, beberapa yang industri (Java, Ruby, JS), beberapa yang super modis (Rust, Pony, Elixir)... Dan pertanyaan "apa sebenarnya yang harus ditulis" entah bagaimana akan muncul dengan sendirinya . Namun jika Anda menginginkan “profesi yang nyata dan cepat”, maka...

Apakah Anda tahu persis bidang apa yang ingin Anda geluti?“Hanya pengembangan game, tidak ada hal lain yang cocok untukku”, “Kecerdasan buatan adalah apa yang aku impikan sejak sekolah”, “Aku ingin lebih dekat dengan perangkat keras, memprogram semua jenis robot dan sensor”, atau bahkan “Teman-temanku adalah akan memulai startup tentang serial TV.” dengan bigdata" adalah pilihan yang baik untuk menjawab pertanyaan ini. Namun Anda sama sekali tidak wajib memilikinya. “Tolong tunjukkan seluruh rentangnya” juga merupakan jawaban yang bagus. Dan “sementara itu, saya akan mencoba membantu akuntan paman saya di perusahaannya, tetapi mereka menginginkan sesuatu yang lebih menarik” juga merupakan hal yang wajar.

Victor akan membantu Anda mengambil langkah pertama dalam pemrograman, mengajari Anda dasar-dasar dan bahasa Ruby!

Lebih jauh: Apa yang ingin kamu lakukan? Tampaknya pertanyaannya sama seperti di atas? Tapi tidak. Tutup mata Anda dan bayangkan seperti apa alur kerja ideal Anda? Bereksperimenlah dengan antarmuka sehingga pengguna senang, tanpa mengetahui berapa banyak usaha yang telah diinvestasikan? Menemukan algoritme tumbukan partikel baru untuk mesin fisika game dan membutuhkan waktu tiga tahun untuk menyempurnakannya? Cepat menulis banyak kode, menggabungkan selusin komponen yang dikenal ke dalam ide startup baru sebelum ada yang memunculkannya? Berurusan dengan benda asing yang kompleks agar berfungsi di lingkungan baru? - ada banyak sekali pilihan, dan beberapa bahkan menjauh dari profesi "hanya seorang programmer" - ke bidang devops, atau spesialis UI, atau analis data... Luangkan setidaknya 20 menit untuk meditasi ini, hasilnya mungkin Sepenuhnya Tak Terduga.

Misalnya (sehubungan dengan pertanyaan sebelumnya), meskipun Anda yakin ingin berpartisipasi dalam pengembangan game, memahami bahwa Anda ingin men-debug level baru, atau bahwa Anda akan sangat terhibur dengan mengerjakan algoritme tabrakan yang akurat secara fisik, atau - membuat server game yang dapat menahan ratusan juta koneksi - ini masih merupakan arah pembelajaran dan pengembangan diri yang sangat berbeda.

Dan hanya setelah menjawab (atau dengan sengaja memutuskan untuk menunda menjawab) semua pertanyaan di atas, masuk akal untuk mengajukan pertanyaan pragmatis: Bahasa apa yang saat ini aktif digunakan?- di bidang, topik, dan lingkungan yang Anda minati. Dan pilih tiga (itu benar!) untuk dikuasai dalam waktu dekat.

Apa sebenarnya yang harus dipilih - Anda harus langsung mengetahuinya, meskipun di bawah ini kami memberikan ikhtisar singkat beberapa yang populer saat ini bahasa.

Beberapa jawaban

Apakah Anda mendengar suara pelan yang aneh?

Ini adalah “jawaban” yang tercantum di bawah ini yang sudah ketinggalan zaman dan berkarat. Jika Anda membaca artikel ini enam bulan setelah ditulis, kemungkinan besar bagian “jawaban” sudah agak ketinggalan jaman ( Jika beberapa peristiwa bencana tidak terjadi, akibatnya segala sesuatu menjadi usang); Anda membacanya setahun kemudian - itu sudah ketinggalan jaman. Anda membacanya 5 tahun kemudian - ... tapi iblis tahu. Di bidang kami, segala sesuatunya berubah setiap hari, namun sering kali tetap stabil dalam jangka panjang.

Secara umum, sudah jelas - bacalah dengan cermat.

Di bawah ini adalah informasi subjektif, singkat dan tidak lengkap tentang 15 bahasa pemrograman teratas imajiner saat ini (dalam urutan abjad).

Penulis menetapkan nomor tertentu untuk masing-masingnya: ini adalah jumlah lowongan di situs web utama Ukraina untuk pengembang dou.ua, yang setidaknya bahasanya disebutkan. Angka-angka ini sendiri tidak berarti apa-apa, namun memungkinkan dilakukannya analisis komparatif yang tidak lengkap, dengan menggunakan contoh salah satu negara pasca-Soviet/Eropa, dan penarikan kesimpulan komparatif yang sangat tidak akurat.

Harap diperhatikan: inti dari angka-angka ini bukanlah “Anda harus memilih angka yang angkanya lebih besar”! Intinya adalah bahwa untuk bahasa-bahasa ini, jumlahnya tidak sama dengan nol - di negara yang tidak terlalu besar dan, sejujurnya, tidak terlalu makmur. Artinya, Anda dapat menemukan pekerjaan dalam bahasa yang tertulis 5 di sana - tetapi untuk ini Anda harus benar-benar menyukainya, dan jika tujuannya hanya "memprogram sesuatu dengan jumlah uang yang layak" - maka, tentu saja, Anda harus memilih di mana angkanya lebih tinggi, mereka akan mempekerjakan siapa saja yang menginginkannya, rupanya.

    C(100?- tampaknya mesin pencari tidak dapat mengatasinya) - satu-satunya kakek pemrograman yang masih hidup, dan terlebih lagi, yang paling hidup dari semua yang hidup. Segala sistem (dengan amandemen pada Rust and Go, yang akan dibahas di bawah), pemrograman semua jenis mikrokontroler dan perangkat tertanam, semua jenis driver untuk drone dan hal-hal menakjubkan lainnya masih C. Ini juga merupakan bahasa "dasar" untuk penggabungan atau mempercepat bahasa dan perpustakaan lain (semacam omong kosong ilmiah, yang, katakanlah, awalnya ditulis dengan Python, kemudian ditulis ulang dalam C untuk kecepatan, kemudian pembungkus untuk implementasi C ini muncul di Ruby, Julia dan Haskell... begitulah cara kami hidup). Singkatnya, kecil kemungkinannya Pertama bahasa, tetapi wajib untuk dipelajari - tentu saja. Selain itu, standar ini tidak berhenti sama sekali, dan standar baru ini cukup segar dan bagus;

    C++ (144)- keponakan C yang jelek (menurut beberapa orang) atau sangat rumit (menurut orang lain). Berorientasi objek, dapat diprogram meta, sangat rumit, lambat untuk dikompilasi... singkatnya, C++ adalah cinta pertama saya di antara bahasa pemrograman . Sekarang digunakan, sejauh yang dapat dinilai, untuk mengembangkan game, beberapa sistem desktop, dan sedikit di mana pun C memungkinkan, tetapi kode yang lebih kompleks diperlukan (karena kompiler gcc tersedia di hampir semua OS, dan mengkompilasi keduanya );

    C# (414)- salah satu dari sedikit bahasa di mana pemrogram telah menjual jiwanya kepada iblis dan hampir terikat erat dengan ekosistem Microsoft (yang, sejujurnya - terutama bagi pengembang - berkembang cukup mengesankan). Area aplikasi - permainan, atau perangkat lunak Perusahaan Mahal yang Kompleks. Bahasanya sendiri, saat ini, cukup indah dan progresif. Dan, secara umum, seperti hampir semua bahasa tujuan umum yang tidak baru dan pragmatis, ia memiliki sedikit fungsi, banyak OO, beberapa metaprogramming, dll.;

    Klojure (6)- bahasa pemrograman unicorn yang ajaib, berjalan di JVM (baca tentang Java di bawah), penerus Lisp, bahasa fungsional. Dialek ClojureScript-nya dikompilasi ke JS (baca juga di bawah mengapa ini penting). Digunakan dalam startup “pintar” dan dalam produksi Perusahaan Sangat Serius. Anda hanya dapat memilih berdasarkan Big Love (tapi dia keren);

    Erlang+Ramuan (5+10)- Erlang adalah bahasa dan platform yang sangat populer untuk membuat aplikasi telekomunikasi (sebelumnya) dan umumnya terdistribusi dengan beban tinggi (sekarang). Elixir adalah bahasa yang berjalan pada platform yang sama, tetapi tidak asing lagi dibandingkan Erlang (namun, bahasa “utama” platform tersebut masih harus dipahami setidaknya sedikit, lihat pembahasan tentang Java di bawah). Saat ini, semua ini sedikit berbau “elitisme”, namun sudah mengakar kuat di beberapa bidang (misalnya, dalam sistem perbankan) - dan sangat menarik;

    ES (JavaScript, CoffeeScript, TypeScript, dll.) (788+10+64+...)- favorit yang jelas saat ini, ES/JS/... pada dasarnya bukanlah sebuah bahasa, tetapi sebuah rumpun bahasa. Antarmuka web dan antarmuka seluler ditulis di dalamnya (dalam beberapa cara berbeda), dan juga (dalam beberapa cara lain) perangkat lunak server dan admin, dan iblis itu botak. Apa sebenarnya yang disebut “bahasa JavaScript” saat ini cukup sulit untuk ditentukan: setelah mendapatkan pekerjaan sebagai “pemrogram JavaScript”, tergantung pada keberuntungan Anda, Anda mungkin menjadi orang yang memelihara antarmuka kuno sistem perbankan, yang, omong-omong, seharusnya berfungsi di browser apa pun; atau bagian dari tim modis yang menulis visualisasi kompleks data ilmiah dalam TypeScript yang diketik dengan kuat; atau tiba-tiba mengambil bagian dalam pengembangan antarmuka masa depan pada versi bahasa "berikutnya", yang dikompilasi secara rumit menjadi sesuatu yang berjalan pada Nokia lama... seluruh dunia yang tidak dapat dijelaskan dalam satu gugus kalimat. Namun mencari “bahasa pertama Anda” di bidang ini cukup berbahaya;

Ada juga pendapat ketiga dan cerita tentang dasar pemilihan bahasa pemrograman dalam pengembangan nyata

    Pergi (78)- bahasa yang sederhana dan efisien yang dibuat oleh Google, terutama untuk kasus "membuat kode yang cepat, bodoh, dan andal". Pelarian pemikiran dalam dirinya langsung terputus oleh kekasaran bahasanya. Tapi ini efektif - saya tidak bisa menjelaskan caranya;

    Jawa (466)- kasus khusus. Java adalah bahasa dan platform (JVM) - dan platform ini menjalankan, misalnya, Clojure yang lucu dan keren, Scala yang sulit dipahami secara ilmiah, dan JRuby (Ruby yang sama, tetapi untuk JVM). Dan Java sendiri saat ini sama sekali bukan “bahasa terbatas untuk budak korporat” seperti yang pernah dikenal. Mengingat banyaknya perpustakaan yang kuat, pilihan bahasa yang berjalan pada platform ini dan keserbagunaannya, setiap programmer yang menghargai diri sendiri harus memiliki gagasan tentang Java. Dan Java adalah satu-satunya (dengan beberapa syarat) bahasa pengembangan untuk Android;

    PHP (431)- penghuni web lama dengan reputasi buruk. Dalam versi modern, ia telah menghilangkan sebagian besar warisan yang mengerikan, dan secara umum ini adalah bahasa OO modern yang cukup baik. Namun menurut ingatan lama, ini merupakan bagian yang sangat penting dari infrastruktur Internet. Setelah menyewa seorang spesialis PHP, kemungkinan besar Anda juga akan mendapatkan proyek yang rapi dengan Arsitektur dan Tes - atau Anda dapat mendukung sistem prasejarah yang gila dengan if/else yang tidak terstruktur untuk 2000 baris;

    ular piton (303)- pernah menjadi “pesaing” Ruby sebagai bahasa yang modis untuk web dan startup, sekarang bahasa tersebut terutama digunakan untuk mendukung aplikasi web yang kompleks dan dewasa yang tumbuh di dalamnya - dan lebih banyak lagi untuk penelitian ilmiah / data besar, bahkan di beberapa tempat membayangi R (lihat di bawah );

    R (16)- bahasa tujuan umum, tetapi hanya digunakan oleh ilmuwan/bigdata. Sintaksnya sangat buruk (karena sudah lama), tetapi ada banyak paket keren untuk itu, dan penelitian telah ditulis tentangnya. Ternyata, bahasa terbaik di dunia adalah untuk memuaskan rasa ingin tahu;

    Rubi (124)- beberapa tahun yang lalu “modis” dan “hipster”, sekarang ini hanyalah salah satu bahasa umum. Sangat ekspresif dan singkat, sedikit “ajaib”, agak lambat. Terutama digunakan untuk pengembangan web. Saat ini bahasa ini mudah disukai atau dibenci pada pandangan pertama, dan tidak merepotkan untuk mencari pekerjaan. Ruby juga disukai saat ini oleh admin dan penguji; Ruby memiliki alat keren untuk keduanya;

    Karat (3)- salah satu pemain yang cukup baru. Cepat dan menantang. Ia menjanjikan untuk menggantikan C dalam bidang pemrograman sistem, namun untuk saat ini, tampaknya lebih masuk akal untuk mempelajarinya “untuk masa depan”;

    skala (60)- "adik yang cerdas" pada platform Java: modern, kompleks, fungsional, sangat disukai oleh semua analisis bisnis dan karenanya dengan cepat mendapatkan popularitas;

    Cepat / Objective-C (58+15)- satu-satunya pilihan untuk pengembangan iOS. Tentu saja, Anda harus fokus hanya pada Swift (Objective-C sudah hanya untuk mendukung aplikasi lama) - dan, secara umum, ini tidak luar biasa baik untuk fitur khusus atau omong kosong khusus apa pun, bahasa modern yang layak sebanding dengan C# dan Jawa. Ini hanya dapat direkomendasikan sebagai yang pertama bagi mereka yang telah memutuskan untuk secara tegas bergabung dengan Apple, karena penerapannya (sengaja) terbatas.

Entah bagaimana, secara umum seperti ini.

Ada beberapa hal yang tidak termasuk dalam daftar ini - misalnya, Perl, yang cukup diminati oleh pengembang, tetapi bahasanya sendiri berada dalam kondisi yang aneh dan saya tidak bisa merekomendasikannya sebagai bahasa "pertama". Atau, misalnya, Lua juga populer, namun sebagai bahasa skrip kecil untuk sistem lain (terutama game), menjadi “hanya seorang programmer Lua” sepertinya tidak ada gunanya.

Eh, aku mengerti semuanya. Apa yang harus dipilih?..

Ya itu. Ambil semua. (tersenyum)

Tidak benar-benar. Faktanya, strategi yang masuk akal (jika, tentu saja, Anda akan menghabiskan sebagian besar waktu Anda dalam profesi kami, dan tidak “mendapatkan uang tambahan selama setengah tahun”) adalah mencari tahu apa beberapa bahasa yang Anda minati setidaknya untuk dilihat dalam beberapa bulan ke depan. Anda dapat memilihnya seperti warna dalam instruksi untuk desainer - Anda dapat “dari yang dekat”, Anda dapat “dari yang berlawanan”, Anda dapat “dari yang saling melengkapi”...

Tujuan Anda pada tahap pertama adalah menjadikannya menarik dan mulai sukses. Namun hanya Anda yang dapat membuka jalan menuju tujuan ini, dan kemungkinan besar bukan yang pertama kali. Begitu seterusnya.

Secara singkat...

Di bidang kami, mengajukan pertanyaan selalu lebih penting daripada mengetahui jawaban yang benar. Karena jawabannya berubah. Dan pertanyaan dibutuhkan setiap hari. Tertarik, pelajari sedikit tentang segalanya, lihat lebih dekat dunia.

Selebihnya terjadi dengan sendirinya.

Bahasa pemrograman komputer tingkat tinggi pertama yang diimplementasikan adalah FORTRAN (FORmula TRANslator). Itu dibuat oleh sekelompok programmer IBM Corporation antara tahun 1954 dan 1957. Beberapa tahun setelah pembuatannya, penjualan komersial Fortran dimulai - sebelumnya dilakukan menggunakan kode mesin atau perakit simbolik.

Pertama-tama, Fortran tersebar luas di komunitas ilmiah dan teknik, di mana perhitungan dilakukan terhadapnya.

Salah satu keunggulan utama Fortran saat ini adalah banyaknya program dan perpustakaan rutin yang ditulis di dalamnya. Dalam ribuan paket bahasa ini Anda dapat menemukan paket untuk menyelesaikan persamaan integral kompleks, perkalian matriks, dan sebagainya. Paket-paket ini telah dibuat selama beberapa dekade - tidak kehilangan relevansinya hingga hari ini. Sebagian besar perpustakaan mereka didokumentasikan dengan baik, di-debug dan sangat efisien, tetapi mereka terus-menerus mencoba mengubah kode Fortran mereka secara otomatis menjadi perangkat lunak modern.

Sejarah pengenalan Fortran

Setelah pengembangan bahasa alternatif yang efektif yang disebut Fortran, komunitas komputer merasa skeptis terhadap produk baru tersebut. Hanya sedikit orang yang percaya bahwa dengan bantuan Fortran, pemrograman akan menjadi lebih efisien dan lebih cepat. Namun, seiring berjalannya waktu, para ilmuwan menghargai kemampuan bahasa tersebut dan mulai secara aktif menggunakannya untuk menulis perhitungan perangkat lunak yang intensif. Fortran sangat cocok untuk aplikasi teknis, yang sangat terbantu dengan pengumpulan semua jenis data secara komprehensif.

Fortran modern telah dilengkapi dengan kemampuan yang memungkinkan penggunaan teknologi perangkat lunak baru dan arsitektur komputasi program secara efektif.

Setelah kesuksesan Fortran yang menakjubkan, perusahaan-perusahaan Eropa mulai khawatir bahwa IBM akan mulai memimpin industri komputer. Komunitas Amerika dan Jerman membentuk komite mereka sendiri untuk mengembangkan bahasa pemrograman universal, namun kemudian mereka bergabung menjadi satu komite. Spesialisnya mengembangkan bahasa baru dan menyebutnya Bahasa Algoritma Internasional (IAL), namun karena Bahasa ALGOritmik dengan cepat menjadi nama yang umum digunakan untuk produk baru tersebut, panitia harus mengubah nama resmi IAL menjadi ALGOL.