Apa Dampak Bahasa Scripting pada Programmer Junior? [Tutup]

18

Saya berdiskusi dengan salah satu guru saya tempo hari.

Kami memperdebatkan dampak yang dimiliki bahasa skrip sederhana (seperti Python atau Ruby) pada programmer junior.

Dia berpendapat bahwa bahasa scripting menimbulkan teknik pengkodean yang ceroboh karena pemula tidak mengerti apa yang sedang terjadi "di bawah tenda". Dia juga mengutip contoh lain tentang bagaimana bahasa scripting sering menyebabkan programmer mengabaikan kekhawatiran tentang efisiensi, manajemen memori, kompleksitas operasional, dll.

Saya berpendapat bahwa bahasa tingkat yang lebih rendah mungkin terlalu banyak untuk beberapa orang dan mereka mungkin menyerah sebelum mereka mengembangkan minat untuk pemrograman. Ketika saya mulai belajar bahasa pemrograman pertama saya (C), saya mendapat petunjuk dan menyerah karena konsepnya terlalu sulit (dalam pembelaan saya, saya baru berusia 14 tahun). Jika bukan karena Java, saya mungkin tidak menjadi programmer! Jika saya mulai dengan bahasa yang lebih sederhana dan kemudian menggali lebih dalam, saya merasa saya tidak akan menyerah dan saya akan belajar sebanyak yang saya mulai dengan C.

Kelas berakhir sebelum kedua belah pihak dieksplorasi sepenuhnya.


Sampai di sini, saya telah berkhotbah bahwa pemula harus mulai dengan bahasa scripting dan kemudian menggali lebih dalam; tetapi setelah diskusi itu, saya mulai bertanya-tanya apakah ini pemikiran yang salah.

Jadi, apa dampak bahasa scripting terhadap programmer junior?

joe_coolish
sumber
8
Saya tidak bermaksud untuk menjadi sombong
Singletoned
4
Saya belajar mengendarai mobil dengan transmisi otomatis. Kemudian, saya mendapatkannya dengan transmisi manual. Butuh waktu untuk belajar, dan saya merasa beruntung bahwa saya tidak harus mempelajari kopling dan bergeser bersama yang lainnya.
David Thornley
2
@ Singletoned: Benar. Entah bagaimana aku harus memikirkan xkcd.com/326 ...
2
Membuat saya memikirkan joelonsoftware.com/articles/ThePerilsofJavaSchools.html
P.Brian.Mackey
4
Secara pribadi saya pikir itu tidak wajar untuk belajar program rendah lalu tinggi. Kita belajar merangkak, lalu berjalan, berlari, bicara, lalu menulis. Tidak yakin apa logikanya untuk pembalikan tatanan alam di perguruan tinggi. Saya biasanya hanya mendengar orang menyimpulkan "karena jika sulit bagi saya untuk belajar maka perlu tetap keras untuk Anda". Bahkan Joel mengatakan ini. Saya kira siklus tidak akan pernah berakhir.
P.Brian.Mackey

Jawaban:

26

Saya tidak setuju. Pertama, bahasa skrip berada pada tingkat abstraksi yang lebih tinggi, dan tidak ada yang salah dengan ini. Pada awalnya seseorang hanya mencoba mempelajari prinsip-prinsipnya. Sebenarnya saya akan mengatakan bahwa memilih bahasa tingkat rendah dapat mendorong pengkodean yang buruk, karena kita harus berurusan dengan beberapa detail sebelum dapat memahaminya. Sebagai gantinya dengan bahasa yang lebih sederhana seseorang dapat mulai menulis kode yang bersih dan ringkas dari awal.

Kedua, ada banyak yang harus dipelajari dalam bahasa-bahasa ini. Sejauh mempelajari bahasa, saya akan mengatakan bahwa C lebih mudah daripada Python. Kita harus berurusan dengan pointer atau mengurus string, tetapi ada banyak konsep untuk dipelajari dengan Python. Pemahaman, orientasi objek, refleksi, metode sihir, fungsi kelas satu, lambdas, iterator dan generator, metaclasses: semua ini adalah bagian dari bahasa.

Saya pikir memulai dengan Python memungkinkan untuk belajar lebih banyak tentang pemrograman dan dengan kurva belajar yang lebih lembut. Bahasa tingkat rendah mungkin memiliki lebih sedikit abstraksi - sehingga kurang konsep umum untuk dipelajari - dan membanjiri pemula dengan detail yang mungkin ingin ia lakukan tanpa.

Andrea
sumber
1
+1, meskipun menurut saya C tidak mudah dipelajari daripada Python dalam arti apa pun. Mungkin ada lebih sedikit konsep untuk dipelajari secara keseluruhan, tetapi Anda akan belajar lebih banyak dalam jumlah waktu yang sama dengan Python. Dan tentu saja, jika C terlalu mudah, selalu ada C ++, yang mengajarkan Anda kompleksitas bahasa tingkat tinggi dan rendah. ;)
Martin
+1, ini adalah pemikiran saya! Saya berharap saya akan membaca ini sebelum kelas :)
joe_coolish
22

Tidak masalah dari mana Anda memulai. Itu penting ke mana Anda pergi setelah Anda mulai.

BASIC mungkin bukan bahasa yang paling elegan di planet ini, tetapi mencakup dasar-dasar pemrograman prosedural, dan itu sudah cukup untuk memulai.

Saya mulai dengan BASIC. Saya tidak tinggal di sana.

Steven A. Lowe
sumber
+1 untuk jawaban sempurna - menunjukkan dengan ringkas betapa salah tempat pertanyaan aslinya! (Sebagai kebetulan, saya mulai dengan BASIC juga ;-)
Péter Török
5
Saya heran berapa banyak orang yang tinggal di sana ..: o /
Gary Willoughby
1
Jawaban kecerdasan. Singkat, akurat dan to the point. Saya mulai dengan BASIC juga.
Michael Riley - AKA Gunny
11

Guru Anda benar, kecuali bahwa ia menganggap bahwa konsekuensinya adalah hal-hal buruk.

Jika Anda melihat belajar bahasa sebagai murni kegiatan akademik untuk mempelajari cara kerja komputer, maka ia benar. Jika Anda melihatnya sebagai cara untuk menyelesaikan sesuatu maka Anda benar.

Singletoned
sumber
6
Aku tidak setuju denganmu. Konsekuensinya adalah hal-hal buruk, karena konsekuensinya adalah ketidaktahuan. Ini berarti bahwa pada akhirnya, sesuatu akan pecah dan masalahnya akan berada pada tingkat abstraksi yang lebih rendah daripada yang Anda pahami, sehingga Anda tidak tahu cara memperbaikinya. Itu selalu hal yang buruk.
Mason Wheeler
6
Harus setuju denganmu. Konsekuensi dari tidak mengetahui apa yang terjadi di bawah tenda adalah kesederhanaan yang mendalam dan keterusterangan ekspresi tanpa khawatir tentang nuansa perangkat keras. Tingkat abstraksi yang lebih rendah adalah untuk desainer bahasa, bukan pengembang aplikasi.
S.Lott
1
@ Alasan: Tentu saja. Saya pernah menghasilkan uang dalam jumlah yang sangat besar dengan menghemat jumlah tim programmer yang tidak memiliki konsepsi tentang apa yang sebenarnya terjadi di bawah tenda, sehingga tidak dapat membuat sistem produksi mereka bekerja dengan baik, atau bekerja dengan andal. (Pernah karena pekerjaan semacam itu menyebalkan. Hidup ini terlalu singkat!)
William Pietri
1
@Mason - Saya setuju dengan apa yang Anda katakan, bahwa penting untuk memiliki pengetahuan itu jika Anda akan memprogram secara profesional. Saya telah menemukan pengetahuan saya tentang pointer, struktur diskrit, dan kalkulus lambda sangat berharga. Saya telah terjebak dalam tim di mana anggota tim saya tidak memiliki keterampilan ini dan mereka akhirnya membuat kode yang terlalu rumit atau sangat buggy. hanya karena mereka tidak tahu yang lebih baik. Sepertinya kadang-kadang perguruan tinggi memberi makan siswa CS susu terlalu banyak dan tidak cukup daging, tetapi di sisi lain, jika mereka memberi makan daging pemrogram pemula, mereka berisiko kehilangan mereka.
joe_coolish
1
@ Jo: Menurut Joel, membuat orang yang tidak bisa mengatasinya drop out adalah intinya. Dan bukan hanya seorang programmer komputer tetapi juga seorang pengguna komputer , seseorang yang secara teratur harus bekerja dengan program-program mengerikan yang hanya dapat saya asumsikan diciptakan oleh coders yang tidak kompeten, saya benar-benar berharap bit "membuat mereka keluar" lebih sukses!
Mason Wheeler
5

Saya pikir "bahasa scripting" adalah kata yang mengerikan, yang sangat ketinggalan zaman atau paling sesuai dengan kelas bahasa domain tertentu. Guru Anda hanya menyelaraskan semua yang jelas-jelas tidak ia pahami tentang poros kejahatan.

Perbedaan yang masuk akal untuk dibuat adalah bahwa antara bahasa tingkat tinggi dan bahasa tingkat rendah, atau antara yang diketik secara statis dan dinamis, yang benar-benar ortogonal.

Assembler adalah level rendah yang diketik secara dinamis (jika berbicara tentang tipe masuk akal sama sekali), C adalah level rendah yang diketik secara statis, Ruby adalah tingkat tinggi yang diketik secara dinamis, Haskell adalah tingkat tinggi yang diketik secara statis. Java bukan tingkat tinggi atau rendah yang diketik secara statis, C ++ adalah tingkat tinggi dan rendah yang diketik secara statis. Dan seterusnya.

Diskusi hanya bisa, paradigma mana yang lebih cocok untuk programmer pemula.
Saya cukup yakin pemrograman tingkat rendah mungkin bukan satu. Mungkin, beberapa waktu yang lalu di awal 90-an, ketika Anda benar-benar dapat menghasilkan hasil yang menarik dalam waktu yang wajar dengannya.
Tetapi pemrograman didorong oleh hasrat. Gairah dipupuk oleh hadiah. Oleh karena itu, pemrogram entry level harus mulai dengan alat yang bermanfaat. Alat tingkat rendah tidak lagi bermanfaat, karena ada lautan alat tingkat tinggi yang memberi Anda hasil yang sama dalam sepersekian waktu.

Pemikiran manusia itu abstrak. Ketika kita belajar untuk memahami dunia, kita melakukannya dengan abstraksi berbutir kasar dan kita memerinci sesuai kebutuhan.
Agar seorang anak dapat memahami lingkungannya, Anda tidak akan mengajarkan matematika, lalu fisika, kimia, biologi, lalu sejarah, sosiologi, dan filsafat. Anda memberikannya sebuah model dunia yang sangat sederhana untuk diatasi dan akan, dengan sendirinya lama untuk melewatinya, tanpa akhir mengajukan pertanyaan kepada Anda ketika muda dan sepenuhnya meniadakan otoritas Anda nanti.

Itulah cara kami berpikir. Otak manusia hanya dapat memproses jumlah "unit" informasi yang terbatas, tetapi tingkat keabstrakan tidak banyak berarti dalam kuantisasi informasi. Misalnya: membaca ungkapan '34 * 75 'kepada kami lebih mudah bagi kami daripada menghitungnya, sedangkan untuk komputer sebaliknya. Untuk mengenali (dan dengan demikian abstrak) sekelompok piksel hitam menjadi garis berlekuk-lekuk, yang kemudian dapat dikenali (dan dengan demikian lagi diabstraksikan) menjadi digit individu adalah sejumlah besar pekerjaan.
Nenek saya mengerti ide membuka file. Namun dia tidak memiliki pemahaman di bawah level itu. Dan sejujurnya, jika dia harus belajar ini dengan terlebih dahulu mempelajari cara kerja internal perangkat keras dan sistem operasi dan apa yang tidak, dia tidak akan pernah sampai di sana.

Ada banyak orang di luar sana, yang terlalu rumit, karena mereka tidak pernah diajarkan untuk berpikir dalam hal solusi yang jelas, ringkas dan dengan demikian elegan, tetapi menghabiskan terlalu banyak waktu untuk repot-repot dengan rincian tingkat rendah yang dapat dipertukarkan dan memecahkan masalah terhadap mereka. Mengajar orang untuk berpikir seperti komputer adalah pendekatan terburuk untuk pemrograman.
Nilai pemrograman terletak pada menemukan solusi untuk suatu masalah. Mengekspresikannya sebagai kode benar-benar lebih membosankan, tugas mekanis dan harus dilakukan dengan alat apa pun yang cocok.

Oh, dan jangan khawatir tentang tidak mengerti pointer. Saya memiliki masalah yang sama pada usia yang sama. Masalahnya di sini juga adalah kurangnya abstraksi. Klasik Anda belajar tentang petunjuk dari beberapa buku C dan sementara Anda berjuang untuk memahaminya, ini sejalan dengan alokasi memori dan dengan demikian dengan memori tumpukan dan tumpukan dan sebagainya. Konsep abstrak di balik pointer adalah tipuan. Variabel, yang menyimpan indeks ke dalam array tertentu hanya itu (sebenarnya itu benar-benar sama di C, di mana array spesifik adalah ruang alamat Anda), dan Anda tidak perlu aritmatika penunjuk untuk ini.
Ini hanya dimaksudkan untuk menggambarkan, bahwa memilih abstraksi tingkat tinggi membuat banyak hal lebih mudah untuk dipahami.

EDIT: dan ketika harus mengetik, saya lebih suka bahasa yang diketik secara statis. Dan saya pikir pemrogram entry level harus dengan jelas memahami konsep tipe (yang abstrak).

back2dos
sumber
3

Tidak ada yang sederhana tentang Python. Lihatlah Unicode dan meta-programming.

Christopher Mahan
sumber
Saya setuju bahwa Python bisa sangat kompleks dan SANGAT kuat. Tetapi dasar-dasarnya (manipulasi string, manipulasi array, dll) jauh lebih mudah dalam Python daripada di C.
joe_coolish
1
Python sangat sederhana untuk memulai dan banyak tugas sehari-hari adalah urutan besarnya lebih sederhana daripada misalnya dalam bahasa sistem. Tidak, bahasa secara keseluruhan, detail mengerikan dan fitur-fitur canggihnya tidak sederhana (ini berlaku untuk semua bahasa non-mainan). Tapi itu bukan pertanyaannya.
1
Lalu mengapa saya jika searchstring.lower () di filecontent.lower (): tidak berfungsi? karena bom dalam file UTF-16LE sql di tfs di windows dengan Python2.7. Itu tidak menyenangkan. membuatnya bekerja. Butuh beberapa jam. string.find () juga tidak berfungsi ... Argghhh!
Christopher Mahan
1
Bagaimana Unicode lebih mudah ditangani di C?
dan04
3

Saya melihat masalah lain yang jauh lebih dalam.

Bahasa unityped tidak memaksa seseorang untuk memperhatikan jenis, untuk berpikir dalam jenis. Ini bagus dan bagus selama saya memiliki skrip kecil dengan beberapa string dan angka yang dikonversi satu sama lain tanpa memperhatikan. Tetapi saatnya akan tiba ketika ini akan pecah. Tiba-tiba, program akan rusak, dan setiap perbaikan cepat akan menyebabkannya rusak lagi.

Atau, programmer wannabe pemula menemukan bahwa ia akan memerlukan sejumlah daftar alih-alih daftar tupel, tetapi tidak akan memiliki gagasan sedikit pun "bagaimana melakukan ini", dan ia akan mengajukan pertanyaan tentang stackoverflow yang menunjukkan ketidakberdayaan mutlak.

Ingo
sumber
6
Tapi Python dan Ruby sangat diketik. Ini ortogonal untuk diketik secara dinamis. String dan angka tidak secara implisit dikonversi satu sama lain.
dsimcha
3
@dsimcha: Ya - Dan bagaimana itu membantah apa yang dikatakan @Ingo?
Jim G.
1
Karena pertanyaan ini sebagian besar tentang Ruby dan Python. Saya pikir dia menyiratkan bahwa dia pikir Ruby dan Python diketik dengan lemah, yang merupakan kesalahpahaman umum.
dsimcha
1
@ davidk01 - itulah poin saya: nilai memiliki tipe apakah kita menginginkannya atau tidak. Tetapi dalam bahasa yang diketik secara dinamis (jika istilah itu lebih disukai Anda), variabel belum. Sebagai gantinya, pengecekan tipe dilakukan pada saat runtime untuk membedakan antara banyak varian Unitype.
Ingo
2
@Ingo: Saya setidaknya dulu bisa menemukan pengguna Common Lisp yang menganggap kurangnya pengetikan statis adalah keuntungan (sebenarnya, pengetikan statis opsional, dapat digunakan untuk pengecekan kesalahan atau tujuan kinerja), karena mempercepat pengembangan dan kesalahan mengetik statis akan dihindari ternyata tidak sulit untuk menemukan dan memperbaiki dalam praktek. Saya belum melihat apa pun selain pendapat.
David Thornley
2

Saya masih berpendapat bahwa pengajaran dan bimbingan formal adalah faktor yang jauh lebih besar daripada pilihan bahasa dalam kualitas kode pemula. Namun, jika saya harus memilih bahasa pertama untuk pemula, saya akan memilih python untuk programmer otodidak dan C ++ untuk instruksi kuliah.

Alasannya adalah dengan instruksi formal Anda dapat mulai dengan program kecil dan sepele untuk meletakkan dasar teoretis yang kuat bertahun-tahun sebelum Anda perlu melakukan sesuatu yang bermanfaat. Saya pikir ketertiban itu ideal jika Anda dapat membayar waktu, dan C ++ memberi Anda banyak bantuan dengan kesalahan kompiler dan kesalahan segmentasi antara kuliah untuk memberi tahu Anda jika Anda tidak memahami dasar-dasarnya.

Beberapa dari dasar-dasar itu benar-benar sulit dipelajari jika Anda belajar sendiri, sampai Anda mendapatkan pengalaman. Selain itu, Anda biasanya perlu membuat sesuatu yang berguna sesegera mungkin, dan dapat memperoleh dasar-dasar teoretis sesuai kebutuhan, meskipun Anda berisiko tidak pernah belajar lebih dari yang seminimal mungkin dengan pendekatan ini. Itu sebabnya saya merekomendasikan bahasa seperti python dalam kasus itu.

Karl Bielefeldt
sumber
2

Kami melihatnya sebaliknya di kampus dan saya pikir ini berguna. * Kami mulai di tanggul rendah. Pointer, manajemen memori, array karakter ... Jadi ya, kita mulai dengan C. Sama dengan algoritma: pertama mengimplementasikan daftar tertaut, hashtable, pohon ... Dan hanya kemudian menggunakan perpustakaan standar.

Setelah itu kami pergi ke bahasa yang lebih kuat seperti Java, C # atau perl. Tetapi dengan keuntungan mengetahui apa yang terjadi di bawah ikat pinggang.

Sementara ini berhasil, saya percaya bahwa beralih dari bahasa scripting ke bahasa level yang lebih rendah juga baik. Mengetahui bahasa tingkat tinggi dan rendah memastikan Anda memiliki kemudahan penggunaan bahasa tingkat tinggi sambil tetap memahami apa yang sedang terjadi. Urutan di mana Anda mempelajarinya kurang penting.

Carra
sumber
1

Bahasa scripting tidak membuat programmer ceroboh. Kurangnya kejelasan memahami domain masalah (misalnya bisnis yang dilayani program) adalah apa yang menyebabkan kecerobohan.

Seperti kata pepatah lama, "Anda dapat menulis COBOL dalam bahasa apa pun.", Walaupun saya menduga bahwa ketika setiap tipe data terlihat sama , maka menjadi lebih sulit untuk melihat apa saja aspek penting dari program Anda, fitur utama COBOL- isasi.

Farley Knight
sumber
1
Cobalah sebelum mencurigai. Perbedaan utama adalah bahwa Anda tidak peduli di mana itu Fooatau Baratau sesuatu yang benar-benar berbeda selama Anda dapat .frobnicate()melakukannya. Tanpa antarmuka eksplisit.
Saya cukup akrab dengan bahasa yang dinamis, karena pekerjaan saya sehari-hari adalah dengan Ruby on Rails. Dan ya, itu adalah konvensi utama dalam komunitas bahasa yang dinamis. Secara umum, ini disebut 'bebek mengetik'. Dalam literatur penelitian, mereka disebut tipe struktural, dan ada beberapa konvensi sintaksis yang dapat menunjukkan kepada Anda seperti apa bentuk 'tipe quackable'. Tidak hanya itu, ada sistem tipe yang dapat mengenalinya, dan memverifikasi bahwa program Anda memperlakukan bebek dengan baik.
Farley Knight
Saya tahu tentang tipe struktural dan menganggapnya ide yang cukup rapi. Tetapi karena tidak ada satu pun bahasa dewasa, yang digunakan dari jarak jauh (basis pengguna tingkat O'Caml akan menjadi awal yang baik) yang menggunakan mereka, saya tidak menganggap mereka sebagai alternatif praktis untuk pengetikan dinamis. Sedih, tapi faktanya.
Bahasa yang banyak digunakan tidak, tapi itu tidak menghentikan Anda dari boot-strapping sistem tipe Anda sendiri ke yang banyak digunakan. Saya yakin Anda pernah melihat makalah tentang hal-hal seperti inferensi jenis untuk bahasa dinamis.
Farley Knight
Sekali lagi, saya tidak menganggap sesuatu yang digunakan oleh saya dan orang di sebelah alternatif yang praktis . Seorang programmer membutuhkan hal-hal seperti perpustakaan, sintaks yang stabil, tooling, dll.
1

Saya berpendapat bahwa bahasa scripting memang mendorong teknik ceroboh. (Perhatikan bahwa ini tidak mengatakan bahasa-bahasa itu buruk , hanya saja sulit untuk mempertahankan basis kode yang besar dalam bahasa-bahasa tersebut) Namun, saya pikir karena alasan yang berbeda dari jawaban lain di sini.

Saya pikir untuk menggunakan bahasa apa pun seorang programmer perlu memiliki pemahaman dasar tentang pemrograman secara keseluruhan. Mereka tidak akan efektif di mana pun jika mereka tidak memahami konsep seperti vektor, pohon, dan tabel hash. Mereka tidak perlu harus dapat mengimplementasikan hal-hal ini, tetapi mereka perlu mengetahui karakteristik mereka.

Di mana saya pikir kelambanan ikut bermain bukanlah keterampilan pemrograman, tetapi ketika seseorang perlu membuat komponen yang dapat digunakan kembali. Bahasa-bahasa ini tidak mengharuskan Anda untuk mendefinisikan antarmuka yang baik antara unit kode atau mekanisme untuk memiliki perpustakaan memberlakukan kendala pada klien mereka. Bukan tidak mungkin untuk membuat komponen yang dapat digunakan kembali yang baik dalam bahasa seperti itu, itu hanya jauh lebih sulit.

Bahasa scripting memiliki daya tarik bagi programmer pemula karena memungkinkan mereka untuk mendapatkan lebih banyak "satu kali" hal-hal yang dilakukan dalam waktu yang lebih sedikit, tetapi ketika para programmer yang sama mulai melakukan pemrograman pemeliharaan, mereka sering dengan cepat mengalami masalah dengan bahasa-bahasa ini.

Saya tidak mengatakan bahasa scripting itu buruk - jauh dari itu. Tetapi mereka membuatnya sulit untuk mempertahankan basis kode yang sangat besar (beberapa juta baris) (yang merupakan salah satu alasan mengapa Anda tidak melihat basis kode seperti itu dilakukan dalam bahasa scripting). Ketika Anda membutuhkan solusi yang relatif kecil atau satu kali, mereka memungkinkan Anda untuk menyelesaikan lebih banyak dalam waktu lebih sedikit, dan lebih sedikit kode (dan lebih sedikit kode hampir selalu lebih baik).

Ingatlah bahwa tidak ada alat yang terbaik untuk setiap pekerjaan. Pilih alat yang paling sesuai untuk situasi ini. Itu berlaku untuk bahasa pemrograman sama seperti halnya untuk alat apa pun.

Billy ONeal
sumber
0

Saya dengan guru Anda, tetapi juga dengan @Singletoned ketika dia mengatakan guru Anda mengasumsikan konsekuensinya (misalnya, tidak ada pengetahuan tentang kinerja) yang buruk.

Saya pikir memulai dengan C lebih baik daripada memulai dengan bahasa scripting. Sebagai seorang guru, saya akan berkonsentrasi pada seluruh hal arsitektur von Neumann (ALU, register, memori, port i / o, ...), langsung beralih ke pointer (Maaf, itu benar-benar konsep kunci [tidak melepaskan referensi (yaitu, pointer) dalam bahasa VM adalah sumber utama kebocoran memori]), tekan beberapa struktur data (pohon, daftar terkait, hashtable 1 ), dan kemudian ... tendang tingkat abstraksi ke sesuatu yang lain (OO, pemrograman fungsional, sesuatu - aturan pengetikan statis yang kuat , yo \ m /, jadi tidak ada "bahasa scripting"> :().

1 Hmm, mungkin saya setuju dengan guru Anda tentang pertimbangan kinerja.

JohnL4
sumber
Pemrograman yang ceroboh adalah sumber kebocoran memori dan tidak perlu banyak mengajar orang untuk melacak sumber daya seperti menangani file. Ada banyak program C dengan kebocoran memori jadi saya tidak yakin apa yang Anda dapatkan dengan mengajar orang tentang petunjuk sesegera mungkin.
davidk01
Itu benar, tapi ... (a) tidak memahami dasar-dasar mengarah ke beberapa kode buruk (melalui peretasan-til-itu-benar atau pemrograman ceroboh), dan (b) saya mencoba untuk memotivasi mengapa pointer masih relevan, tidak menyatakan bahwa C lebih baik daripada bahasa yang dikumpulkan sampah dalam hal kebocoran memori. Tujuan mendapatkan pointer adalah agar kita dapat keluar dari C.
JohnL4
0

Saya pikir yang terbaik adalah mulai dengan bahasa modular dan kemudian pergi ke hal-hal yang lebih rumit, di hari-hari saya kami mulai dengan Pascal dan COBOL dan mencoba untuk memahami apa yang dimaksud dengan subrutin, variabel kontrol aliran, dll. Hanya setelah merasa nyaman dengan Pascal saya bahkan memiliki keinginan untuk beralih ke bahasa seperti C / C ++ dan mempelajari semua teknik lain yang lebih merupakan tambahan untuk programmer junior.

Gaurav Sehgal
sumber
0

Anda berdua benar.

Bahasa scripting jelas mempersulit pengembang pemula untuk memahami apa yang sebenarnya terjadi. (Begitu juga database, kerangka kerja, dan perpustakaan. Oh, dan browser, server, jaringan, dan sistem file.) Ketika saya mewawancarai pengembang yang lebih muda, saya sering tercengang betapa sedikitnya mereka yang tahu tentang bagaimana komputer sebenarnya bekerja, dan seberapa rentan mereka terhadap barang pemrograman -cult.

Di sisi lain, hal nomor satu yang saya cari dalam wawancara bukanlah pemahaman yang sempurna, itu karena mereka suka membuat sesuatu. Kembali ketika saya mulai, komputer melakukan apa pun cukup mengesankan, sehingga Apple Kecil saya dan hal-hal assembler 6502 tampak sangat mengagumkan bagi saya. Tetapi akhir-akhir ini komputer melakukan banyak hal luar biasa, jadi saya pikir tidak apa-apa bagi orang untuk memulai pada tingkat yang cukup tinggi jika itu yang diperlukan bagi mereka untuk ketagihan.

Pada dasarnya, saya pikir tidak apa-apa untuk memulai di ujung kolam yang dangkal asalkan Anda akhirnya menyerang perairan yang lebih dalam.

William Pietri
sumber
0

Pertama, saya akan mulai dengan bahasa tingkat abstraksi yang lebih tinggi. Saat ini saya akan merekomendasikan Python. Alasan paling penting untuk memilih bahasa scripting sebagai bahasa pertama adalah bahwa Anda dapat dengan mudah mengumpulkan sesuatu yang berfungsi. Seperti yang disebutkan Joe dalam pertanyaannya, hal nomor satu ketika menjadi seorang programmer adalah Anda memiliki motivasi untuk terus maju dan menggali lebih dalam. Motivasi ini didapat ketika Anda dapat membuat perangkat lunak yang berfungsi dan bermanfaat.

Selain poin dengan pemahaman abstraksi (level tinggi) dan pemahaman implementasi yang mendasari (level rendah) ada poin ketiga yang terlewatkan. Untuk menjadi programmer yang baik saat ini, Anda tentu harus menguasai kedua poin di atas. Selain itu, sangat penting untuk kompetensi Anda bahwa Anda terus melihat teknologi baru dan sudut pandang. Tidak masalah dari level abstraksi yang Anda mulai, Anda harus meningkatkan secara konstan, dan mempertanyakan metode Anda saat ini.

Harus dijelaskan sejak awal bahwa bahasa pemrograman hanyalah alat untuk menyelesaikan pekerjaan. Sangat penting untuk memilih alat yang tepat untuk tugas tertentu. Saya pikir untuk programmer pemula bahasa scripting tingkat tinggi akan membantu dalam menekankan hal ini. Bahasa tingkat yang lebih tinggi akan memberikan perspektif yang lebih luas dan memotivasi programmer untuk menggali lebih dalam.


sumber