Sejarah singkat bahasa pemrograman. Sejarah penciptaan bahasa pemrograman Bahasa pemrograman pertama




Salah satu ide paling revolusioner yang mengarah pada penciptaan komputer digital otomatis adalah ide yang diungkapkan pada tahun 20-an abad ke-19 oleh Charles Babyge tentang pra-pencatatan urutan mesin untuk penerapan perhitungan otomatis berikutnya - sebuah program. Dan, meskipun rekaman program pada kartu berlubang yang digunakan oleh Bebidge, ditemukan oleh penemu Prancis Joseph Marie Jacquard untuk mengendalikan mesin semacam itu, secara teknis tidak ada hubungannya dengan metode modern untuk menyimpan program di PC, prinsipnya di sini pada dasarnya sama. . Mulai saat ini dimulailah sejarah pemrograman.
Ada Levlace, seorang kontemporer dari Bebidzh, disebut sebagai programmer pertama di dunia. Dia secara teoritis mengembangkan beberapa teknik untuk mengontrol urutan perhitungan yang digunakan dalam pemrograman saat ini. Dia juga menjelaskan salah satu konstruksi terpenting dari hampir semua bahasa pemrograman modern - sebuah siklus.

Momen revolusioner dalam sejarah bahasa pemrograman adalah munculnya sistem penyandian instruksi mesin menggunakan karakter khusus, yang diusulkan oleh John Mauchly. Sistem pengkodean yang dia usulkan menginspirasi salah satu karyawannya, Grace Murray Hopper. Saat mengerjakan komputer Mark-1, dia dan kelompoknya harus menghadapi banyak masalah, dan semua yang mereka hasilkan adalah yang pertama. Secara khusus, mereka datang dengan subrutin. Dan konsep fundamental lain dari teknik pemrograman pertama kali diperkenalkan oleh Hopper dan grupnya - "debugging".
Di akhir tahun 40-an, J. Mauchly membuat sistem yang disebut "Kode Pendek", yang merupakan bahasa pemrograman tingkat tinggi yang primitif. Di dalamnya, pemrogram menuliskan masalah yang akan dipecahkan dalam bentuk rumus matematika, kemudian dengan menggunakan tabel khusus, menerjemahkan karakter demi karakter, mengubah rumus tersebut menjadi kode dua huruf. Selanjutnya, program komputer khusus mengubah kode-kode ini menjadi kode mesin biner. Sistem yang dikembangkan oleh J. Mouchli dianggap sebagai salah satu penafsir primitif pertama.

Sudah pada tahun 1951, Hopper menciptakan kompiler pertama di dunia dan memperkenalkan istilah itu sendiri. Kompiler Hopper melakukan fungsi menggabungkan perintah dan, selama terjemahan, mengatur subrutin, mengalokasikan memori komputer, dan mengubah perintah tingkat tinggi (pseudocodes pada waktu itu) menjadi perintah mesin. “Subrutin ada di perpustakaan (komputer), dan ketika Anda memilih materi dari perpustakaan, ini disebut kompilasi” - begitulah cara dia menjelaskan asal usul istilah yang dia perkenalkan.

Pada tahun 1954, kelompok yang dipimpin oleh G. Hopper mengembangkan sistem yang mencakup bahasa pemrograman dan kompiler, yang kemudian disebut Math-Matic. Dengan penyelesaian Math-Matic yang berhasil, Hopper dan kelompoknya mulai mengembangkan bahasa dan kompiler baru yang memungkinkan pengguna memprogram dalam bahasa yang mendekati bahasa Inggris biasa. Pada tahun 1958, kompiler Flow-Matic muncul. Kompiler Flow-Matic adalah bahasa pertama untuk tugas pemrosesan data komersial.
Perkembangan ke arah ini mengarah pada penciptaan bahasa COBOL (COBOL - Bahasa Berorientasi Bisnis Umum). Itu dibuat pada tahun 1960. Dalam bahasa ini, dibandingkan dengan Fortran dan Algol, alat matematika kurang berkembang, tetapi alat pengolah teks berkembang dengan baik, mengatur keluaran data dalam bentuk dokumen yang diperlukan. Itu dipahami sebagai bahasa utama untuk pemrosesan data massal di bidang manajemen dan bisnis.

Pertengahan 1950-an ditandai dengan kemajuan pesat di bidang pemrograman. Peran pemrograman dalam instruksi mesin mulai berkurang. Jenis bahasa pemrograman baru mulai muncul, bertindak sebagai perantara antara mesin dan pemrogram. Yang pertama dan salah satu yang paling umum adalah Fortran (FORTRAN, dari FORmula TRANslator - penerjemah rumus), yang dikembangkan oleh sekelompok pemrogram IBM pada tahun 1954 (versi pertama). Bahasa ini difokuskan pada perhitungan ilmiah dan teknis yang bersifat matematis dan merupakan bahasa pemrograman klasik untuk memecahkan masalah matematika dan teknik pada PC.
Untuk bahasa pemrograman tingkat tinggi pertama, orientasi subjek bahasa adalah ciri khasnya.
Algol menempati tempat khusus di antara bahasa pemrograman, versi pertama muncul pada tahun 1958. Salah satu pengembang Algol adalah "ayah" dari Fortran, John Backus. Nama bahasa ALGOrithmic Language menekankan fakta bahwa itu dimaksudkan untuk menulis algoritma. Karena struktur logisnya yang jelas, Algol telah menjadi sarana standar untuk menulis algoritme dalam literatur ilmiah dan teknis.

Pada pertengahan 1960-an, Thomas Kurtz dan John Kameny (dari Departemen Matematika di Dartmouth College) menciptakan bahasa pemrograman khusus yang terdiri dari kata-kata bahasa Inggris sederhana. Bahasa baru ini disebut Kode Instruksi Simbolik Serba Guna Pemula, atau disingkat BASIC. Tahun kelahiran bahasa baru dapat dianggap tahun 1964. Saat ini, bahasa universal BASIC (memiliki banyak versi) telah mendapatkan popularitas besar dan banyak digunakan di kalangan pengguna PC dari berbagai kategori di seluruh dunia. Sebagian besar, ini difasilitasi oleh fakta bahwa BASIC mulai digunakan sebagai bahasa bawaan komputer pribadi, yang penyebarannya luas dimulai pada akhir tahun 70-an. Namun, BASIC adalah bahasa non-struktural dan karena itu tidak cocok untuk pengajaran pemrograman berkualitas. Demi keadilan, perlu dicatat bahwa versi terbaru BASIC untuk PC (misalnya, QBasic) telah menjadi lebih struktural dan, dalam hal kemampuan visualnya, mendekati bahasa seperti Pascal.

Bahasa berorientasi pengembang ke kelas tugas yang berbeda, sampai batas tertentu mengikatnya ke arsitektur PC tertentu, menerapkan selera dan ide pribadi. Pada 1960-an, upaya dilakukan untuk mengatasi "keragaman" ini dengan menciptakan bahasa pemrograman universal. Gagasan pertama dari arah ini adalah PL / 1 (Programm Language One), yang dikembangkan oleh IBM pada tahun 1967. Bahasa ini mengklaim kemampuan untuk memecahkan masalah apa pun: komputasi, pengolah kata, akumulasi, dan pencarian informasi. Namun ternyata terlalu rumit, penerjemah darinya kurang optimal dan terdapat sejumlah kesalahan yang tidak terdeteksi.
Namun, garis universalisasi bahasa didukung. Bahasa lama dimodernisasi menjadi varian universal: Algol-68 (1968), Fortran-77. Diasumsikan bahwa bahasa seperti itu akan berkembang dan meningkat, dan akan menggantikan yang lainnya. Namun, tidak satu pun dari upaya ini yang berhasil.

Bahasa LISP muncul pada tahun 1965. Ini didasarkan pada gagasan fungsi yang didefinisikan secara rekursif. Karena terbukti bahwa setiap algoritma dapat dideskripsikan menggunakan beberapa rangkaian fungsi rekursif, maka LISP pada dasarnya adalah bahasa universal. Dengan bantuannya, PC dapat mensimulasikan proses yang cukup kompleks, khususnya aktivitas intelektual manusia.
Prolog dikembangkan di Prancis pada tahun 1972 untuk memecahkan masalah "kecerdasan buatan". Prolog memungkinkan Anda untuk mendeskripsikan secara formal berbagai pernyataan, logika penalaran, dan membuat PC memberikan jawaban atas pertanyaan yang diajukan.
Peristiwa penting dalam sejarah bahasa pemrograman adalah penciptaan bahasa Pascal pada tahun 1971. Penulisnya adalah ilmuwan Swiss Niklaus Wirth. Wirth menamainya setelah ahli matematika dan filsuf agama Prancis abad ke-17 Blaise Pascal, yang menemukan perangkat penjumlahan pertama, itulah sebabnya bahasa baru diberi namanya. Bahasa ini awalnya dikembangkan sebagai bahasa pendidikan untuk pemrograman terstruktur, dan memang sekarang menjadi salah satu bahasa utama untuk pengajaran pemrograman di sekolah dan universitas.

Pada tahun 1975, dua peristiwa menjadi tonggak dalam sejarah pemrograman - Bill Gates dan Paul Allen mengumumkan diri mereka dengan mengembangkan versi BASIC mereka, dan Wirth dan Jensen merilis deskripsi klasik bahasa "Manual dan Laporan Pengguna Pascal".

Tak kalah mengesankan, termasuk finansial, kesuksesan diraih oleh Philip Kahn, orang Prancis yang mengembangkan sistem Turbo-Pascal pada tahun 1983. Inti dari idenya adalah menggabungkan tahapan pemrosesan program yang berurutan - kompilasi, pengeditan tautan, debugging, dan kesalahan diagnosis - dalam satu antarmuka. Turbo Pascal bukan hanya bahasa dan penerjemah darinya, tetapi juga cangkang operasi yang memungkinkan pengguna bekerja dengan nyaman di Pascal. Bahasa ini telah melampaui tujuan pendidikan dan telah menjadi bahasa pemrograman profesional dengan kemampuan universal. Karena keunggulan ini, Pascal telah menjadi sumber dari banyak bahasa pemrograman modern. Sejak saat itu, muncul beberapa versi Turbo Pascal, yang terbaru adalah yang ketujuh.
Borland/Inprise telah menyelesaikan lini produk Turbo-Pascal dan beralih ke peluncuran sistem pengembangan visual untuk Windows - Delphi.

Jejak besar pada pemrograman modern ditinggalkan oleh bahasa C (versi pertama - 1972), yang sangat populer di kalangan pengembang sistem perangkat lunak (termasuk sistem operasi). Bahasa ini dibuat sebagai bahasa alat untuk mengembangkan sistem operasi, penerjemah, basis data, dan program sistem dan aplikasi lainnya. C menggabungkan kedua fitur bahasa tingkat tinggi dan bahasa berorientasi mesin, yang memungkinkan pemrogram mengakses semua sumber daya mesin dengan cara yang tidak disediakan oleh bahasa seperti BASIC dan Pascal.
Periode dari akhir 1960-an hingga awal 1980-an ditandai dengan pesatnya pertumbuhan jumlah bahasa pemrograman berbeda yang menyertai krisis perangkat lunak. Pada Januari 1975, Pentagon memutuskan untuk menertibkan kekacauan para penerjemah dan membentuk sebuah komite yang bertugas mengembangkan satu bahasa universal. Pada Mei 1979, pemenangnya diumumkan - sekelompok ilmuwan yang dipimpin oleh Jean Ihbia. Lidah pemenang diberi nama Ada, setelah Augusta Ada Levlace. Bahasa ini ditujukan untuk pembuatan dan pemeliharaan jangka panjang (bertahun-tahun) sistem perangkat lunak besar, memungkinkan kemungkinan pemrosesan paralel, kontrol proses waktu nyata.

Selama bertahun-tahun, perangkat lunak telah dibangun berdasarkan bahasa operasional dan prosedural seperti Fortran, BASIC, Pascal, Ada, C. Seiring perkembangan bahasa pemrograman, pendekatan lain yang berbeda secara fundamental untuk membuat program telah tersebar luas.
Ada sejumlah besar klasifikasi bahasa pemrograman menurut berbagai kriteria. Yang paling umum adalah klasifikasi berikut:
 bahasa pemrograman tingkat tinggi (Pascal, BASIC) dan tingkat rendah (Assembler);
 diketik kuat (Pascal) dan diketik longgar (Basic);
 dengan dan tanpa dukungan untuk pemrograman berorientasi objek (C++), dll.

Mari pertimbangkan klasifikasi lain. Bahasa pemrograman dibagi menjadi:
1) Bahasa berorientasi mesin:
- bahasa mesin;
 bahasa pengkodean simbolik;
- kode otomatis;
- makro.
2) Bahasa independen mesin:
 bahasa berorientasi masalah;
- bahasa universal;
- bahasa dialog;
bahasa non-prosedur.

Bahasa berorientasi mesin

Bahasa berorientasi mesin adalah bahasa yang kumpulan operator dan alat visualnya sangat bergantung pada fitur PC (bahasa internal, struktur memori, dll.). Bahasa berorientasi mesin memiliki beberapa fitur berikut:
 kualitas tinggi dari program yang dibuat (kekompakan dan kecepatan eksekusi);
 kemungkinan menggunakan sumber daya perangkat keras tertentu;
 prediktabilitas kode objek dan urutan memori;
 untuk mengkompilasi program yang efektif, perlu mengetahui sistem perintah dan fitur fungsi PC ini;
 kerumitan proses pemrograman (terutama dalam bahasa mesin dan CJS), kurang terlindung dari munculnya kesalahan;
 kecepatan pemrograman rendah;
 ketidakmungkinan penggunaan langsung program yang dikompilasi dalam bahasa ini di komputer jenis lain.
Bahasa berorientasi mesin dibagi menjadi beberapa kelas sesuai dengan tingkat pemrograman otomatis.

Bahasa mesin

Komputer terpisah memiliki bahasa mesin spesifiknya sendiri (selanjutnya disebut ML), itu ditentukan untuk melakukan operasi tertentu pada operan yang mereka tentukan, oleh karena itu ML adalah perintah. Perintah memberikan informasi tentang lokasi operan dan jenis operasi yang dilakukan.
Dalam model PC baru, ada kecenderungan untuk meningkatkan bahasa internal dengan cara mesin-perangkat keras untuk mengimplementasikan perintah yang lebih kompleks yang lebih dekat dalam tindakan fungsionalnya dengan operator bahasa pemrograman algoritmik.

Bahasa Pengodean Simbolik

Bahasa Pengkodean Simbolik (selanjutnya disebut sebagai CL), serta CL, adalah bahasa perintah. Namun, kode operasi dan alamat dalam instruksi mesin, yang merupakan urutan digit biner (dalam kode internal) atau oktal (sering digunakan saat menulis program), diganti di YaSK dengan simbol (pengidentifikasi), bentuk penulisan yang membantu pemrogram untuk lebih mudah menghafal konten semantik operasi. Ini memberikan pengurangan yang signifikan dalam jumlah kesalahan dalam pemrograman.
Penggunaan alamat simbolis adalah langkah pertama menuju pembuatan JSK. Perintah PC berisi alamat simbolis, bukan alamat sebenarnya (fisik). Menurut hasil program yang dikompilasi, jumlah sel yang diperlukan untuk menyimpan nilai antara awal dan nilai yang dihasilkan ditentukan. Penetapan alamat, yang dilakukan secara terpisah dari pemrograman di alamat simbolis, dapat dilakukan oleh pemrogram yang kurang ahli atau program khusus, yang sangat memudahkan pekerjaan pemrogram.

Kode otomatis

Ada bahasa yang mencakup semua fitur CJS, melalui pengenalan makro yang diperpanjang - mereka disebut kode otomatis.

Di berbagai program, ada beberapa urutan perintah yang cukup umum digunakan yang sesuai dengan prosedur konversi informasi tertentu. Implementasi yang efektif dari prosedur tersebut dipastikan dengan desainnya dalam bentuk makro khusus dan penyertaan yang terakhir dalam bahasa pemrograman yang tersedia untuk pemrogram. Instruksi makro diterjemahkan ke dalam instruksi mesin dalam dua cara - penempatan dan pembangkitan. Sistem pementasan berisi "kerangka" - serangkaian perintah yang mengimplementasikan fungsi yang diperlukan, ditunjukkan dengan perintah makro. Makro menyediakan transfer parameter aktual, yang dimasukkan ke dalam "kerangka" program selama proses penerjemahan, mengubahnya menjadi program mesin nyata.
Dalam sistem dengan pembangkitan, ada program khusus yang menganalisis instruksi makro, yang menentukan fungsi mana yang harus dilakukan dan membentuk urutan perintah yang diperlukan untuk mengimplementasikan fungsi ini.
Kedua sistem ini menggunakan penerjemah dengan CJS dan sekumpulan makro, yang juga merupakan operator kode otomatis.
Kode otomatis yang dikembangkan disebut assembler. Program layanan, dll., Biasanya, dikompilasi dalam bahasa seperti assembler.

Makro

Bahasa yang merupakan sarana untuk mengganti urutan karakter yang menggambarkan kinerja tindakan yang diperlukan komputer dengan bentuk yang lebih ringkas disebut makro (alat pengganti).
Pada dasarnya, makro dimaksudkan untuk mempersingkat masuknya program sumber. Komponen perangkat lunak yang membuat makro berfungsi disebut prosesor makro. Prosesor makro menerima definisi makro dan teks sumber. Reaksi makroprosesor terhadap panggilan tersebut adalah keluarnya teks keluaran.
Makro dapat bekerja sama dengan program dan data.

Bahasa independen mesin

Bahasa yang tidak bergantung pada mesin adalah sarana untuk mendeskripsikan algoritme untuk memecahkan masalah dan informasi yang akan diproses. Mereka mudah digunakan untuk berbagai pengguna dan tidak mengharuskan mereka untuk mengetahui fitur organisasi fungsi PC.
Bahasa seperti itu disebut bahasa pemrograman tingkat tinggi. Program yang ditulis dalam bahasa seperti itu adalah urutan pernyataan yang disusun menurut aturan pertimbangan bahasa (tugas, segmen, blok, dll.). Operator bahasa menjelaskan tindakan yang harus dilakukan sistem setelah menerjemahkan program ke dalam ML.
Dengan demikian, urutan perintah (prosedur, subrutin), sering digunakan dalam program mesin, direpresentasikan dalam bahasa tingkat tinggi oleh operator terpisah. Pemrogram mendapat kesempatan untuk tidak menjelaskan secara detail proses komputasi pada level instruksi mesin, tetapi untuk fokus pada fitur utama algoritme.

Bahasa khusus domain

Dengan perluasan bidang penerapan teknologi komputer, menjadi perlu untuk memformalkan representasi perumusan dan solusi kelas masalah baru. Penting untuk membuat bahasa pemrograman sedemikian rupa sehingga, dengan menggunakan notasi dan terminologi di bidang ini, akan memungkinkan untuk menjelaskan algoritme solusi yang diperlukan untuk kumpulan tugas, mereka menjadi bahasa yang berorientasi masalah. Bahasa-bahasa ini difokuskan untuk memecahkan masalah tertentu, mereka harus menyediakan sarana bagi pemrogram untuk merumuskan masalah secara singkat dan jelas dan mendapatkan hasil dalam bentuk yang diperlukan.
Ada banyak bahasa yang bermasalah, misalnya:
- Fortran, Algol - bahasa yang dibuat untuk memecahkan masalah matematika;
- Simula, Slang - untuk pemodelan;
- Lisp, Snobol - untuk bekerja dengan struktur daftar.

Bahasa universal

Bahasa universal dibuat untuk berbagai tugas: komersial, ilmiah, pemodelan, dll. Bahasa universal pertama dikembangkan oleh IBM, yang menjadi urutan bahasa PL / 1. Bahasa universal terkuat kedua disebut Algol-68.

Bahasa dialog

Munculnya kemampuan teknis baru menetapkan tugas bagi pemrogram sistem - untuk membuat alat perangkat lunak yang memastikan interaksi operasional seseorang dengan PC; mereka disebut bahasa dialog.
Pekerjaan ini dilakukan dalam dua arah. Bahasa kontrol khusus dibuat untuk memberikan dampak operasional pada bagian tugas yang disusun dalam bahasa yang belum dikembangkan sebelumnya (non-dialog). Bahasa juga dikembangkan yang, selain tujuan kontrol, akan memberikan deskripsi algoritme untuk memecahkan masalah.
Kebutuhan untuk memastikan interaksi yang cepat dengan pengguna mengharuskan salinan program asli disimpan dalam memori komputer bahkan setelah menerima program objek dalam kode mesin. Saat membuat perubahan pada program menggunakan bahasa dialog, sistem pemrograman, menggunakan tabel khusus, menetapkan hubungan antara struktur program sumber dan objek. Ini memungkinkan perubahan editorial yang diperlukan untuk dibuat pada program objek.
Salah satu contoh bahasa percakapan adalah BASIC.

Bahasa non-prosedur

Bahasa non-prosedur merupakan sekelompok bahasa yang menggambarkan pengorganisasian data yang diproses menurut algoritme tetap (bahasa tabel dan pembuat laporan) dan bahasa untuk komunikasi dengan sistem operasi.
Dengan memungkinkan Anda untuk menjelaskan dengan jelas tugas dan tindakan yang diperlukan untuk menyelesaikannya, tabel keputusan memungkinkan untuk menentukan secara visual kondisi apa yang harus dipenuhi sebelum melanjutkan ke tindakan apa pun. Satu tabel keputusan yang menjelaskan situasi tertentu berisi semua kemungkinan diagram blok implementasi algoritma keputusan.
Metode tabular mudah dikuasai oleh spesialis dari profesi apa pun. Program yang ditulis dalam bahasa tabel dengan mudah menggambarkan situasi kompleks yang muncul dalam analisis sistem.
Bahasa pemrograman memiliki tujuan yang berbeda, dan pilihannya ditentukan oleh keramahan pengguna, kesesuaian untuk komputer tertentu, dan tugas tertentu. Dan tugas untuk komputer sangat beragam: komputasi, ekonomi, grafik, ahli, dll. Variasi tugas yang diselesaikan oleh komputer menentukan variasi bahasa pemrograman. Dalam pemrograman, hasil terbaik dicapai dengan pendekatan individual berdasarkan kelas tugas, level, dan minat programmer.

Sejarah terciptanya bahasa pemrograman Basic dan Visual Basic

Bahasa pemrograman Dasar diciptakan pada tahun 1964 oleh dua profesor dari Dartmouth College, John Kenemi dan Thomas Kurtz, untuk mengajarkan keterampilan pemrograman kepada siswa. Bahasanya ternyata sangat sederhana dan mudah dipahami sehingga lama kelamaan mulai digunakan di lembaga pendidikan lain. Pada tahun 1975, dengan munculnya mikrokomputer pertama, Bill Gates dan Paul Allen, pendiri Microsoft, mengambil alih tongkat Basic. Merekalah yang membuat versi baru Basic untuk komputer Altair pertama (MITS Altairs), yang mampu berjalan dalam RAM 4KB. Seiring waktu, versi inilah yang berubah menjadi salah satu bahasa pemrograman paling populer di dunia. Dalam perjalanan menuju puncak ketenaran, Basic mengalami banyak kesulitan yang selalu dia atasi dengan hormat, dan ketika komputer pribadi pertama IBM PC muncul, dialah yang menjadi standar dalam pemrograman, tetapi sudah dalam bentuk GW-Basic. Lalu ada Turbo Basic, QuickBasic, Basic PDS, tetapi selalu ketika mengembangkan versi baru bahasa, kompatibilitas dengan versi sebelumnya dipertahankan dan program yang ditulis untuk hampir Basic pertama dapat bekerja dengan baik (dengan perubahan kecil) di versi berikutnya dari ini bahasa. Namun waktu baru telah tiba, dan di awal tahun 90-an, sistem operasi Microsoft Windows muncul dengan antarmuka pengguna grafis (GUI) baru.

Kehidupan programmer telah menjadi neraka. Untuk membuat program sederhana, Anda harus menulis beberapa halaman kode: membuat menu dan jendela, mengubah font, menghapus memori, tombol "menggambar", dll. Namun, keunggulan antarmuka baru ini begitu tak terbantahkan sehingga versi ketiga dari sistem operasi ini telah menjadi standar de facto untuk komputer pribadi. Saat ini, beberapa proyek paralel sedang dilakukan di kedalaman Microsoft untuk membuat bahasa pemrograman baru untuk Windows. Dan pada tahun 1991, di bawah slogan "Sekarang bahkan pemrogram pemula dapat dengan mudah membuat aplikasi untuk Windows", versi pertama dari alat baru Microsoft Visual Basic muncul. Pada saat itu, Microsoft dengan agak rendah hati menilai kemampuan sistem ini, memfokuskannya terutama pada kategori pemrogram pemula dan non-profesional. Tugas utama kemudian adalah membawa ke pasar alat pengembangan yang sederhana dan nyaman di lingkungan Windows yang cukup baru, pemrograman yang menjadi masalah bahkan bagi para profesional berpengalaman. Sistem pemrograman, yang dibuat oleh pengembang Visual Basic, memungkinkan untuk "mundur" dari struktur internal Windows yang paling kompleks dan membuat program dari "kubus", seperti pada perancang anak-anak. Menu, jendela, daftar, tombol, kolom input teks, dan elemen antarmuka Windows lainnya ditambahkan ke program menggunakan operasi seret & lepas yang paling sederhana.

Pemrogram VB membuat program pertama mereka hanya beberapa menit setelah mereka mulai mempelajari bahasa ini! Selain itu, Visual Basic mengizinkan pengembang untuk membuat objek "dadu" baru yang juga dapat digunakan dalam program bersama dengan yang standar. Dan meskipun banyak pemrogram C diam-diam menertawakan upaya Microsoft untuk membuat alat yang sederhana dan mudah dipahami untuk mengembangkan program Windows, Visual Basic memulai pawai kemenangannya di seluruh dunia, dan tidak ada yang dapat menghentikan proses ini. Hambatan terakhir jatuh pada tahun 1994 dengan dirilisnya Visual Basic for Applications. Pada saat itulah, setelah dimasukkannya VBA di Microsoft Office, Basic mulai berubah menjadi salah satu standar pemrograman utama untuk Windows. Untuk Microsoft, bahasa Dasar sangat penting, pada suatu waktu pengembangan versi Dasar untuk komputer Altair 8800 menandai awal jalur pemrogram tenaga kerja pendirinya, Bill Gates dan Paul Allen. Oleh karena itu, pada suatu waktu - pada tahun 1989, ketika tiba waktunya untuk mendistribusikan arahan utama untuk menciptakan lingkungan pengembangan dalam berbagai bahasa pemrograman antara berbagai perusahaan, Microsoft mempertahankan QuickBasic - lingkungan pengembangan program Dasar, menolak, misalnya, pekerjaan lebih lanjut bahasa pemrograman Pascal, menyerahkannya ke Borland, yang, pada gilirannya, berhenti bekerja pada versi Dasarnya (kemudian Pascal menjadi bahasa Delphi).

Awalnya disusun sebagai mainan, Microsoft Visual Basic mengambil alih dunia pemrograman dengan sangat cepat. Popularitasnya disebabkan oleh dua alasan: kesederhanaan relatif dan produktivitas. Program VB lebih lambat daripada program C/C++, tetapi masih cukup cepat untuk banyak tujuan bisnis dan memerlukan waktu pengembangan yang jauh lebih sedikit. Formulir adalah abstraksi penghematan upaya yang sama yang ditawarkan VB kepada pemrogram Windows. VB IDE memungkinkan untuk mendesain jendela secara grafis dengan menyeret kontrol seperti tombol dan kotak daftar dari bilah alat ke formulir. Setelah kami puas dengan tampilan formulir, kami dapat berpindah ke sisi kode dan menulis event handler untuk setiap kontrol formulir.

Mengembangkan aplikasi di VB dengan demikian terdiri dari membuat beberapa formulir yang berkomunikasi satu sama lain dan mungkin mengakses database untuk informasi yang diperlukan. Hasilnya, formulir tersebut ternyata adalah jendela, yang menawarkan penggunaan metode jendela dengan cara yang jauh lebih nyaman. VB telah mengurangi jumlah bug dengan menghapus beberapa sintaks C/C++ yang tersembunyi. Kecuali dalam kasus khusus, ekspresi dibatasi pada satu baris kode, dan variabel harus dideklarasikan dan diinisialisasi pada baris kode yang terpisah. Operator penugasan dan perbandingan menggunakan karakter yang sama, tetapi tata bahasa VB mengharuskan operator ini digunakan sedemikian rupa sehingga maksud mereka ditunjukkan dengan jelas.

Mungkin yang terpenting, tidak ada petunjuk, persyaratan oleh Bill Gates sejak versi pertama Microsoft BASIC. Meskipun pointer berguna karena memungkinkan akses langsung ke memori di alamat mana pun, penggunaannya rentan terhadap kesalahan jika tidak digunakan dengan hati-hati. Persyaratan untuk kesederhanaan tata bahasa BASIC kembali ke fakta bahwa BASIC awalnya dibuat sebagai bahasa untuk belajar: "Kode Instruksional Simbolik Serba Guna Pemula".VB versi 6 sudah menjadi bahasa yang kuat yang dapat Anda gunakan untuk membangun aplikasi terdistribusi menggunakan COM komponen dan Server Transaksi Microsoft Microsoft mengusulkan pendekatan tiga tingkat untuk arsitektur klien-server di mana antarmuka pengguna yang tipis berinteraksi dengan komponen VB jarak jauh untuk mengambil data dari database atau dari mesin lain.

Dengan VBScript dan VBA (VB untuk Aplikasi), Anda dapat membuat skrip untuk browser web dan mengotomatiskan aplikasi Microsoft Office. Selain itu, VB6 dapat digunakan untuk membuat kontrol Active-X yang berfungsi dengan Internet Explorer, meskipun hal ini jarang dilakukan karena memerlukan pustaka runtime VB DLL untuk diinstal pada mesin klien yang berjalan di Internet. Dimulai dengan VB5, program VB dikompilasi ke kode asli, tetapi didasarkan pada penggunaan DLL yang menyediakan fungsi yang umum digunakan dan mengimplementasikan fitur objek VB. Menariknya, kompiler VB menggunakan multipass untuk terjemahan, dan pada akhirnya bergantung pada kompiler Microsoft C++ untuk menghasilkan keluaran asli setelah kompilasi ke bahasa perantara. Di properti VB ini - penggunaan pustaka run-time dan antarmuka internal C++ - kuman .NET terlihat.

Sejarah pembuatan bahasa pemrograman C#

C# lahir pada Juni 2000 sebagai hasil kerja keras tim pengembangan besar Microsoft yang dipimpin oleh Anders Hejlsberg. Pria ini dikenal sebagai penulis salah satu bahasa pemrograman terkompilasi pertama untuk komputer pribadi IBM - Turbo Pascal. Mungkin, di wilayah bekas Uni Soviet, banyak pengembang berpengalaman, dan hanya orang yang mempelajari pemrograman dalam satu atau lain bentuk di universitas, merasakan pesona dan kemudahan penggunaan produk ini. Selain itu, saat berada di Borland Corporation, Anders Hejlsberg menjadi terkenal karena membuat kerangka kerja Delphi (ia memimpin proyek ini hingga rilis versi 4.0).
Munculnya bahasa C# dan inisiatif .NET sama sekali bukan kebetulan pada awal musim panas tahun 2000. Pada saat itulah Microsoft menyiapkan versi industri dari teknologi dan solusi komponen baru di bidang perpesanan dan pertukaran data, serta membuat aplikasi Internet (COM+, ASP+, ADO+, SOAP, Biztalk Framework). Tidak diragukan lagi, cara terbaik untuk mempromosikan produk baru ini adalah dengan membuat perangkat untuk pengembang dengan dukungan penuh mereka. Ini adalah salah satu tugas utama dari bahasa C# yang baru. Selain itu, Microsoft tidak dapat lagi memperluas semua alat dan bahasa pengembangan yang sama, membuatnya semakin sulit untuk memenuhi persyaratan yang saling bertentangan untuk mendukung perangkat keras modern dan memastikan kompatibilitas mundur dengan produk yang dibuat pada awal 1990-an. selama kemunculan pertama Windows. Ada saatnya ketika perlu memulai dari awal untuk membuat sekumpulan bahasa, lingkungan pengembangan, dan alat yang sederhana namun kompleks yang memungkinkan pengembang membuat produk perangkat lunak modern dengan mudah.

C# dan .NET adalah titik awal. Sederhananya, .NET adalah platform baru, API baru untuk pemrograman di Windows, dan C# adalah bahasa baru yang dibangun dari awal untuk bekerja dengan platform ini, dan memanfaatkan sepenuhnya kemajuan lingkungan pengembangan dan pemahaman kita tentang prinsip-prinsip pemrograman berorientasi objek selama 20 tahun terakhir.
Perlu dicatat bahwa kompatibilitas mundur tidak hilang. Program yang ada akan berjalan, dan .NET telah dirancang untuk bekerja dengan perangkat lunak yang ada. Komunikasi antar komponen di Windows kini hampir seluruhnya dilakukan dengan menggunakan COM. Dengan pemikiran ini, .NET memiliki kemampuan untuk (a) membungkus komponen COM yang ada sehingga komponen .NET dapat berbicara dengannya, dan (b) membungkus komponen .NET agar terlihat seperti komponen COM normal. .

Penulis C# berusaha untuk membuat bahasa yang menggabungkan kesederhanaan dan ekspresi bahasa berorientasi objek modern (seperti Java) dengan kekayaan dan kekuatan C++. Menurut Anders Hejlsberg, C# meminjam sebagian besar sintaksnya dari C++. Secara khusus, ini berisi tipe data yang nyaman seperti struktur dan enumerasi (keturunan lain dari C++, Java, tidak memiliki elemen ini, yang menimbulkan ketidaknyamanan tertentu saat memprogram). Konstruksi sintaks C# diwariskan tidak hanya dari C++, tetapi juga dari Visual Basic. Misalnya, C#, seperti Visual Basic, menggunakan properti kelas. Seperti C++, C# memungkinkan Anda membebani operator pada jenis yang Anda buat (Java juga tidak mendukung). C # sebenarnya adalah campuran dari berbagai bahasa. Pada saat yang sama, C# secara sintaksis (jika tidak lebih) bersih dari Java, sesederhana Visual Basic, dan memiliki kekuatan dan fleksibilitas yang hampir sama dengan C++.

Fitur C#:

Kumpulan tipe dasar yang lengkap dan terdefinisi dengan baik.
- Dukungan bawaan untuk pembuatan dokumentasi XML secara otomatis. Pelepasan otomatis dari memori yang dialokasikan secara dinamis.
- Kemampuan untuk menandai kelas dan metode dengan atribut yang ditentukan pengguna. Ini dapat berguna untuk dokumentasi dan dapat memengaruhi proses kompilasi (misalnya, Anda dapat menandai metode yang seharusnya hanya dikompilasi dalam mode debug).
- Akses penuh ke perpustakaan kelas dasar .NET, serta akses mudah ke API Windows (jika benar-benar diperlukan).
- Pointer dan akses memori langsung jika diperlukan. Namun, bahasanya dirancang sedemikian rupa sehingga di hampir semua kasus Anda dapat melakukannya tanpanya.
- Dukungan untuk properti dan acara gaya VB.
- Perubahan kunci kompilasi yang mudah. Memungkinkan Anda mendapatkan file atau pustaka yang dapat dieksekusi dari komponen .NET yang dapat dipanggil oleh kode lain dengan cara yang sama seperti kontrol ActiveX (komponen COM).
- Kemampuan untuk menggunakan C# untuk menulis halaman web ASP.NET dinamis.

Satu area yang tidak dimaksudkan untuk bahasa ini adalah program yang kritis terhadap waktu dan berkinerja tinggi, yang penting apakah perlu 1000 atau 1050 siklus mesin untuk dieksekusi, dan sumber daya harus segera dirilis. C ++ tetap menjadi bahasa tingkat rendah terbaik di bidang ini. C# kekurangan beberapa fitur utama yang diperlukan untuk membangun aplikasi berkinerja tinggi, seperti fungsi inline dan destruktor yang dijamin berjalan di titik tertentu dalam kode. Juga, bahasa ini secara aktif digunakan untuk membuat video game modern, misalnya, game Battlefield 3 sebagian ditulis dalam C #, dan sepenuhnya dalam teknologi .NET.

Jangan takut penjara, jangan takut kantong
Jangan takut wabah penyakit dan kelaparan,
Dan takut satu-satunya hal
Siapa yang akan berkata: "Saya tahu bagaimana melakukannya!"
(A.Galich)

Mari kita luruskan dan singkat: jawaban yang benar untuk pertanyaan "bahasa pemrograman mana yang harus saya pilih pertama kali?" tidak ada di alam. Bahkan jawaban dari kelas "salah satu dari ketiganya". Tidak ada bahkan sekarang, pada saat yang tepat ketika saya menulis ini, 10 April 2017, 21:38 waktu Kyiv - tetapi lebih tidak masuk akal untuk mencoba menjawab pertanyaan ini dengan melihat sebulan, enam bulan atau setahun ke depan.

Yang ada hanya sedikit pertanyaan yang tepat yang berguna untuk bertanya pada diri sendiri. Ini akan menjadi tugas ujian pertama Anda untuk memasuki profesi: apakah Anda ingin menjawab pertanyaan-pertanyaan ini dan secara umum memikirkan dan meneliti bidang subjek sebelum membuat 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 berbagai sintaks, yang hampir pasti harus dibaca, dan kemungkinan besar ditulis). Tapi tidak hanya. Seorang programmer non-JS hampir pasti perlu membaca sedikit JS; Pemrogram JS - periksa penerapan algoritme yang dijelaskan dalam Python; untuk pemrogram sistem - untuk menangani kode kotoran orang lain dalam bahasa scripting.

Dan dalam perjalanan ke tingkat "menengah", Anda harus menguasai setengah lusin di antaranya. Dan untuk menjadi seorang profesional sejati - untuk memahami paradigma dari setiap sampah yang fantastis.

Kedua, Kecil kemungkinan Anda akan menulis dalam satu bahasa sepanjang hidup Anda. Dan mungkin bahkan tidak cukup lama. Bahkan mungkin tidak sampai sebulan. Pada pekerjaan pertama saya di tahun 2003, saya dipekerjakan sebagai ahli algoritme C++, tetapi saya sedikit mendukung situs di PHP, dan juga menambahkan antarmuka ke perpustakaan kami di Excel VBA (gemetar). Dan tidak ada, itu normal, yang hanya terjadi pada junas.

Tapi tidak hanya itu - bahasa "utama" di kantor favorit Anda akan berubah, atau pemberi kerja lain akan mempekerjakan topik favorit Anda, arus udara start-up atau budaya perusahaan akan berubah - dan FUCK - Anda tidak lagi mengingat desainnya "bahasa pertama" yang dipilih dengan cermat.

Karena itu, secara umum, Anda sebaiknya tidak memperlakukan pilihan ini. terlalu banyak serius, tentang pilihan istri atau rumah (mereka juga bisa diubah - tapi masih sedikit lebih rumit). Mulailah, coba semuanya, dan temukan strategi Anda sendiri - strategi yang jauh lebih bermakna daripada beberapa minggu/bulan/tahun menganalisis "dari mana harus memulai".

Ketiga, dan yang paling penting (dan mengikuti dari dua yang pertama) - seringkali bukan "Anda memilih bahasanya", tetapi bahasa memilih Anda. Sangat berharga untuk benar-benar tertarik dengan apa yang Anda lakukan, memilihnya sebagai bagian penting dari hidup Anda - dan saya berbicara dengan orang-orang seperti itu, bukan dengan mereka yang berharap untuk "membuat program pada hari Sabtu" (tidak ada yang akan menyelamatkan mereka) - yah , ada baiknya membuat pilihan ini, dan kemudian semua saran "apa yang harus dipilih" akan tergantung pada bola lampu. Tugas yang menarik atau majikan yang menjanjikan akan menggambar diri mereka sendiri, bahasa yang tidak mungkin dibuat keren, akan hilang dengan sendirinya, tetapi yang lain akan tumbuh. Nantikan saja.

Perhatian, pertanyaan yang tepat!

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

Mengapa Anda akan belajar? Ini adalah 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 seorang anak di sekolah? Tetapi: apakah Anda sudah sangat yakin bahwa Anda ingin mencari profesi di bidang TI secepat mungkin, atau baru memutuskan untuk mencobanya, apakah itu 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!

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

Apakah Anda tahu persis di bidang apa Anda ingin bekerja?“Hanya pengembangan game, tidak ada lagi yang terburu-buru”, “Kecerdasan buatan adalah yang saya impikan sejak sekolah”, “Saya ingin lebih dekat dengan besi, memprogram semua jenis robot dan sensor” atau bahkan “Ya, teman-teman saya adalah akan membuat startup tentang acara TV dengan data besar” adalah pilihan bagus untuk menjawab pertanyaan ini. Tetapi Anda tidak harus memilikinya sama sekali. "Dan tolong tunjukkan padaku, seluruh koleksinya" juga merupakan jawaban yang bagus. Dan "untuk saat ini saya akan mencoba membantu seorang akuntan dengan paman saya di perusahaan, tetapi di sana saya menginginkan sesuatu yang lebih menarik" - juga normal.

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

Lebih jauh: Apa yang ingin Anda lakukan? Tampaknya menjadi pertanyaan yang sama seperti di atas? Tapi tidak. Tutup mata Anda dan bayangkan seperti apa alur kerja ideal Anda? Bereksperimenlah dengan antarmuka sehingga pengguna senang, bahkan tanpa curiga berapa banyak usaha yang telah diinvestasikan? Ciptakan algoritme tumbukan partikel baru untuk mesin fisika game dan sempurnakan selama tiga tahun? Tulis banyak kode dengan cepat, gabungkan selusin komponen yang diketahui menjadi ide startup baru sebelum ada yang membuatnya? Berurusan dengan hal-hal asing yang kompleks untuk membuatnya bekerja di lingkungan baru? - ada banyak sekali pilihan, dan beberapa bahkan membawa Anda menjauh dari profesi "hanya seorang programmer" - ke area pengembang, atau spesialis UI, atau analis data ... Luangkan setidaknya 20 menit untuk ini meditasi, hasilnya bisa Sepenuhnya Tak Terduga.

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

Dan hanya setelah menjawab (atau secara sadar memilih untuk menunda menjawab) semua pertanyaan di atas, masuk akal untuk mengajukan pertanyaan pragmatis: Bahasa apa yang saat ini aktif digunakan?- di area, topik, dan lingkungan yang Anda minati. Dan pilih tiga bagian (itu benar!) Untuk pengembangan dalam waktu dekat.

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

Beberapa Jawaban

Apakah Anda mendengar suara pelan yang aneh?

Sudah usang dan berkarat oleh "jawaban" yang tercantum di bawah ini. Jika Anda membaca artikel ini enam bulan setelah ditulis, kemungkinan besar bagian "jawaban" sudah agak ketinggalan zaman ( Jika beberapa peristiwa bencana tidak terjadi, akibatnya semuanya menjadi usang); baca dalam setahun - benar-benar ketinggalan zaman. Anda membaca dalam 5 tahun - ... tapi iblis tahu. Di bidang kami, banyak hal berubah setiap hari, tetapi seringkali tetap cukup stabil dalam jangka panjang.

Nah, secara umum jelas - baca baik-baik.

Di bawah ini adalah ringkasan subyektif, singkat dan tidak lengkap dari 15 bahasa pemrograman teratas imajiner saat ini (dalam urutan abjad).

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

Perhatikan: inti dari angka-angka ini bukanlah bahwa "Anda harus memilih di mana angkanya lebih besar"! Intinya adalah bahwa untuk salah satu bahasa ini jumlahnya tidak sama dengan nol - di negara yang tidak terlalu besar, dan tidak terlalu makmur, jujur ​​​​saja. Artinya, Anda dapat menemukan pekerjaan dalam bahasa yang 5 tertulis di sana - tetapi untuk ini Anda benar-benar harus menyukainya, dan jika tujuannya hanya "bahkan untuk memprogram jarahan yang layak" - maka, tentu saja, Anda perlu memilih di mana angkanya lebih besar, mereka mengambil siapa saja yang menginginkannya, rupanya.

    C(100?- sepertinya mesin pencari gagal) - satu-satunya kakek pemrograman yang masih hidup, terlebih lagi, yang paling hidup dari semua yang hidup. Semua sistem (dengan amandemen Rust and Go, tentang yang di bawah), pemrograman semua jenis mikrokontroler dan perangkat yang disematkan, semua jenis driver untuk drone dan hal-hal lain yang membingungkan masih C. Ini juga merupakan bahasa "dasar" untuk menjahit atau mempercepat bahasa dan perpustakaan lain (beberapa omong kosong ilmiah, yang, katakanlah, awalnya ditulis dengan Python, kemudian ditulis ulang dalam C untuk kecepatan, kemudian pembungkus muncul di Ruby, Julia dan Haskell untuk implementasi C ini ... dan kita hidup seperti itu). Singkatnya, hampir tidak Pertama bahasa, tetapi wajib untuk dipelajari - benar-benar tepat. Selain itu, tidak berhenti, dan standar segar cukup segar dan bagus;

    C++ (144) adalah keponakan C. yang jelek (menurut beberapa) atau sangat rumit (menurut yang lain), berorientasi objek, dapat diprogram, sangat rumit, dikompilasi lama ... singkatnya, C ++ adalah cinta pertama saya di antara bahasa pemrograman. Saat ini digunakan, sejauh yang saya tahu, untuk mengembangkan game, beberapa sistem desktop dan sedikit di mana-mana C dimungkinkan, tetapi diperlukan kode yang lebih kompleks (karena kompiler gcc tersedia di hampir semua OS, dan mengkompilasi ini dan itu) ;

    C# (414)- salah satu dari sedikit bahasa yang pemrogramnya menjual jiwa mereka kepada iblis hampir terikat erat dengan ekosistem Microsoft (yang, jujur ​​​​saja - terutama untuk pengembang - dikembangkan dengan cukup mengesankan). Lingkup - game, atau perangkat lunak Perusahaan Mahal Kompleks. Bahasanya sendiri, sampai sekarang, cukup indah dan progresif. Dan, secara umum, seperti hampir semua bahasa tujuan umum yang tidak baru dan pragmatis, ia memiliki sedikit fungsional, banyak OO, sesuatu dari metaprogramming, dll.;

    Penutupan (6)- unicorn ajaib dari bahasa pemrograman, bekerja di JVM (baca tentang Java di bawah), pewaris 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 dengan Big Love (tapi dia keren);

    Erlang+Elixir (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 kurang asing dari Erlang (namun, bahasa "utama" dari platform tersebut masih perlu dipahami setidaknya sedikit, lihat pembahasan tentang Java di bawah). Saat ini, semua ini sedikit berbau "elitisme", tetapi berakar kuat di beberapa area (katakanlah, dalam sistem perbankan) - dan ini sangat menarik;

    ES (JavaScript, CoffeeScript, TypeScript, dll.) (788+10+64+...)- favorit yang jelas saat ini, ES / JS / ... - sebenarnya, bukan bahasa, tapi rumpun bahasa. Mereka menulis (dalam beberapa cara berbeda) antarmuka web dan antarmuka seluler, dan juga (dalam beberapa cara lain) perangkat lunak server dan admin, dan sifat botak. Apa sebenarnya yang disebut "bahasa JavaScript" saat ini agak sulit untuk ditentukan: setelah menyewa "programmer JavaScript", Anda, bergantung pada keberuntungan Anda, mungkin menjadi orang yang mendukung antarmuka kuno sistem perbankan, yang seharusnya berfungsi berdarah dari hidung di bawah browser apapun ; atau sebagai bagian dari tim trendi yang menulis visualisasi data ilmiah yang rumit dalam TypeScript yang diketik dengan kuat; atau tiba-tiba berpartisipasi dalam pengembangan antarmuka masa depan pada versi bahasa "berikutnya", yang dikompilasi secara kompleks menjadi sesuatu yang berfungsi di Nokia lama ... seluruh dunia yang tidak dapat dijelaskan dalam satu paragraf . Tetapi cukup berbahaya untuk mencari "bahasa pertama Anda" di area ini;

Ada juga pendapat ketiga dan cerita tentang apa yang menjadi dasar pilihan bahasa pemrograman dalam pengembangan nyata.

    Pergi (78)- sederhana seperti tongkat dan bahasa efektif yang dibuat oleh Google, terutama untuk kasus "buat kode yang cepat, bodoh, andal". Pelarian pikiran dalam dirinya segera terputus oleh kekasaran bahasanya. Tapi efektif - jangan sampaikan caranya;

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

    PHP (431)- Penghuni web lama dengan reputasi mengerikan. Dalam edisi modern, ia menyingkirkan sebagian besar warisan neraka, dan secara umum merupakan bahasa OO modern yang cukup baik. Tetapi menurut ingatan lama, itu merupakan bagian yang sangat penting dari infrastruktur Internet. Setelah menyewa PHP-shnik, Anda kemungkinan besar dapat masuk ke proyek yang rapi dengan Arsitektur dan Tes - atau Anda dapat mendukung sistem prasejarah yang gila dengan if / else yang tidak terstruktur untuk 2000 baris;

    Piton (303)- pernah menjadi "pesaing" Ruby sebagai bahasa yang trendi untuk web dan pemula, sekarang bahasa tersebut terutama untuk mendukung aplikasi web yang kompleks dan dewasa yang telah berkembang di atasnya - dan lebih banyak lagi untuk penelitian ilmiah / data besar, bahkan di beberapa tempat menghambat R (lihat di bawah);

    R(16)- bahasa, seolah-olah, untuk tujuan umum, tetapi hanya ilmuwan / bigdata yang menggunakannya. Sintaks yang sangat buruk (karena sudah tua), tetapi ada banyak paket keren untuknya, dan studi tertulis di atasnya. Hampir yang terbaik di dunia, ternyata, bahasanya kepuasan rasa ingin tahu;

    Rubi (124)- beberapa tahun yang lalu "modis" dan "hipster", hari ini - hanya salah satu bahasa arus utama. Sangat ekspresif dan ringkas, sedikit "ajaib", agak lambat. Terutama digunakan untuk pengembangan web. Hari ini adalah bahasa yang mudah untuk dicintai atau dibenci pada pandangan pertama, dan cukup mudah untuk mencari pekerjaan. Ruby juga disukai hari ini oleh admin dan penguji, Ruby memiliki alat yang keren untuk keduanya;

    Karat (3)- salah satu pemain yang cukup baru. Cepat dan kompleks. Berjanji untuk menggantikan C di bidang pemrograman sistem, tetapi sejauh ini tampaknya masuk akal untuk mempelajarinya lebih "untuk masa depan";

    Skala (60)- "adik pintar" pada platform Java: modern, kompleks, fungsional, sangat disukai oleh semua analitik bisnis dan karenanya dengan cepat mendapatkan popularitas;

    Cepat / Objective-C (58+15) adalah 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, tidak luar biasa untuk fitur khusus atau omong kosong khusus apa pun, bahasa modern yang layak sebanding dengan C # dan Java . Ini hanya dapat direkomendasikan sebagai yang pertama bagi mereka yang telah memutuskan untuk mengikat erat nasib mereka dengan Apple, karena penerapannya (sengaja) terbatas.

Entah bagaimana, secara umum, seperti ini.

Sesuatu tidak masuk ke daftar ini - misalnya, Perl, yang pengembangnya cukup diminati, tetapi bahasanya sendiri dalam keadaan aneh dan ternyata tidak merekomendasikannya sebagai bahasa "pertama". Atau, misalnya, Lua juga populer, tetapi sebagai bahasa skrip kecil untuk sistem lain (terutama game), menjadi "hanya programmer Lua" tampaknya tidak ada gunanya.

Eee, aku mengerti. Bagaimana kalau memilih apa?

Baik itu. Ambil semua. (tersenyum)

Tidak benar-benar. Nyatanya, strategi yang masuk akal (jika, tentu saja, Anda akan menghabiskan sebagian besar waktu dalam profesi kita, dan bukan "menghasilkan setengah tahun") adalah mencari tahu apa beberapa bahasa yang paling Anda minati untuk ditonton dalam beberapa bulan mendatang. Anda dapat memilihnya sebagai warna dalam instruksi untuk desainer - Anda dapat "dari kerabat", Anda dapat "dari lawan", Anda dapat "dari saling melengkapi" ...

Tujuan Anda pada tahap awal adalah membuatnya menarik dan mulai berolahraga. Dan hanya Anda yang bisa membuka jalan menuju tujuan ini, dan kemungkinan besar bukan yang pertama kali. Begitu seterusnya.

Singkatnya...

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

Sisanya agak sendiri.

Kasper Beyer "Sejarah Singkat Bahasa Pemrograman yang Benar-Benar Akurat".

1800

Joseph Marie Jacquard mengajarkan alat tenun untuk membaca kartu berlubang dan dengan demikian menciptakan perangkat pemrosesan data multi-utas pertama. Penemuannya disambut dengan permusuhan oleh para penenun sutra, yang meramalkan kelahiran Skynet.

1842

Ada Lovelace bosan melakukan pengejaran mulianya. Dia membuat sketsa di buku catatan yang kemudian dikenal sebagai program komputer pertama yang diterbitkan. Satu-satunya ketidaknyamanan adalah komputer belum ditemukan.

1936

Alan Turing menemukan segalanya, tetapi ini tidak membebaskannya di mata pengadilan Inggris, yang menjatuhkan hukuman kebiri kimia.

Dia kemudian diampuni oleh Ratu, tapi sayangnya dia sudah lama meninggal saat itu.

1957

John Backus menciptakan FORTRAN, bahasa pertama yang digunakan oleh pemrogram sungguhan.

1959

Grace Hopper menciptakan bahasa pemrograman berorientasi manufaktur pertama dan menyebutnya "bahasa berorientasi bisnis umum", singkatnya COBOL.

1964

John George Kemeny dan Thomas Kurtz memutuskan bahwa pemrograman terlalu sulit dan mereka harus kembali ke dasar. Mereka menyebut bahasa pemrograman mereka BASIC.

1970

Niklaus Wirth mengembangkan Pascal. Ini adalah salah satu dari beberapa bahasa yang dia ambil bagian dalam pembuatannya. e With: Dia suka membuat bahasa.

Dia juga merumuskan Hukum Wirth, yang menjadikan Hukum Moore tidak berarti, seperti yang dilakukan pengembang Dan menulis program sangat membengkak sehingga bahkan mainframe tidak dapat mengikutinya. Nantinya hal ini akan dibuktikan dengan ditemukannya Electron.js.

1972

Dennis Ritchie bosan dengan pekerjaannya di Bell Labs dan memutuskan untuk membuat C dengan kurung kurawalnya, dan proyek itu sukses besar.Dia kemudian menambahkan kesalahan segmentasi dan fitur ramah pengembang lainnya untuk meningkatkan kinerja.

Karena dia masih memiliki beberapa jam lagi, dia dan teman-temannya di Bell Labs memutuskan untuk membuat contoh program untuk mendemonstrasikan bahasa C. Jadi mereka membuat sistem operasi yang disebut Unix.

1980

Alan Curtis Kay menciptakan pemrograman berorientasi objek dan menyebutnya Smalltalk. Di Smalltalk semuanya adalah objek, bahkan objek adalah objek.

1987

Larry Wall, dengan pengalamannya di bidang agama, menjadi pengkhotbah, dan dia e th doktrin membuat Perl.

1983

Jean David Ishbia memperhatikan bahwa program Ada Lovelace tidak pernah berjalan dan memutuskan untuk membuat bahasa dan menamainya dengan namanya (Ada). Tetapi bahasanya juga tidak dimulai.

1986

Brad Cox dan Tom Love memutuskan untuk membuat versi C yang tidak dapat dibaca berdasarkan Smalltalk. Mereka menyebutnya Objective-C, tetapi tidak ada yang bisa memahami sintaksnya.

1983

Bjorn Stroustrup melakukan perjalanan kembali ke masa depan dan memperhatikan bahwa bahasa C membutuhkan terlalu sedikit waktu untuk mengkompilasi. Dia menambahkan setiap fitur yang dapat dia pikirkan ke dalam bahasa tersebut dan menyebutnya C++.

Pemrogram di seluruh dunia setuju, karena mereka memiliki alasan yang cerdik untuk menonton video kucing dan membaca xkcd di tempat kerja.

1991

Guido van Rossum tidak menyukai kurung kurawal, jadi dia menciptakan . Saat memilih sintaks bahasa, penulis terinspirasi oleh Monty Python dan sirkus terbangnya.

1993

Roberto Jeruzalimsky dan teman-temannya memutuskan bahwa mereka membutuhkan bahasa skrip Brasil lokal. DI DALAM Selama pelokalan, bug dibuat yang menyebabkan indeks mulai menghitung dari 1, bukan 0. Bahasa itu juga bernama Lua.

1994

Rasmus Lerdorf membuat mesin template untuk skrip CGI-nya sendiri untuk beranda dan merilis file dot-nya di internet.

Dunia memutuskan untuk menggunakan file dot ini di mana-mana, dan Rasmus dengan marah menambahkan beberapa binding database tambahan ke file tersebut dan memanggil hasilnya PHP.

1995

Yukihiro Matsumoto tidak terlalu senang dan memperhatikan bahwa programmer lain juga tidak senang. Dia menciptakan Ruby untuk membuat mereka bahagia. Setelah membuat Ruby, "Matz" senang, komunitas Ruby senang, semua orang senang.

1995

Brendan Eich mengambil cuti untuk mengembangkan bahasa yang akan memberdayakan setiap browser web di dunia dan akhirnya Skynet. Dia pertama kali pergi ke Netscape dan mengatakan bahasa itu disebut LiveScript, tetapi selama tinjauan kode, Java mendapatkan popularitas, jadi itu diputuskan gunakan kurung kurawal dan ganti nama bahasa menjadi JavaScript.

Ternyata Java adalah merek dagang, yang bisa menimbulkan masalah, sehingga JavaScript kemudian diganti namanya menjadi , tetapi masih disebut dengan cara lama.

1996

James Gosling menciptakan Java, bahasa pemrograman berorientasi objek pertama yang benar-benar verbose di mana pola desain menang atas pragmatisme.

2001

Anders Hejlsberg menciptakan kembali Java dan menyebutnya C# karena pemrograman C tampaknya lebih keren daripada pemrograman Java. Semua orang menyukai versi baru Java karena sangat berbeda dari Java.

2005

David Heinemeier Hansson membuat kerangka kerja web yang kemudian disebut Ruby on Rails. Orang-orang lupa bahwa mereka adalah dua hal yang berbeda.

2006

John Resig sedang menulis perpustakaan pembantu untuk JavaScript. Semua orang mengira itu adalah bahasa dan berkarir dengan menyalin-tempel kode jQuery dari internet.

2009

Ken Thompson dan Rob Pike memutuskan untuk membuat bahasa yang mirip dengan C tetapi lebih komersial, dengan lebih banyak alat keamanan dan Gophers sebagai maskot. .

Mereka menyebut bahasa ini Go, memutuskan untuk membuka kodenya dan mulai menjual bantalan lutut bermerek dan helm Gopher.

2010

Graydon Hor juga ingin membuat bahasa seperti C. Dia menyebutnya Rust. Setiap orang menuntut agar setiap perangkat lunak mereka segera ditulis ulang di Rust. Graydon menginginkan sesuatu yang sedikit lebih halus dan mulai mengerjakan Swift untuk Apple.

2012

Anders Hejlsberg ingin menulis C# di browser web. Itu menciptakan TypeScript, yang pada dasarnya adalah JavaScript dengan banyak Java.

2013

Jeremy Ashkenas ingin sebahagia pengembang Ruby, jadi dia membuat CoffeeScript, yang diterjemahkan ke dalam JavaScript tetapi lebih mirip Ruby. Jeremy tidak pernah sebahagia Matz dan pengembang Ruby.

2014

Chris Latner menciptakan Swift, yang tujuan utamanya bukan untuk menjadi Objective-C. Pada akhirnya, bahasa ini menyerupai Jawa.

Awal pembangunan

bahasa campuran

Jika Anda perlu memiliki program yang efektif, alih-alih bahasa mesin, bahasa berorientasi mesin yang dekat dengannya digunakan - assembler. Orang menggunakan perintah mnemonik alih-alih perintah mesin.

Tetapi bekerja dengan assembler pun cukup rumit dan membutuhkan pelatihan khusus.

Misalnya, untuk prosesor Zilog Z80, instruksi mesin 00000101 memberitahu prosesor untuk mengurangi register B-nya satu per satu. Dalam bahasa rakitan, hal yang sama akan ditulis sebagai DEC B .

Pemrograman terstruktur

Langkah selanjutnya diambil pada tahun 1954, ketika bahasa tingkat tinggi pertama, Fortran, dibuat. FORTRAN - PENERJEMAH RUMUS). Bahasa tingkat tinggi meniru bahasa alami menggunakan beberapa kata bahasa lisan dan simbol matematika umum. Bahasa-bahasa ini lebih ramah manusia, dengan bantuannya, Anda dapat menulis program hingga beberapa ribu baris. Namun, karena mudah dipahami dalam program pendek, bahasa ini menjadi tidak terbaca dan sulit diatur untuk program besar. Solusi untuk masalah ini muncul setelah ditemukannya bahasa pemrograman terstruktur. bahasa pemrograman terstruktur ), seperti Algol (1958), Pascal (1970), C (1972).

Pemrograman terstruktur melibatkan struktur kontrol yang terdefinisi dengan baik, blok program, tanpa instruksi unconditional jump (GOTO), subrutin mandiri, dukungan untuk rekursi dan variabel lokal.

Inti dari pendekatan ini terletak pada kemungkinan membagi program menjadi elemen-elemen penyusunnya.

Juga dibuat fungsional(aplikatif) bahasa (Contoh: Lisp - English. Pemrosesan DAFTAR, 1958) dan asah otak bahasa (contoh: Prolog - Bahasa Inggris. Pemrograman dalam LOGIC, 1972).

Meskipun pemrograman terstruktur, ketika digunakan, memberikan hasil yang luar biasa, bahkan gagal ketika program mencapai panjang tertentu. Untuk menulis program yang lebih kompleks (dan lebih lama), diperlukan pendekatan baru untuk pemrograman.

OOP

Akibatnya, prinsip-prinsip pemrograman berorientasi objek dikembangkan pada akhir 1970-an dan awal 1980-an. OOP menggabungkan prinsip terbaik pemrograman terstruktur dengan konsep baru yang kuat, yang intinya disebut enkapsulasi, polimorfisme Dan warisan.

Contoh bahasa berorientasi objek adalah: Object Pascal, C++,

OOP memungkinkan Anda mengatur program secara optimal dengan memecah masalah menjadi bagian-bagian komponennya, dan bekerja dengan masing-masing program secara terpisah. Sebuah program dalam bahasa berorientasi objek, memecahkan masalah tertentu, sebenarnya menggambarkan bagian dunia yang terkait dengan masalah ini.

Tautan

  • Sejarah pemrograman dan komputasi

Yayasan Wikimedia. 2010 .

Lihat apa "Sejarah Singkat Perkembangan Bahasa Pemrograman" di kamus lain:

    Bahasa pemrograman adalah sistem tanda formal untuk menulis program. Program ini biasanya berupa beberapa algoritme dalam bentuk yang dapat dimengerti oleh eksekutor (misalnya, komputer). Bahasa pemrograman mendefinisikan satu set ... ... Wikipedia

    Semantik Ruby: multi-paradigma Jenis eksekusi: juru bahasa Diperkenalkan pada: 1995 Penulis: Yukihiro Matsumoto Versi terbaru: 1.9.1 ... Wikipedia

    Ruby Semantik: multi-paradigma Jenis eksekusi: penerjemah Muncul pada: 1995 Penulis: Yukihiro Matsumoto Versi terbaru: 1.9.1 ... Wikipedia - (Haykakan Sovetakan Socialistakan Hanrapetutyun) Armenia (Hayastan Negara Armenia). I. Informasi umum SSR Armenia dibentuk pada tanggal 29 November 1920. Dari 12 Maret 1922 hingga 5 Desember 1936 menjadi bagian dari Federasi Transkaukasia (Lihat ... ...

    - (Republik Sosialis Lietuvos Taribu) Lituania (Lietuva). I. Informasi Umum SSR Lituania dibentuk pada tanggal 21 Juli 1940. Sejak 3 Agustus 1940 telah menjadi bagian dari Uni Soviet. Terletak di sebelah barat Uni Soviet bagian Eropa. Berbatasan dengan S. dengan ... ... Ensiklopedia Soviet yang Hebat

    Cicipi Buran OK GLI (BTS 002) untuk pengujian di atmosfer. Salon Dirgantara MAKS, 1999 ... Wikipedia

Izinkan saya menyoroti beberapa tren umum dalam pengembangan bahasa pemrograman. Pembaca yang cerdik mungkin sudah lama menebak apa yang akan saya katakan. Bahasa berkembang menuju abstraksi yang semakin banyak. Dan ini disertai dengan penurunan efisiensi. Pertanyaan: apakah abstraksi sepadan? Jawaban: layak. Layak, karena meningkatkan level abstraksi berarti meningkatkan level keandalan pemrograman. Efisiensi rendah dapat dilawan dengan membangun komputer yang lebih cepat. Jika persyaratan memori terlalu tinggi, Anda dapat menambah jumlahnya. Ini, tentu saja, membutuhkan waktu dan uang, tetapi dapat diselesaikan. Tetapi hanya ada satu cara untuk mengatasi kesalahan dalam program: kesalahan tersebut harus diperbaiki. Lebih baik lagi, jangan lakukan itu. Lebih baik lagi, buat mereka sesulit mungkin. Dan inilah tujuan dari semua penelitian di bidang bahasa pemrograman. Dan Anda harus tahan dengan hilangnya efisiensi.

Tujuan dari review ini adalah sebagai upaya untuk memberikan gambaran kepada pembaca tentang keragaman bahasa pemrograman yang ada. Di antara programmer, sering ada pendapat tentang "penerapan universal" dari bahasa tertentu (C, C ++, Pascal, dll.). Pendapat ini muncul karena beberapa alasan: kurangnya informasi, kebiasaan, kelambanan berpikir. Saya mencoba sedikit mengimbangi faktor pertama. Selebihnya, saya hanya dapat mengatakan bahwa seorang profesional sejati harus terus berusaha untuk meningkatkan keterampilan profesionalnya. Dan untuk ini Anda tidak perlu takut untuk bereksperimen. Jadi bagaimana jika semua orang di sekitar menulis dalam C/C++/VB/Pascal/Perl/Java/… (garisbawahi sebagaimana mestinya)? Mengapa tidak mencoba sesuatu yang baru? Apakah ini akan lebih efisien? Tentu saja, sebelum Anda mulai menggunakan bahasa baru, Anda perlu mempelajari semua fiturnya dengan cermat, termasuk adanya implementasi yang efektif, kemampuan untuk berinteraksi dengan modul yang ada, dll., Dan baru kemudian membuat keputusan. Tentu saja, selalu ada risiko salah jalan, tapi ... Hanya orang yang tidak melakukan apa-apa yang tidak salah.

Dan selanjutnya. Saya pernah mendengar dan bahkan terkadang berpartisipasi dalam diskusi tentang bentuk “bahasa A lebih baik daripada bahasa B”. Saya berharap setelah membaca ulasan ini, banyak yang akan diyakinkan tentang kesia-siaan perselisihan tersebut. Maksimal yang bisa didiskusikan adalah keunggulan satu bahasa dibandingkan bahasa lain dalam menyelesaikan masalah tertentu dalam kondisi tertentu. Di sini, memang, terkadang ada sesuatu yang perlu diperdebatkan. Dan terkadang solusinya sama sekali tidak jelas. Namun, berdebat “secara umum” jelas bodoh.

Artikel ini dimaksudkan sebagai tanggapan terhadap mereka yang meneriakkan "Bahasa X HARUS MATI". Saya harap jawabannya ternyata cukup memadai dan meyakinkan. Saya juga berharap artikel itu, selain polemik, dan nilai pendidikan.