Rumah - televisi pintar
Siapa penemu bahasa pemrograman pertama. Bahasa pemrograman pertama

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 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 sendiri 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. Sebaiknya Anda benar-benar tertarik pada 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 “mendapatkan uang tambahan dengan pemrograman di hari Sabtu” (tidak ada yang bisa menghemat 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 sebagai permulaan), 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 penghasilan 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 di benaknya memiliki. 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 impianku 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? Menulis banyak kode dengan cepat, menggabungkan selusin komponen yang dikenal ke dalam ide startup baru sebelum ada yang memunculkannya? Berurusan dengan benda asing yang kompleks agar dapat 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 (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?- sepertinya 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 bisa 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 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 bernuansa “elitis”, 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, sialnya, 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 ayat. 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 menyumbat 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 tersebut mudah untuk disukai atau dibenci pada pandangan pertama, dan cukup mudah 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 segalanya. Apa yang harus dipilih?..

Nah, ini. Ambil semuanya. (tersenyum)

Tidak, sungguh. 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. Dan hanya Anda yang dapat membuka jalan menuju tujuan ini, dan kemungkinan besar bukan yang pertama kali. Hal-hal seperti itu.

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.

Awal pengembangan

Bahasa perakitan

Dalam kasus ketika diperlukan untuk memiliki program yang efektif, alih-alih bahasa mesin, bahasa berorientasi mesin yang dekat dengannya digunakan - assembler. Orang-orang menggunakan perintah mnemonik alih-alih perintah mesin.

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

Misalnya, untuk prosesor Zilog Z80, instruksi mesin 00000101 memerintahkan prosesor untuk mengurangi register B-nya sebanyak satu. Dalam bahasa assembly ini juga akan ditulis sebagai DEC B.

Pemrograman terstruktur

Langkah selanjutnya diambil pada tahun 1954, ketika bahasa tingkat tinggi pertama, Fortran, diciptakan. FORTRAN - PENERJEMAH Rumus FORTRAN). Bahasa tingkat tinggi meniru bahasa alami dengan menggunakan beberapa kata bahasa lisan dan simbol matematika umum. Bahasa-bahasa ini lebih nyaman bagi manusia; dengan bantuannya, Anda dapat menulis program hingga beberapa ribu baris. Namun, meskipun mudah dipahami dalam program pendek, bahasanya menjadi tidak terbaca dan sulit dikelola jika menyangkut program yang lebih besar. Solusi untuk masalah ini datang dengan penemuan bahasa pemrograman terstruktur. bahasa pemrograman terstruktur ), seperti ALGOL (1958), Pascal (1970), C (1972).

Pemrograman terstruktur melibatkan struktur kontrol yang ditentukan secara tepat, blok program, instruksi tanpa lompatan tanpa syarat (GOTO), subrutin mandiri, dukungan untuk rekursi dan variabel lokal.

Inti dari pendekatan ini adalah kemampuan untuk membagi suatu program menjadi elemen-elemen komponennya.

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

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

OOP

Akibatnya, prinsip-prinsip pemrograman berorientasi objek dikembangkan pada akhir tahun 1970an dan awal tahun 1980an. OOP menggabungkan prinsip-prinsip terbaik dari pemrograman terstruktur dengan konsep-konsep baru yang kuat, yang dasar-dasarnya 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 mengerjakan masing-masing program secara terpisah. Sebuah program dalam bahasa berorientasi objek, yang memecahkan masalah tertentu, pada dasarnya menggambarkan bagian dunia yang terkait dengan masalah tersebut.

Tautan

  • Sejarah pemrograman dan komputasi

Yayasan Wikimedia.

2010.

    Lihat apa itu “Sejarah Singkat Perkembangan Bahasa Pemrograman” di kamus lain:

    Bahasa pemrograman adalah sistem tanda formal yang dirancang untuk menulis program. Suatu program biasanya mewakili suatu algoritma dalam bentuk yang dapat dimengerti oleh pelaksana (misalnya komputer). Bahasa pemrograman menentukan himpunan... ... Wikipedia

    Semantik Ruby: multi-paradigma Jenis eksekusi: interpreter Muncul pada: 1995 Penulis: Yukihiro Matsumoto Versi terbaru: 1.9.1 ... Wikipedia

    Semantik Ruby: multi-paradigma Jenis eksekusi: juru bahasa Muncul pada: 1995 Pengarang: Yukihiro Matsumoto Versi terbaru: 1.9.1 ... Wikipedia - (Haykakan Sovetakan Socialistakan Hanrapetutyun) Armenia (Negara Hayyastan orang Armenia). I. Informasi umum SSR Armenia dibentuk pada tanggal 29 November 1920. Dari 12 Maret 1922 hingga 5 Desember 1936, ia menjadi bagian dari Federasi Transkaukasia (Lihat... ... - (Republik Sosialis Lietuvos Taribu) Lituania (Lietuvos). I. Informasi umum RSK Lituania dibentuk pada 21 Juli 1940. Sejak 3 Agustus 1940, ia menjadi bagian dari Uni Soviet. Terletak di Uni Soviet bagian Eropa Barat. Berbatasan di utara dengan... ...

    Ensiklopedia Besar Soviet

Awalnya, pemrograman memiliki bentuk yang sangat primitif dan praktis tidak berbeda dengan kode biner terurut dengan pendekatan formal. Faktanya, pada awal mula bidang ini, hanya ada sedikit perbedaan antara bahasa pemrograman dan kode komputer. Tidak ada kemudahan yang jelas dan alami bagi pemrogram, ia diharuskan memiliki pengetahuan tentang kode numerik untuk setiap perintah mesin. Bahkan alokasi memori untuk menjalankan perintah jatuh pada spesialis.

Untuk mempermudah penanganan komputer, manusia mulai aktif mengembangkan bahasa, salah satunya adalah Perakit. Nama simbolik mulai digunakan untuk menampilkan variabel. Daripada melakukan operasi numerik, cukup bagi seseorang untuk mengetahui nama-nama mnemonik; jauh lebih mudah untuk menghafalnya. Pada tahap ini, bahasa pemrograman menjadi lebih dekat dengan bahasa yang dapat dimengerti manusia.

Pelopor di antara bahasa pemrograman antara lain Fortran merupakan gabungan singkat dari 2 kata: Rumus dan Terjemahan. Dibuat sudah pada pertengahan tahun 50-an. Bahasa ini masih digunakan sampai sekarang karena kemudahan dan kesederhanaan penulisannya, serta sistem perpustakaan yang dikembangkan untuk Fortran. Ini paling sering digunakan untuk perhitungan ilmiah dan teknik, dan juga secara aktif digunakan dalam fisika dan ilmu-ilmu lain yang berkaitan dengan matematika.

Bahasa terfokus

Karena meningkatnya area penggunaan komputer Bahasa lain juga muncul untuk perkembangan individu di bidang baru:

  • arah ekonomi tetap kosong sampai munculnya Kobol;
  • Snoball - memproses algoritma yang terkait dengan teks;
  • Pelat. Ia bekerja berdasarkan algoritma untuk memproses simbol. Ini secara aktif digunakan untuk pembentukan kecerdasan buatan.

Sudah pada tahun 1968, sebuah kompetisi diluncurkan untuk pertama kalinya, di mana hadiah utamanya adalah gelar bahasa pemrograman terbaik untuk memulai jalur karir. Data tersebut rencananya akan digunakan untuk melatih spesialis. Memenangkan kemenangan ALGOL-68, tapi dia masih kurang dikenal, dan tidak ada pembicaraan tentang popularitas.

Itu dibuat khusus untuk berpartisipasi dalam kompetisi Pascal, dikembangkan oleh Niklaus Wirth. Bahasanya sangat mudah diakses, nyaman dan menggabungkan banyak alat canggih untuk menyusun informasi. Meskipun awalnya dikembangkan untuk tujuan mengajar siswa, Pascal menyebar luas dan aktif dikembangkan. Bahkan saat ini merupakan salah satu bahasa pemrograman terbaik dan paling terkenal.

Itu diciptakan untuk mendidik anak-anak di sekolah logo, berdiri di tempat asal Samuel Peipert. Keuntungan: kemudahan pengoperasian dan banyaknya kemungkinan.

Bahasa sederhana BASIC mulai diajarkan di sekolah; komputer sebagai dialog langsung. Waktu tidak mempengaruhi bidang ini dengan cara apa pun; BASIC masih merupakan bahasa termudah untuk mulai mempelajari bidang pemrograman yang paling umum.

Penciptaan bahasa C

Perkembangan kemampuan peralatan komputasi menyebabkan perlunya penulisan program pengendalian yang intensif komputer. Tempat ini berhak diambil alih oleh bahasa C, yang mulai digunakan secara aktif pada tahun 70-an. Keuntungan yang jelas dari bahasa ini adalah keserbagunaannya. Ini lebih unggul dari Pascal karena kemampuan bersarangnya untuk bekerja sama dengan instruksi mesin yang berbeda dan bagian memori yang sesuai.

C digunakan di mana-mana sebagai bahasa instrumental untuk menulis platform operasi, perangkat terjemahan, database, dan tugas sistem terapan lainnya. tidak memiliki fokus yang jelas, cocok untuk banyak tugas karena efisiensinya, kemudahan transfer dan konsumsi sumber daya yang ekonomis. Lebih sering Ya kecepatan pemrosesan data sebanding dengan Perakit, kinerja program dalam kedua bahasa kira-kira sama. Bahasa kecil memiliki banyak kekuatan.

Prolog dan Ada

Pengenalan pemrograman fungsional pasti mengarah pada penciptaan Prolog. Tugas bahasa direduksi menjadi analisis dan interaksi dengan bahasa manusia. Logika aplikasinya formal, optimal untuk menyelesaikan masalah dan teorema secara otomatis.

Baru pada tahun 1980an bahasa Ada dikembangkan. Ini memperluas pemahaman klasik dan sifat-sifat bahasa pada masa itu. Ada dapat memecahkan masalah secara real time dan mensimulasikan keputusan independen.

Klasifikasi

Saat ini, klasifikasi bahasa menurut tingkat pekerjaan telah dikembangkan; distribusi ini adalah yang paling umum. Ada 3 level utama:

  1. Pendek. Ini mencakup berbagai bahasa mesin atau variasi dengan tipe pengkodean simbolik perakit Dan Kode otomatis. Operator perintah mesin diambil sebagai dasar, hanya dikembangkan dengan mengacu pada kode mnemonik. Operan bukan lagi alamat pasti, tetapi sebutan simbolis untuk nama. Semua model dirancang untuk varietas individual komputer, mereka bergantung pada mesin. Dalam bahasa seperti itu, terdapat ketergantungan yang kuat dari bahasa tersebut pada fitur internal sistem;
  2. Tinggi. Bahasanya jauh lebih umum dan nyaman digunakan. Ini termasuk: ALGOL, C, Prolog, Pascal, BASIC, Fortran dan lain-lain. Bahasa yang terdaftar tidak memiliki ketergantungan yang ketat pada mesin, karena didasarkan pada kemampuan sistem operan, yang mirip dengan algoritma kelas. Kerugian dari level tinggi adalah konsumsi sumber daya yang tinggi dan eksekusi yang lambat;
  3. Sangat tinggi. Bahasa yang terwakili sangat sedikit, hanya APL dan ALGOL-68. Mereka dianggap ultra-high-end karena perkembangan operator yang sangat kuat.

Menurut klasifikasi lain, bahasa dibagi menjadi:

  • simbolis- Prolog, Cadel dan Snoball;
  • komputasi- Pascal, C, Algol, BASIC, Fortran.

Arah pembangunan

Ilmu komputer di dunia modern berkembang dalam 3 arah utama:

  1. Prosedural muncul selama periode perkembangan aktif komputer dan perangkat komputasi lainnya, dan telah digunakan secara luas sejak saat itu. Petunjuk prosedural berisi deskripsi eksplisit tentang tindakan yang perlu dilakukan. Untuk memperoleh suatu hasil selalu dilakukan prosedur tertentu yang terdiri dari berbagai rangkaian manipulasi. Bahasa prosedural dibagi lagi menjadi:
    • Struktural. Mereka menggunakan satu operator untuk menulis seluruh algoritma: loop, fungsi, cabang, dan lainnya. Lebih terkenal: Pascal, Ada dan S.
    • Ruang operasi. Beberapa tindakan berbeda digunakan. Di antara varietas yang paling terkenal: Fokus, Fortran dan BASIC.
  2. Non-prosedural. Bahasa pemrograman memiliki struktur deklaratif, yang muncul pada tahun 70an. Mereka mulai berkembang paling aktif pada tahun 80-an setelah munculnya proyek pembentukan komputer generasi ke-5. Tugas utamanya adalah menciptakan peluang untuk membangun sangat cerdas mobil Mereka juga dibagi menjadi:
    • Fungsional. Program ini melakukan perhitungan fungsi tertentu, yang didasarkan pada algoritma lain yang relatif sederhana dan masalah yang lebih sederhana. Arah fungsional didasarkan pada elemen utama - rekursi. Ini melibatkan penghitungan nilai suatu fungsi dengan menggunakannya di elemen lain. Bahasa ini tidak memiliki loop dan metode untuk menetapkan nilai.
    • Logis. Program ini tidak memerlukan deskripsi tindakan sama sekali; program ini didasarkan pada hubungan antara data dan maknanya. Hanya setelah perhitungan Anda dapat menerima jawaban atas pertanyaan. Setelah mencari melalui parameter yang diketahui, jawabannya ditampilkan. Tidak ada metode atau perintah dalam program untuk menemukan respons, hal ini secara implisit ditentukan oleh bahasa. Perwakilan terkemuka adalah Prolog. Pemikiran algoritmik sepenuhnya dihilangkan dari arah, hanya hubungan statis antar objek, dan semua dinamika disembunyikan dari pengembang dan direduksi menjadi penyortiran data.
  3. Bahasa berorientasi objek, yang semuanya merupakan bentuk pemrograman tingkat tinggi. Bahasa seperti itu tidak perlu menggambarkan urutan manipulasi yang jelas untuk mendapatkan hasil suatu tugas, tetapi ada komponen individu dari arah prosedural. Jauh lebih mudah bagi pengguna untuk bekerja dengan bahasa tersebut, karena mereka memiliki antarmuka yang kaya dan mudah diakses. Contoh terbaik dari tren komunikasi visual ini adalah Object Pascal.

Ada bahasa untuk menulis skrip, yang terkenal adalah Rexx, Tcl, Perl dan Python, serta bahasa shell sistem Unix. Mereka mengembangkan gaya pengkodean individual yang berbeda dari prinsip pemrograman tingkat sistem yang terkenal. Mereka tidak digunakan untuk membuat aplikasi tingkat bawah, melainkan untuk menggabungkan berbagai komponen dari bahasa berbeda yang membentuk sekumpulan fungsi individual.

Mereka mulai berkembang paling aktif seiring dengan penyebaran Internet, itulah sebabnya bahasa scripting mulai digunakan secara luas. Paling sering digunakan untuk membuat skrip Perl, dan untuk Bagian web populer JavaScript.

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 mendapat penolakan dari para penenun sutra yang meramalkan lahirnya Skynet.

1842

Ada Lovelace menjadi bosan saat mengejar tujuan mulianya. Dia membuat sketsa di buku catatan apa yang kemudian dikenal sebagai program komputer pertama yang diterbitkan. Satu-satunya ketidaknyamanan adalah komputer belum ditemukan.

1936

Alan Turing mengarang segalanya, tapi ini tidak membenarkannya di mata pengadilan Inggris, yang menjatuhkan hukuman kebiri kimia.

Ratu kemudian memaafkannya, tapi sayangnya, dia sudah lama meninggal pada saat itu.

1957

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

1959

Grace Hopper menciptakan bahasa pemrograman berorientasi industri pertama dan menyebutnya “bahasa berorientasi bisnis umum,” atau disingkat COBOL.

1964

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

1970

Niklaus Wirth mengembangkan Pascal. Ini adalah salah satu dari beberapa bahasa yang ia ambil bagian dalam penciptaannya e Wirth: Dia suka menciptakan bahasa.

Dia juga merumuskan Hukum Wirth, yang menjadikan Hukum Moore tidak ada artinya karena pengembang akan melakukannya Dan membuat program yang sangat besar sehingga mainframe pun tidak dapat mengikutinya. Hal ini nantinya akan dibuktikan melalui penemuan Electron.js.

1972

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

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

1980

Alan Curtis Kaye menciptakan pemrograman berorientasi objek dan menyebutnya Smalltalk. Dalam Smalltalk, segala sesuatu adalah sebuah objek, bahkan sebuah objek pun merupakan sebuah objek.

1987

Larry Wall, dengan pengalamannya di bidang keagamaan, menjadi seorang pengkhotbah, dan dia e doktrin ini membuat Perl.

1983

Jean David Ishbia memperhatikan bahwa program Ada Lovelace tidak pernah berhasil dan memutuskan untuk membuat bahasa dan menamainya dengan namanya (Ada). Tapi 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, tapi tidak ada yang bisa memahami sintaksisnya.

1983

Björn Stroustrup kembali ke masa depan dan memperhatikan bahwa bahasa C memerlukannya terlalu sedikit waktu untuk kompilasi. Dia menambahkan setiap fitur yang dapat dia pikirkan ke dalam bahasa tersebut dan menyebutnya C++.

Pemrogram di seluruh dunia setuju, memberi mereka alasan cemerlang untuk menonton video kucing dan membaca xkcd di tempat kerja.

1991

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

1993

Robert Ierusalimski dan teman-temannya memutuskan bahwa mereka memerlukan bahasa skrip lokal Brasil. DI DALAM Terjadi kesalahan selama pelokalan yang menyebabkan indeks mulai menghitung dari 1, bukan 0. Bahasa itu juga disebut Lua.

1994

Rasmus Lerdorf membuat mesin templat untuk skrip beranda CGI miliknya dan merilis file titiknya di Internet.

Dunia memutuskan untuk menggunakan file titik ini di mana saja, dan Rasmus, dengan panik, menambahkan beberapa pengikatan basis data tambahan ke file tersebut dan memanggil hasilnya RHP.

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 pun senang, semua orang pun senang.

1995

Brendan Eich mengambil cuti sehari untuk mengembangkan bahasa yang akan mengendalikan setiap browser web di dunia dan akhirnya Skynet. Awalnya dia pergi ke Netscape dan mengatakan bahwa bahasanya disebut LiveScript, tetapi selama peninjauan kode, Java mendapatkan popularitas, jadi itu sudah diputuskan gunakan kurung kurawal dan ganti nama bahasanya menjadi JavaScript.

Ternyata Java adalah sebuah merek dagang yang dapat menimbulkan masalah, sehingga JavaScript kemudian diubah namanya menjadi , namun tetap disebut dengan nama lama.

1996

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

2001

Anders Hejlsberg menciptakan kembali Java dan menyebut bahasa C# karena pemrograman dalam C tampak lebih keren daripada pemrograman di Java. Semua orang menyukai Java versi baru karena sangat berbeda dari Java.

2005

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

2006

John Resig menulis perpustakaan pembantu JavaScript. Semua orang mengira itu adalah sebuah bahasa dan berkarier dengan menyalin-menempelkan kode jQuery dari Internet.

2009

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

Mereka menyebut bahasa ini Go, memutuskan untuk menjadikannya open source, dan mulai menjual bantalan lutut bermerek dan helm Gopher.

2010

Graydon Hoare juga ingin membuat bahasa yang mirip dengan C. Ia menyebutnya Rust. Setiap orang menuntut agar setiap perangkat lunak mereka segera ditulis ulang di Rust. Graydon menginginkan sesuatu yang lebih cemerlang dan mulai mengerjakan Swift untuk Apple.

2012

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

2013

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

2014

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

Izinkan saya menyoroti beberapa tren umum dalam perkembangan bahasa pemrograman. Pembaca yang cerdik mungkin sudah lama menebak apa yang akan saya katakan. Bahasa berevolusi menuju abstraksi yang semakin besar. Dan hal ini disertai dengan penurunan efisiensi. Pertanyaan: apakah abstraksi layak dilakukan? Jawaban: sepadan. Ini sepadan, karena meningkatkan tingkat abstraksi berarti meningkatkan tingkat keandalan pemrograman. Efisiensi yang rendah dapat diatasi dengan membangun komputer yang lebih cepat. Jika kebutuhan memori terlalu tinggi, Anda dapat menambah ukuran memori. Hal ini tentu saja membutuhkan waktu dan uang, namun dapat diatasi. Namun hanya ada satu cara untuk mengatasi kesalahan dalam program: kesalahan tersebut harus diperbaiki. Atau lebih baik lagi, jangan lakukan itu. Lebih baik lagi, buatlah komitmen tersebut sesulit mungkin. Dan inilah tujuan semua penelitian di bidang bahasa pemrograman. Dan Anda harus menerima hilangnya efisiensi.

Tujuan dari ulasan ini adalah untuk mencoba memberikan gambaran kepada pembaca tentang ragam bahasa pemrograman yang ada. Di kalangan programmer sering kali terdapat opini tentang “penerapan universal” suatu 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 berupaya meningkatkan kualifikasi profesionalnya. Dan untuk ini Anda tidak perlu takut bereksperimen. Lalu bagaimana jika semua orang di sekitar Anda menulis dalam C/C++/VB/Pascal/Perl/Java/… (garis bawahi seperlunya)? Mengapa tidak mencoba sesuatu yang baru? Bagaimana jika cara ini ternyata lebih efektif? Tentu saja, sebelum Anda mulai menggunakan bahasa baru, Anda perlu mempelajari semua fiturnya dengan cermat, termasuk ketersediaan implementasi yang efektif, kemampuan untuk berinteraksi dengan modul yang ada, dll., dan baru kemudian mengambil keputusan. Tentu saja, selalu ada risiko salah jalan, tapi... Hanya mereka yang tidak melakukan apa pun yang tidak melakukan kesalahan.

Dan satu hal lagi. Saya pernah mendengar dan terkadang berpartisipasi dalam diskusi seperti “bahasa A lebih baik daripada bahasa B.” Saya berharap setelah membaca ulasan ini, banyak orang akan yakin akan tidak ada gunanya perselisihan semacam itu. Maksimal yang bisa dibicarakan adalah keunggulan suatu bahasa dibandingkan bahasa lain ketika menyelesaikan suatu masalah tertentu dalam kondisi tertentu. Di sinilah terkadang ada sesuatu yang perlu diperdebatkan. Dan solusinya terkadang sama sekali tidak jelas. Namun, berdebat “secara umum” jelas merupakan kebodohan.

Artikel ini dimaksudkan sebagai respon terhadap mereka yang meneriakkan “bahasa X HARUS MATI”. Saya berharap jawabannya cukup memadai dan meyakinkan. Saya juga berharap artikel tersebut selain bersifat polemik juga memiliki nilai edukasi.



 


Membaca:



Mengapa prosesor di komputer saya menjadi sangat panas?

Mengapa prosesor di komputer saya menjadi sangat panas?

Saya tidak berencana untuk menulis artikel ini; saya diminta untuk menulisnya oleh banyak pertanyaan tentang laptop yang terlalu panas, membersihkannya, dan mengganti pasta termal. Pada...

Apa itu mode "Turbo" di browser modern: Chrome, Yandex, Opera

Apa itu mode

Banyak browser web terkenal, misalnya Yandex.Browser, memiliki mode "Turbo" khusus, yang dapat meningkatkan kecepatan secara signifikan...

Templat paling sederhana. Templat HTML sederhana. Mamba - templat satu halaman

Templat paling sederhana.  Templat HTML sederhana.  Mamba - templat satu halaman

Semua templat yang disajikan untuk situs web Anda dibuat berdasarkan versi modern HTML5 dan CSS3. Selain itu, penulis menggunakan fitur-fitur modis seperti...

3 basis informasi terdistribusi

3 basis informasi terdistribusi

Membuat dan mengonfigurasi database terdistribusi (RDB) di 1C 8.3 Akuntansi (dan konfigurasi lainnya) diperlukan jika hal ini tidak memungkinkan...

gambar umpan RSS