Bagaimana menurut anda? Apa urutan pembelajaran bahasa pemrograman ideal yang akan mencakup sebagian besar bahasa dan paradigma yang banyak digunakan saat ini serta membantu untuk memahami dasar-dasar, ide, dan praktik pemrograman umum? Anda bahkan dapat menyarankan urutan pembelajaran untuk paradigma daripada bahasa.
NB: Ini adalah port dari pertanyaan yang saya ajukan di stackoverflow dan ditutup karena bersifat subyektif dan argumentatif.
programming-languages
Gulshan
sumber
sumber
Jawaban:
Python, Lisp, C, Haskell
Dengan asumsi pertanyaan adalah tentang urutan pembelajaran yang ideal untuk pendatang baru untuk pemrograman (karena tangan lama di pemrograman akan memiliki urutan belajar mereka sendiri (kemungkinan tidak disengaja)), saya sarankan membaca esai Norvig tentang cara belajar pemrograman dalam 10 tahun , kemudian:
Python : Mulai dengan bahasa yang dinamis, tingkat tinggi, OO & fungsional. Karena sangat penting bagi pemula untuk merasa ASAP produktif, dan tidak dimatikan oleh sintaksis asing, kurangnya perpustakaan, kurangnya multi-platform, kurangnya sumber belajar, dan kurangnya komunitas. Python sangat mudah dibaca, memiliki banyak perpustakaan yang bagus (terutama perpustakaan ilmiah - ilmuwan / insinyur modern harus tahu cara memprogram), mudah dijalankan dari sebagian besar OS, memiliki banyak tutorial dan seluruh buku gratis, dan umumnya ramah pengguna - semuanya masih cukup kuat untuk tumbuh bersama Anda saat Anda menjadi programmer canggih yang mengerjakan masalah besar. Penting juga untuk memperkuat + konvensi penting yang bermanfaat bagi seorang pemula: keterbacaan kode sangat berharga, dan Anda harus menulis kode untuk diri sendiri dan orang lain agar mudah dipahami.
Lisp: Khususnya, paling tidak membaca Struktur dan Interpretasi Program Komputer atau menonton video SICP , dan membuka mata seseorang dengan sangat lebar dengan melihat fondasi dan kekuatan pemrograman yang ekspresif - orang dapat melakukan banyak hal dengan sedikit saja. Pelajari bagaimana Lisp dapat mengekspresikan tidak hanya paradigma fungsional, tetapi OO, logis / deklaratif, dan banyak lagi - seperti pembuatan bahasa baru khusus domain. Baca PAIP Norvig untuk menyaksikan apa yang dapat dilakukan oleh seorang master dengan bahasa tersebut. Kemudian lihat Clojure , dialek Lisp modern yang bisa menjadi salah satu Hal Besar Berikutnya.
C: Hanya karena itu adalah lingua-franca komputasi. :) Mungkin opsional hari ini jika seseorang terutama seorang programmer dalam domain non-software tertentu. Saya merasa jelek tapi perlu diketahui untuk mendapatkan penghargaan untuk perangkat keras yang mendasarinya. Pergilah dengan K&R , tentu saja.
Haskell : Kekuatan fungsional murni. Di mana Com.Sci saat ini. teori dan kekuatan ekspresif praktis bertemu. Lihat Haskell di Dunia Nyata .
Setelah tur di atas, orang akan sangat mahir dalam menangani masalah dan mengekspresikan solusi dalam kode, dan benar-benar nyaman dengan paradigma di sini :
sumber
Inilah yang akan saya lakukan:
Python (atau Ruby atau Lua): Bahasa yang ditafsirkan, tanpa jenis, Anda bisa menyelesaikannya dalam beberapa baris. Perpustakaan besar (Python adalah yang terbaik untuk ini saya kira). Anda dapat masuk ke dalam algoritma karena tidak ada gangguan. Tidak perlu kompilasi, jalankan saja. Selain itu, dengan Python Anda secara implisit mengajarkan gaya yang baik, karena lekukan dalam Python adalah wajib. Anda dapat mengajarkan Orientasi Obyek juga (dalam Lua lebih merupakan masalah). Tujuannya di sini adalah untuk bersenang-senang, dan menunjukkan kepada siswa apa yang dapat dilakukan.
C ++ (atau mungkin Java): Bahasa cepat yang diketik. Jika Anda membutuhkan Orientasi Objek, maka Anda sudah tahu beberapa konsep. Gagasan utamanya adalah "menerjemahkan" apa yang Anda lakukan dengan Python dan melakukannya dengan batasan baru (terutama tipe). Sekarang jika Anda memiliki konsep yang benar, menambahkan tipe bukanlah masalah. Langkah selanjutnya adalah berpikir lebih rendah (Java tidak membantu di sini), dan mengajarkan petunjuk dengan baik . Maksud saya menjelaskan tentang ruang alamat, CPU, OS, sedikit sehingga Anda dapat mulai melihat di bawah program Anda. Bahasa yang dikompilasi memperkenalkan perbedaan antara interpretasi dan kompilasi, sangat berguna untuk menjelaskan apa itu bahasa mesin, dll.
Majelis : Akhirnya, tanpa sihir, Anda hanya berbicara dengan mesin. Ada perdebatan tentang sintaks Intel dan GAS, itu tidak penting. Jika Anda memiliki MIPS, saya percaya lebih baik untuk mengajar, tetapi saya kira x86 lebih nyaman karena lebih luas (x86_64 lebih baik karena memiliki lebih banyak register dan basa-basi). Anda hanya perlu menghapus beberapa kerumitan dan membiarkan siswa menyelidiki lebih lanjut jika mereka mau.
(Ini 3 pertama adalah "kedalaman". Sampai sekarang, kami sudah turun sampai Anda menyentuh bagian bawah, yang "dekat dengan logam", seperti yang mereka katakan. Saya pikir ini sangat penting, banyak pertanyaan dalam pemrograman adalah dipecahkan ketika Anda memiliki gagasan yang jelas tentang apa yang terjadi. Ketika Anda mengetahui hal ini, Anda dapat memperoleh pengetahuan lebih lanjut dengan percaya diri.)
Skema (atau Common Lisp atau Clojure): Seperti yang dikatakan @dukeofgaming, bahasa Lisp memungkinkan Anda mengajar rekursi dengan baik (untuk Skema ini yang terbaik, karena tidak memiliki loop eksplisit). Tetapi saya akan pergi dan mengajarkan dua hal lain: penutupan dan makro. Macro adalah apa yang memisahkan bahasa Lisp dari yang lain. Secara pribadi saya tidak suka skema makro tetapi ini tidak terlalu penting. Saya pikir makro Clojure bagus, misalnya (tetapi rekursi di Clojure tidak bersih, karena JVM tidak memiliki rekursi ekor). Penutupan adalah konsep yang sangat penting, setelah Anda grok, Anda "melihat" Javascript secara instan. Setelah mempelajari C ++, Python, dan Lisp, Javascript menjadi "sepele".
Haskell : Untuk bahasa fungsional, saya tidak berpikir Anda bisa mengalahkan Haskell. Lisp dan Skema dianggap fungsional, tetapi untuk menekankan pemrograman fungsional, Anda harus memaksa siswa untuk berpikir tanpa status. Haskell juga memiliki hal-hal lain yang sangat bagus, seperti kari, dan pencocokan pola untuk "perusakan". Saya tidak tahu banyak tentang Haskell, tetapi keringkasan kode yang dapat Anda tulis sangat indah. Mengenal Haskell dengan baik membuat jalan untuk memahami Erlang jauh lebih mudah.
Keempat : Bahasa tumpukan. Ini benar-benar merusak logika Anda lagi (jika Lisp dan Haskell tidak cukup). Saya akan mengajarkan Jones's Forth karena mereka tahu perakitan dan kemudian Anda benar-benar dapat memahami apa yang sedang terjadi. (Mengetahui Keempat membuka PostScript, misalnya.)
(Jadi 3 yang terakhir ini adalah keluasan yang Anda katakan. Bagi saya, bahasa-bahasa ini cukup aneh sehingga mereka mengubah cara berpikir Anda. Mereka setidaknya melakukannya untuk saya. Dan saya pikir dengan ini, Anda cukup memahami paradigma untuk belajar bahasa baru sangat cepat.)
Secara opsional, Anda dapat mempelajari ini:
SmallTalk : Bahasa murni Berorientasi Objek. Untuk melihat apa yang terjadi ketika Anda menganggap serius Orientasi Objek, bahasanya tidak perlu "jika", "untuk". Semuanya adalah pesan: realisasi besar lagi. (Ini akan membuat Objective-C mudah sekarang.)
Go : Bahasa (indah) dengan penekanan pada konkurensi. Saya menemukan Go sangat bagus dan nyaman untuk diprogram.
Prolog : Paradigma pemrograman lain. Saya belum menulis Prolog apa pun, tetapi saya mengerti bahwa ini adalah bahasa lain yang menggugah pikiran.
sumber
Serius, saya mungkin telah mempelajari BASIC, COBOL, Fortran, Forth, Pascal dan Prolog di waktu saya, tetapi saya tidak pernah secara khusus perlu menggunakannya dan saya tidak dapat benar-benar melihat cara di mana mereka telah mempengaruhi penggunaan saya terhadap orang lain. bahasa, kecuali mungkin salah menerapkan paradigma dari satu ke yang lain. Butuh waktu lama bagi saya untuk melupakan BASIC cukup untuk benar-benar menulis Pascal terstruktur, beberapa tahun untuk berhenti menulis kode Pascal dalam C, dan beberapa tahun lagi untuk benar-benar grok OOP ketika saya mulai menggunakan Objective-C dan Java. Di sisi lain, karena saya telah bekerja (hampir) secara eksklusif dalam bahasa OO saya dapat berkonsentrasi pada peningkatan penggunaan bahasa OO saya, tanpa mencoba membuatnya terlihat seperti Skema atau PostScript.
sumber
Sulit untuk mengklaim bahwa urutan apa pun ideal, tetapi saya akan membuat rencana yang dapat saya benarkan:
C
Belajar C menuntut kesabaran dan ketekunan, dan akan memperkenalkan Anda pada cara-cara dasar bahwa komputer menangani data dan menunjukkan kepada Anda serangkaian tanggung jawab terluas yang dapat diterima oleh seorang programmer untuk menangani mesin seperti itu.
Perl
Sebagai penangkal kekakuan yang dibutuhkan oleh C, coba Perl yang luar biasa memaafkan. Apa yang memakan waktu satu minggu untuk menulis dalam C Anda dapat menulis dalam satu jam dalam Perl. Ini memperkenalkan jenis kesenangan yang berbeda yang dapat ditemukan dalam pemrograman, dan menunjukkan bagaimana mengecualikan perhatian dan detail tertentu membebaskan programmer untuk fokus pada hal-hal yang berbeda.
C ++ , atau mungkin Java
Selanjutnya lihat bagaimana fokus C pada aspek pemrograman tingkat rendah dan primitif berfungsi sebagai dasar untuk meningkatkan tingkat abstraksi, mencatat perdagangan yang dilakukan orang dengan efisiensi ketika bergerak maju dalam abstraksi. Jelajahi cara membentuk abstraksi yang masih dapat mempertahankan efisiensi yang penting bagi program Anda.
Gangguan umum
Ini adalah hadiah untuk kerja keras sebelumnya. Anda akan menemukan gaung dari apa yang Anda pelajari dalam semua bahasa sebelumnya, dan melihat betapa konyolnya begitu banyak dari konsesi sebelumnya ketika memprogram di Lisp. Preprocessor C dan templat C ++ menyiapkan satu untuk menghargai sistem makro Lisp. Anda akan mendapatkan kembali kemudahan berekspresi dari Perl, peluang untuk optimasi tingkat rendah dari C, kemampuan membangun abstraksi C ++ atau Java, dan melewati semuanya. Tak satu pun dari tiga sebelumnya - mungkin kecuali debugger Perl - akan mempersiapkan Anda untuk pengalaman pemrograman interaktif dengan REPL yang mampu ("baca, evaluasi, cetak lingkaran"). Bekerja dengan gambarberbasis lingkungan - yang mengubah hubungan antara kode sumber Anda dan gagasan "program yang dapat dieksekusi" - akan mengubah seluruh gagasan Anda tentang apa artinya membangun sebuah program.
Di luar keempatnya, mengeksplorasi gaya pemrograman lain, seperti pemrograman fungsional di Haskell, atau pemrograman logika dalam Prolog, membuat pemahaman yang lebih komprehensif tentang berbagai pengetahuan pemrograman, jika Anda mau - tetapi pada saat itu waktu Anda lebih baik dilayani dengan meningkatkan keahlian Anda - pengetahuan yang mendalam - dengan bahasa apa pun yang Anda tahu.
Setelah mencicipi bahasa yang cukup berbeda, pandangan Anda akan meningkat untuk fokus pada ide-ide yang melampaui salah satu dari mereka. Ini seperti perbedaan antara belajar mengendarai mobil ayah Anda dan mengetahui cara mengendarai mobil apa pun : Anda mungkin tidak menikmati mengendarai mini-van sewaan selama beberapa hari, mengetahui sepenuhnya kenikmatan mengendarai mobil sport favorit, tetapi Anda akan mengetahui cara mengoperasikannya, dan pasti akan membujuk lebih banyak dari binatang buas itu daripada seorang amatir.
sumber
1. Smalltalk
Awalnya dirancang setidaknya sebagian sebagai cara bagi anak-anak untuk menggunakan komputer untuk belajar. Sintaksnya cukup sederhana untuk dijelaskan dalam paragraf. Ini, seperti LOGO, mencontohkan prinsip "penghalang rendah untuk masuk, langit-langit tinggi".
Smalltalk adalah bahasa OO murni dalam arti bahwa "semuanya adalah objek".
Ini juga mengajarkan banyak teknik fungsional, terutama dalam API Pengumpul: pesan rantai, fungsi tingkat tinggi, peta, pengurangan, dan sebagainya.
The Squeak komunitas bersemangat dan menyambut. Anda juga akan melihat banyak diskusi tentang teknik-teknik canggih: seperti komunitas lisp, ada banyak Smalltalker yang sangat berpengalaman di milis yang bersedia berbagi pengetahuan mereka. (Tidak ada salahnya bahwa komunitas mencicit memiliki sub-populasi besar pendidik profesional.) Ada juga daftar lain untuk pemula.
2. PROLOG
Sebuah logika pemrograman bahasa yang akan memberikan pandangan yang sangat berbeda dari perhitungan untuk hampir semua bahasa lainnya. Prolog juga sangat deklaratif (tetapi tidak sepenuhnya:
!
operator memotong atau dapat memiliki efek semantik yang signifikan pada predikat).3. Gangguan Umum
Skema Pengganti di sini jika Anda suka. Common Lisp mendukung banyak paradigma, terutama OO dan fungsional. Ini juga memiliki sejarah panjang (Lisp adalah bahasa tertua kedua yang masih banyak digunakan: hanya FORTRAN yang lebih tua).
4. Haskell
(Peringatan: Saya baru saja mulai mempelajarinya.) Mungkin bahasa fungsional paling murni di planet ini. Ini memiliki sistem tipe statis yang sangat canggih. Buku intro berguna ada.
5. C atau Delphi
Anda harus tahu cara kerja komputer. Anda perlu tahu bagaimana sebenarnya fungsi memori dan CPU. Keduanya secara tradisional "dekat dengan logam" dan memiliki komunitas yang mendorong pemikiran tentang bagaimana bahasa mereka dikompilasi untuk berkumpul.
Kenapa memesan ini?
Smalltalk sangat mudah dipelajari, sehingga Anda dapat dengan cepat mulai berkonsentrasi untuk menyelesaikan masalah daripada melawan kompiler ("penghalang masuk yang rendah"). Setelah Anda memulai pemrograman, tidak ada batasan buatan tentang apa yang dapat Anda lakukan - "langit-langit tinggi".
Setelah Anda memiliki gagasan yang adil tentang cara kerja OO (dan - dengan ketentuan bahwa ada banyak pengertian berbeda tentang apa arti "OO" - wajar saja untuk mengatakan bahwa OO mendominasi pasar), pindah ke Prolog memastikan bahwa Anda tidak memulai berpikir bahwa OO adalah satu-satunya cara. Prolog sangat berbeda dengan kebanyakan bahasa, dan akan meregangkan otot mental Anda sehingga Anda tidak mulai berpikir bahwa Anda tahu segalanya.
Lisp umum, pada gilirannya, adalah bahasa orang dewasa. Ini memiliki standar yang matang, telah memimpin desain bahasa selama beberapa dekade (bersama dengan Smalltalk) - semua fitur baru yang mewah yang baru saja diperoleh bahasa favorit Anda? Peluang adalah ide yang diinkubasi dalam Lisp atau Smalltalk. Lisp umum juga agak berkutil, dan Anda akan menemukan kutil ke mana pun Anda pergi.
Haskell keempat dalam daftar karena (saya diberitahu: Saya baru saja mulai mempelajarinya) kemurniannya berarti beberapa hal yang sangat umum (seperti I / O) lebih sulit dilakukan daripada dalam bahasa yang kurang murni fungsional. Orang-orang Haskell juga menggunakan beberapa terminologi yang cukup eksotis (kata-kata seperti "catamorphism", katakan), dan Anda mungkin akan lebih baik dengan beberapa pengalaman pemrograman di bawah ikat pinggang Anda sebelum menanganinya. (Tapi aku harus mengulanginya, aku baru saja mulai mempelajarinya! Ambil pendapat ini dengan sedikit garam!)
Dan mengapa C / Delphi bertahan? Karena kecuali Anda bekerja di sistem embedded, Anda benar-benar tidak perlu belajar pemrograman berpikir bahwa hanya ada manajemen memori manual. Pengumpulan sampah bekerja cukup baik untuk mesin level 1980-an. Anda telepon sekuat itu!
Akhirnya, saya tidak memasukkan Erlang di daftar di atas meskipun saya benar-benar harus.
sumber
Python. Pengantar pemrograman yang sangat baik. Ini juga akan terkait dengan paparan pemrograman sebelumnya.
Skema. Juga merupakan pengantar yang bagus untuk pemrograman. Jika berhadapan dengan pemrograman pemula, Anda mungkin ingin mengajarkan ini terlebih dahulu dan Python kedua. Salah satu alternatif akan menjadi Python pertama dan kemudian Common Lisp alih-alih Skema: lebih banyak pekerjaan, tetapi lebih banyak hadiah.
C. Bahasa tingkat rendah yang tetap dekat dengan silikon. Baik untuk mempelajari apa yang bisa dilakukan komputer. Anda bisa mengganti beberapa bentuk bahasa assembler, tetapi C cukup dekat dengan dasar-dasarnya dan lebih mudah untuk dikerjakan.
Prolog. Sebagai alternatif, ganti bahasa tujuan umum gaya deklaratif, jika Anda dapat menemukan yang Anda sukai dengan lebih baik.
Haskell. Untuk sistem tipe dan fungsionalitas murni, jika tidak ada yang lain.
Ada beberapa kandidat di sini, karena tidak mungkin untuk mencakup semua konsep dengan enam bahasa. Lisp umum layak untuk dipelajari, jika hanya untuk sistem makro dan sistem objek (yang berbeda dari kebanyakan yang pernah saya lihat). Keempat, Tcl, dan APL adalah semua bahasa aneh yang telah melihat beberapa keberhasilan, dan salah satunya akan baik untuk mencegah siswa dari merasa seperti dia telah mempelajari semuanya. Erlang akan bagus untuk konkurensi.
sumber
Banyak jawaban bagus telah disediakan, tetapi saya tidak melihat ada yang menawarkan SQL. Ini adalah binatang yang sama sekali berbeda dari yang lain yang terdaftar dan sangat penting bagi setiap programmer yang harus berurusan dengan database.
Anda mungkin juga ingin mempertimbangkan beberapa 'bahasa' skrip tingkat OS, seperti Batch, grep, awk, dll. 'Make' juga termasuk dalam kategori ini.
Satu bahasa lain yang mungkin ingin Anda pertimbangkan (jika belum sepenuhnya mati) adalah COBOL. Ini cukup berbeda dari bahasa prosedural lain yang layak disebutkan. Variasi C, Fortran, Basic, dll telah menjadi sangat mirip sehingga setelah Anda terbiasa dengan satu, pindah ke yang lain bukanlah masalah besar, tetapi COBOL tidak memiliki banyak konstruksi yang diterima begitu saja oleh yang lain. (Sudah setidaknya 20 tahun sejak saya melakukan sesuatu dengan COBOL sehingga pengamatan saya mungkin tidak lagi valid tentang bahasa ini.)
Anda mungkin ingin menyebut APL hanya dari sudut pandang historis - atau membiarkannya beristirahat dengan tenang. Pilihanmu.
sumber
saya akan menyarankan pertama kali membaca Eric Raymonds "Bagaimana menjadi seorang hacker" karena ia memiliki beberapa poin yang sangat menarik tentang cara memulai, termasuk Lisp yang memiliki gagasan "kode adalah data dan data adalah kode".
Untuk pemrograman saya juga menyarankan Haskell, Prolog, SQL dan bahasa assembly (hanya beberapa).
Terlepas dari apa yang ingin Anda pelajari, luangkan waktu untuk mempelajarinya dengan benar dan menulis jumlah kode yang tidak sepele. Ini seperti naik sepeda - Anda tidak bisa mempelajarinya dari buku.
sumber
Pertama> Apa yang ingin Anda lakukan saat memulai pemrograman? Mempelajari cara menjadi pemrogram game berbeda dengan mempelajari cara menjadi pemrogram basis data untuk sebuah bisnis ... berbeda dengan pemrogram berbasis web ...
Kedua> Begitu Anda mulai belajar, apakah Anda ingin mulai tinggi dan bekerja dengan cara Anda turun? Atau mulailah dari yang rendah dan terus maju. Belajar C # (tingkat tinggi) jauh berbeda dari belajar Majelis (tingkat rendah).
Pilihan besar akan tergantung pada apa yang ingin Anda lakukan. Memprogram driver kemungkinan besar akan mencakup C atau Majelis ... Memprogram situs web adalah PHP, C #, asp, dll ... Anda tidak akan menyentuh perakitan untuk pemrograman web ... dll ...
Sejauh dasar-dasar ... begitu Anda memutuskan APA yang ingin Anda lakukan, lebih mudah untuk memilih bahasa. Saya, misalnya, telah menjadi analis data di rumah sakit. Jadi "pilihan" bahasa saya adalah SQL / TSQL / DB2 untuk akses data, C # WPF untuk klien windows, Silverlight untuk klien web, beberapa RPG / CL untuk logika back-end IBM ...
Secara pribadi saya tetap berpegang pada buku yang bagus + membangun program Anda sendiri untuk berlatih bahasa. Saya suka APress dan suka membaca C # 2008 Illustrated ketika belajar C #. Mereka memiliki buku-buku lain yang mencakup dasar-dasar untuk yang tidak terpelajar serta ahli.
sumber
Seorang pendatang baru hanya perlu satu bahasa untuk memulai, setelah mempelajari bahasa kedua, mereka sudah maju melampaui banyak pengembang yang bersaing. Saya akan belajar dalam urutan sebagai berikut:
Anda mungkin bertanya "di mana C ++?" dan bagaimana dengan X? Sejujurnya, mempelajari berbagai bahasa melakukan beberapa hal: memperkaya pengalaman Anda, dan memberikan dorongan untuk mempelajari lebih banyak bahasa. Daftar bahasa yang saya kenal dengan baik (Java, C #, Ruby, C ++, Javascript) semuanya berorientasi objek - tapi itu terutama karena itulah yang harus saya lakukan di tempat kerja setiap hari. Daftar bahasa yang saya gunakan (Smalltalk, Python, Erlang, JESS, C, Assembly [Motorola 6502/6510], Go) semuanya mengajari saya pelajaran yang berharga. Setidaknya saya bisa mengerti apa yang terjadi dengan bahasa-bahasa itu. Ada banyak hal yang belum saya jelajahi, tetapi mungkin saja di masa depan. Ada beberapa bahasa markup juga: HTML, XSL: FO, XSLT, CSS, XML, SGML yang membutuhkan paparan orang jika mereka akan bekerja dengan web dengan cara apa pun.
Setelah mempelajari setidaknya dua bahasa yang berbeda, saya benar-benar tidak berpikir Anda harus membatasi apa yang seseorang yang ingin pelajari memutuskan untuk mengambil berikutnya. Belajar harus menjadi pengalaman organik, dan terlalu banyak struktur dalam proses menciptakan sekelompok orang yang berpikir dengan cara yang persis sama. Jadi monokultur.
sumber
Sebagian besar jawaban ini tampaknya kurang lebih sama sehingga saya akan menawarkan pendapat yang berbeda. Saya sudah lama meyakini bahwa bahasa pertama yang terbaik adalah Tcl.
Mengapa? Pertama, sangat mudah dipelajari. Tidak ada banyak sintaks untuk bahasa sehingga siswa dapat lebih fokus pada konsep pemrograman dan lebih sedikit pada keanehan sintaksis bahasa tertentu. Pada tulisan ini Tcl memiliki tepat 12 aturan yang mengatur seluruh bahasa (naik dari sebelas selama beberapa dekade terakhir).
Untuk yang lain, Tcl hadir dengan bahasa GUI built-in yang fantastis, sehingga Anda bisa mendapatkan kepuasan yang relatif instan dan dapat mempelajari dasar-dasar pemrograman yang digerakkan oleh acara.
Ketiga, bisa diperluas. Ingin mengajar tentang pengulangan? Anda dapat menulis perintah yang melakukan pengulangan sehingga Anda tidak hanya dapat belajar cara menggunakan pengulangan ... hingga, Anda dapat mempelajari bagaimana pengulangan itu berbeda dari pengulangan sementara karena Anda benar-benar menulisnya sendiri.
Selain itu, karena dapat diperluas, ada segue yang mudah ke C. Anda dapat mempelajari dasar-dasar C, dan mempelajari cara a) memperluas Tcl dengan perintah baru yang ditulis dalam bahasa lain, atau b) belajar bagaimana menambahkan bahasa skrip ke program yang ditulis dalam C.
Setelah Anda mempelajari Tcl dan C, sebagian besar bahasa lain berada di antara kedua ekstrem itu dan seharusnya relatif mudah diambil. Daftar lengkap saya, dengan empat yang akan saya ajarkan setelah Tcl dan C adalah:
sumber
Bahasa Majelis, C, SQL, C #
Aku tahu, membosankan dan skool-tua. Dan seluruh pertanyaan mengabaikan bagian yang sangat sulit dari pemrograman, yaitu pemecahan masalah, pemodelan domain, dan konstruksi algoritma. Tapi inilah alasannya:
Anda tidak dapat memalsukan jalan Anda melalui bahasa assembly; Anda mendapatkannya atau tidak. kompiler tidak akan menyelamatkan Anda, tidak ada kerangka kerja atau overhead perpustakaan, dan Anda tidak dapat bersembunyi dari arsitektur mesin; ini adalah pemrograman murni (pada level add-two-number pemula)
setelah Anda menulis beberapa program bahasa rakitan lebih dari beberapa ratus baris, petunjuk dan manajemen memori tidak lagi misterius, dan Anda seharusnya sudah mulai memperhatikan pola dalam kode (jika, switch, array, loop, dll. ). C membawa pola-pola itu ke dalam sinar matahari dan membuatnya bersinar. Pustaka standar berguna tanpa menjadi besar, tetapi jangan repot-repot dengan makro / templat / dll. di panggung ini.
sekarang lompat ke database dengan SQL. Jangan berlebihan dengan prosedur tersimpan, cukup dapatkan dasar-dasar tabel dan kueri.
setelah Anda menulis beberapa program C lebih dari beberapa ratus baris, petunjuk, struktur, dan manajemen memori adalah sifat kedua, dan konstruksi prosedural adalah teman lama. Anda akan mulai memperhatikan pola tingkat tinggi: fungsi-fungsi ini selalu sesuai dengan struktur data ini, bagian kode ini sama seperti bagian kode kecuali untuk metode X, Y, dan Z, dan seterusnya. Tambahkan ke ini pemahaman Anda tentang data relasional dan sekarang Anda siap untuk bahasa berorientasi objek. Dengan kerangka kerja yang besar dan dokumentasi yang umumnya tumpul. Selamat Datang di dunia nyata! Jelajahi GUI, tulis aplikasi desktop, tulis situs web, tulis layanan web, tulis apa pun yang Anda suka. Dapatkan pekerjaan jika Anda ingin.
Apakah Anda sekarang pemrograman Jedi? Ninja kode? Tidak , sekarang Anda hanya kompeten. Tetapi Anda memiliki dasar yang kuat untuk berdiri untuk menjelajahi hal-hal menyenangkan baru yang mengkilap.
sumber
Anda membutuhkan dasar-dasar:
Setelah itu mungkin tidak masalah.
sumber
OKE, ini adalah hari terakhir untuk hadiah. Dan saya menambahkan jawaban saya. Urutan saya yang disarankan-
C, C ++, JAVA / C #, Python / Ruby, Bahasa lainnya (Assembly / Lisp / Prolog dll)
sumber
Skema, C, C ++
Saya akan menjadi bias dan menggunakan model universitas saya saat ini digunakan untuk kurikulum inti Ilmu Komputer. Saya menentangnya selama tahun pertama saya tetapi di tahun-tahun berikutnya saya bersyukur karenanya. Model ini didasarkan pada tidak memerlukan pengalaman pemrograman tetapi membutuhkan kemampuan untuk belajar.
Skema
Kami adalah Anda yang pertama belajar pemrograman, semakin sedikit sihir, semakin baik. Bahasa pengajaran Skema menyajikan definisi bahasa yang jelas dan masuk akal, serangkaian aksioma yang sangat kecil ("sihir") yang dapat Anda bangun dan kembangkan. Siapa pun yang dapat memahami fungsi dalam matematika dapat melacak dan menalar program Skema. Memulai dengan Skema menyediakan cara yang bersih namun kuat untuk memikirkan komputasi tanpa khawatir tentang detail spesifik bahasa.
C
Bergerak dari Skema ke C adalah hal yang drastis tetapi memungkinkan Anda mempelajari tentang pemetaan bahasa tingkat tinggi yang sangat penting ke bahasa tingkat rendah. Mempelajari model memori (pointer, heap, stack dll) dan bagaimana program dikompilasi dan dijalankan, bagaimana pointer, stack dan pekerjaan heap adalah keterampilan yang penting. Melalui pemahaman tingkat rendah ini, Anda dapat mulai menganalisis program di tingkat yang lebih tinggi (Big O). Anda bisa mulai menggulirkan tipe data abstrak Anda sendiri, bermain dengan implementasi yang berbeda (katakanlah tabel hash sederhana vs pohon biner untuk satu set).
C ++
Melalui pembelajaran C dan Skema kita mulai melihat paradigma yang berbeda dari bahasa pemrograman dan bagaimana mereka dapat berlaku untuk masalah yang berbeda. Sekarang Anda dapat mendekati aspek pemrograman yang paling menakutkan: pilihan dan trade off. Memprogram pilihan bahasa dapat memengaruhi kinerja, keterbacaan, kemampuan pemeliharaan, ketahanan, dll. Untuk memecahkan masalah yang lebih besar daripada yang dapat Anda pikirkan, pilihan ini bagus tetapi juga berbahaya. C ++ mencoba membuat pilihan sesedikit mungkin untuk programmer sebanyak mungkin. Melalui belajar C ++, Anda akan belajar cara melakukan trade off dan memilih sendiri untuk menyelesaikan masalah Anda.
Anda mungkin tidak menggunakan bahasa-bahasa ini dalam industri atau menyentuhnya lagi, tetapi proses mempelajarinya membantu Anda memahami bahasa lain yang akan Anda gunakan. Aspek lain adalah Anda mempelajari alat-alat di sekitar bahasa tertentu. Menjalankan gcc melalui baris perintah, mempelajari Vim, melangkah melalui program menggunakan GDB, membuat File make, memeriksa kode menggunakan SVN, menulis skrip shell untuk mengotomatisasi pengujian dll.
Pikiran Anda kurikulum inti juga memiliki program lain (arsitektur komputer, struktur data dan algoritma, kompiler, sistem operasi, dll). Jadi hanya mempelajari bahasa-bahasa ini saja tidak cukup untuk menjadi mahir dalam pemrograman.
sumber
Beralih dari bahasa dasar ke bahasa tingkat tinggi adalah cara yang harus ditempuh. Dengan begitu Anda masih memiliki gagasan tentang apa yang terjadi di belakang.
sumber
Python. Untuk menyelesaikannya, lakukan pemrograman biasa. Prosedural, OO dan (sampai batas tertentu) fungsional.
Ekspresi Reguler. Mereka berada di pustaka Python, tetapi ini adalah DSL yang terpisah.
Shell (BASH atau apa pun). "&", "|", ";" operator untuk menggabungkan proses sangat penting dan tidak menyenangkan dengan Python.
SQL Ini - untuk saat ini - lingua franca untuk akses data.
XHTML. Ini - untuk sekarang - lingua franca untuk presentasi data.
CSS.
Mungkin C jika itu perlu.
sumber
Mulai dekat dengan logam:
Sekarang masalah dengan pendekatan yang luas adalah bahwa tidak ada yang bisa menjadi sangat mampu dalam bahasa-bahasa ini tanpa belajar selama bertahun-tahun.
Kecuali jika niat Anda adalah untuk mengajarkan mereka "Halo dunia", yang akan memakan waktu sekitar satu bulan untuk semua 6.
sumber
Mengapa tidak langsung masuk dan pelajari VB atau C #. Keduanya menurut saya adalah bahasa lengkap mulai dari pemula hingga mahir, imho.
sumber