Mengapa tampaknya ada banyak ketakutan dalam memilih bahasa yang “salah” untuk dipelajari? [Tutup]


28

Mungkin ini hanya saya, tetapi sebagai siswa CS saat ini saya telah menemukan banyak pertanyaan di situs ini dan di tempat lain tentang tidak hanya "Bahasa apa yang harus saya gunakan untuk x?" tetapi juga "Apakah ada yang masih menggunakan bahasa Y?" Kelas CS pertama saya diajarkan dalam Skema, yang, jika saya tidak salah, tidak digunakan secara luas (setidaknya dibandingkan dengan bahasa seperti Java, PHP, Python, dll). Banyak teman sekelas saya menolak gagasan harus belajar bahasa yang tidak perlu mereka gunakan lagi, tetapi saya tidak begitu mengerti dari mana asal rasa takut belajar bahasa yang kurang populer ini. Tidak, saya tidak boleh menggunakan Skema dalam pekerjaan apa pun yang saya dapatkan, tetapi saya tentu saja tidak menyesal telah belajar menggunakannya (walaupun dalam pemula, tidak terlalu mendalam dalam satu semester). Saya mengambil kelas mesin pencari semester ini, yang dilakukan di Perl dan sekali lagi saya melihat teman sekelas mengeluh tentang pilihan bahasa. Saya bisa mengerti memiliki bahasa favorit dan tidak menyukai yang lain, tetapi mengapa beberapa orang mulai kesal karena mempelajarinya? Bisakah Anda benar-benar mempelajari bahasa "salah"? Bukankah belajar sesuatu seperti Skema atau Haskell latihan mental yang baik jika tidak ada yang lain, dan berguna setidaknya untuk paparan berbagai cara memecahkan masalah?


Menariknya, dua tahun pertama pendidikan CS saya hanya melibatkan C # dan Java, dan coba tebak apa yang akhirnya saya gunakan dalam penempatan koperasi pertama saya? Kata empat huruf, dimulai dengan "P".
Anon.

6
@Shewbox, Anda benar, mereka salah, Anda akan mendapatkan keuntungan pembelajaran silang, mereka tidak akan. Akhir dari cerita.
ocodo

7
Mereka melakukan SEO (optimasi mesin pencari) dengan manajer perekrutan.
rwong

1
@ rwong: dan sayangnya beberapa dari kita harus belajar cara yang sulit untuk tidak memasukkan "Saya menggunakan XXX sekali dan tidak akan pernah menyentuhnya lagi", karena beberapa penerima spam melakukan spam pada kata kunci yang cocok.

1
@ JP: 99% orang membuat yang lain terlihat seperti sedang berciuman.
Michael K

Jawaban:


27

Maksud dari gelar CS bukan untuk mengajarkan Anda C # dan Java, Anda dapat mempelajarinya sendiri. Ini untuk mengajarkan Anda tentang pemrograman dan perhitungan. Bahasanya hanya detail. Selama karir dalam pemrograman Anda akan menggunakan banyak bahasa. Hari ini mungkin Java atau C # tetapi 10 atau 15 tahun dari sekarang itu bisa jadi Erlang atau sesuatu yang bahkan belum ditemukan. Mempelajari berbagai gaya pemrograman dan cara-cara berbeda untuk menyerang suatu masalah jauh lebih penting daripada mempelajari satu bahasa saja.


Tepat - gelar saya mendahului C ++ apalagi Java atau C #. Meskipun kami diajarkan terutama dalam Pascal kami diberi masalah dalam berbagai bahasa dari tahap awal dan pada tahun kedua kami memiliki kursus yang berjumlah "bahasa bulan ini", simula (digunakan untuk melakukan simulasi) tetap menjadi kenangan terindah saya - meskipun tidak ada kesempatan saya sekarang bisa menulis kode simula - kebanyakan karena OOP itu mengajari saya (meskipun saya tidak tahu pada saat itu)
Murph

17

Karena bahasa pertama Anda akan membentuk cara Anda berpikir, sampai Anda belajar sebaliknya.

Jika Anda buta huruf secara komputasional (programmer pertama kali), dan bahasa pertama yang Anda pelajari terlalu "dasar", Anda mungkin tidak tahu konsep tingkat tinggi seperti orientasi objek, pengiriman ganda, pewarisan, fungsi kelas satu, pemrograman meta, dll.

Bahasa pertama yang Anda pelajari biasanya terkait dengan perampokan pertama Anda ke dalam pemikiran komputasi. Jika seseorang memberi tahu Anda, Jimmy, dunia sebelum Anda terdiri dari simbol A, B, dan C, semua pemikiran Anda akan dalam bentuk A, B dan C. Sampai suatu hari, kutu buku yang mewah mencemooh Anda karena tidak tahu X , Y, dan Z konsep. Tidak mungkin Anda tahu ini hanya dengan mengetahui ABC.

Orang-orang yang paling peduli tentang bahasa pertama seseorang mungkin adalah programmer yang tercerahkan yang telah berjuang menembus kegelapan. Oh, sekarang saya tahu apa fungsi kelas satu itu. Kawan, kuharap aku tahu tentang pewarisan dan injeksi ketergantungan dua tahun lalu!

Bahasa pertama Anda tidak sepenting sikap Anda sehubungan dengan bahasa-bahasa berikutnya. Jika Anda dapat melihat jauh di depan Anda untuk mengetahui bahwa ada dunia di luar BASIC / C / Perl / PHP / dll, maka Anda jauh di depan permainan. Inilah sebabnya mengapa banyak orang fanatik untuk bahasa fungsional karena banyak bahasa yang dikembangkan secara aktif mendekati mereka.


1
Kita semua harus mulai dari konsep dasar itu. Ketika seseorang mempelajari konsep baru (mengambil pola desain sebagai contoh) mereka cenderung menggunakannya di mana - mana untuk sementara waktu. Jika saya tidak menghabiskan 5 tahun pertama saya memprogram dalam struktur program pembelajaran Dasar dan bagaimana berpikir seperti seorang programmer, maka ketika saya sampai di OO, saya akan sangat sibuk mempelajari bagian prosedural saya tidak bisa berkonsentrasi pada Bagian OO. Oleh karena itu, +1 untuk 'Bahasa pertama Anda tidak sepenting sikap Anda terkait dengan bahasa dan konsep berikutnya .
Michael K

Saya berpikir untuk menambahkan itu. Saya sama sekali tidak mengatakan bahasa dasar tidak memiliki tempat mereka. Bahkan, mereka melakukannya (pada tahap pembelajaran awal). Saya hanya tidak menyebutkannya.
Mark Canlas

Oh Michael, hasil editmu jauh lebih berkelas, hahahaha.
Mark Canlas

Jika teman sekelas OP khawatir Skema adalah bahasa yang salah untuk dipelajari, mereka mungkin tidak terlalu tercerahkan. :)
David Moles

Beberapa bahasa memiliki sintaksis kompleks yang sebenarnya sederhana (turunan C), yang lain memiliki sintaksis sederhana namun sebenarnya kompleks (Groovy). Maksud saya - dalam C / C ++ atau Objective-C - hal-hal yang cukup deklaratif dan prosedural dalam lingkup kode aktif, sedangkan sesuatu seperti Groovy memiliki banyak hal "terjadi di bawah tenda" yang "disembunyikan" oleh sintaksis gula. Saran saya kepada pemula adalah untuk pergi dengan bahasa sintaksis sulit yang mencerminkan lebih dekat bagaimana komputer sebenarnya bekerja - karena pengetahuan itu menyederhanakan penggunaan bahasa lain.
dcgregorya

11

Ketika saya masih di perguruan tinggi, saya tahu banyak orang yang memutuskan untuk mengambil jurusan ekonomi bukan karena itu adalah sesuatu yang sangat mereka minati atau sukai, tetapi karena mereka pikir itu akan membuat mereka mendapatkan pekerjaan yang baik.

Saya mengambil jurusan Studi Asia Timur karena kelas-kelas yang saya ambil sebagai efek samping dari minat awal saya pada Sastra mengaitkan saya. Saya pergi ke Jerman karena saya ingin melakukan program pertukaran, di mana saya menghabiskan sebagian besar waktu saya di program Japanology dan Sinologi. Saya mempelajari apa yang paling menarik bagi saya. Saya memutuskan untuk tidak menggunakan perguruan tinggi untuk mempelajari hal-hal yang berhubungan dengan komputer, karena saya sudah meretas cukup banyak selama masa kecil saya, tetapi saya menghabiskan waktu pemrograman dan memahami internet, dan akhirnya, mungkin mustahil , Saya mendapat pekerjaan bagus yang berhasil menggabungkan semua minat itu.

Perbedaannya adalah antara Karier, dan seseorang yang belajar demi belajar. Karier khawatir bahwa mereka akan mempelajari The Wrong Thing, dan bahwa mereka akan menyesal karena itu bukan The Thing Right To Land Me A Job. Orang yang belajar demi belajar menyadari bahwa mereka memiliki 4 tahun untuk menghabiskan waktu mengeksplorasi segala macam bidang dengan tekanan yang relatif dapat dikelola; Karier berpikir bahwa tugas sekolah adalah mengajar mereka sesuatu. The Learner memikirkan hal-hal ketika mereka mencapai wilayah asing, dan memiliki peluang yang lebih baik untuk menemukan pekerjaan yang tepat untuk mereka. Karier akhirnya menjadi akuntan tingkat kedua di perusahaan lapis ketiga, membayar tagihan, dan membenci bos mereka.

Ya, ini adalah arketipe, dan setiap orang harus menyeimbangkan pragmatisme dengan hasrat mereka, tetapi itulah perbedaan mendasar. Memang, seseorang dengan estetika programmer juga dapat mengajukan pertanyaan, tetapi lebih dalam konteks "mana yang akan menjadi penggunaan waktu saya yang paling tidak boros." Tapi tebakan saya adalah bahwa dorongan karir yang mengajukan pertanyaan itu, karena Karir jauh lebih takut membuat kesalahan daripada Learner, dan Learner umumnya membuat programmer yang lebih baik karena Learner tidak takut kesalahan. The Learner, seperti Programmer, menganut kegagalan dalam mengejar keterampilan.


9

Ya, belajar bahasa fungsional seperti Skema dan Haskell bagus sebagai pengantar pemrograman fungsional. Sejauh teman sekelas Anda mengeluh tentang Perl, sementara Perl tidak sepopuler dulu, itu masih bahasa yang banyak digunakan dalam bisnis.

Saya dapat memahami teman sekelas Anda yang ingin belajar bahasa praktis yang digunakan di dunia nyata, tetapi saya pikir mereka kehilangan titik bahwa setelah Anda seorang programmer yang berpengalaman dan telah terkena beberapa paradigma pemrograman, mempelajari bahasa baru sebagian besar hanya masalah mengambil sintaks baru. Jadi, selama Anda memiliki paparan konsep, Anda dapat "mengkhususkan" dalam bahasa apa pun yang disukai majikan Anda tanpa banyak kesulitan.


5

Mungkin karena orang telah dipengaruhi oleh pernyataan seperti potongan trolling klasik Edsger Dijkstra, "Praktis mustahil untuk mengajarkan pemrograman yang baik kepada siswa yang telah memiliki paparan sebelumnya untuk BASIC: sebagai programmer potensial mereka secara mental dimutilasi di luar harapan regenerasi." ( tautan )

Ini menyebabkan takut menderita kerusakan otak permanen jika Anda mempelajari bahasa yang "salah". Contoh Perl Anda tidak mengejutkan, karena Perl adalah salah satu bahasa yang sering mengundang kritik seperti ini dari para pencela.


5

Bahasa pertama Anda harus fokus pada konsep, bukan sintaks atau idiom. Menggunakannya sebagai pedoman:

  • Perl berarti banyak pencarian variabel khusus dan sintaksis misterius
  • PHP berarti pencampuran konsep karena pertumbuhan organiknya
  • Java berarti sedikit kebingungan karena tidak semuanya benar - benar objek
  • Assembly / C / C ++ berarti banyak hal tingkat rendah, yang sangat bagus jika Anda ingin melakukan pengembangan sistem tertanam tetapi mengurangi konsep tingkat tinggi
  • SQL berguna untuk melihat bagaimana bahasa alami dapat (dan tidak bisa) dipetakan ke struktur kode dan data
  • Visual Basic for Applications berfokus pada hal-hal yang bertujuan khusus, membuang, dan karena itu membuatnya terlalu mudah untuk mengabaikan konsep-konsep penting seperti penanganan kesalahan yang tepat dan refactoring
  • LISP terlihat seperti sintaksis sederhana, tetapi juga memiliki terlalu banyak ekspresi steno yang terus terang tidak ada artinya tanpa pengetahuan rinci tentang nama lengkap mereka.
  • Haskell sering terlihat sangat mirip matematika, tetapi dapat dengan cepat berubah menjadi sintaksis
  • Python ... Sebenarnya, Python adalah satu-satunya bahasa yang saya tidak dapat temukan keberatan serius untuk pemula. Mungkin hanya karena itu adalah bahasa terakhir yang saya pelajari, dan bahasa berikutnya akan mengajarkan saya kesalahan dalam cara saya.

Saya perhatikan Anda tidak menulis apa pun tentang C # atau VB.Net.
HK1

4

Tanyakan kepada teman sekelas Anda bagaimana mereka tahu bahasa itu "salah" jika mereka belum menggunakannya. Anda hanya bisa mengetahui apa yang Anda suka dengan menggunakan berbagai bahasa.

Banyak teman sekelas saya menolak gagasan harus belajar bahasa yang tidak perlu mereka gunakan lagi, tetapi saya tidak begitu mengerti dari mana asal rasa takut belajar bahasa yang kurang populer ini.

Tanpa mengenal mereka, saya tidak bisa mengatakan dengan pasti mengapa mereka akan merasa seperti ini. Mungkin mereka malas. Mungkin mereka telah menggunakan bahasa itu sebelumnya dan tidak menyukainya. Mungkin mereka takut mencoba bahasa lain. Siapa tahu. Yang saya tahu adalah bahwa sebagai mahasiswa CS, peneliti, dan pernah bekerja di industri, mengetahui berbagai bahasa, adalah aset yang sangat besar dan Anda tidak pernah tahu apa yang akan Anda gunakan atau tidak. Contoh: Ketika saya pertama kali belajar C, guru saya memperkenalkan kami ke shell scripting dan utilitas baris perintah seperti grepdan awk. Teman-teman saya tidak mau mempelajarinya sampai pada tingkat kompetensi. Saya sekarang menggunakannya di tempat kerja setiap hari.

Saya mengambil kelas mesin pencari semester ini, yang dilakukan di Perl dan sekali lagi saya melihat teman sekelas mengeluh tentang pilihan bahasa.

Perl sangat kuat dan jika Anda tahu cara menggunakannya, itu bisa membuat hidup Anda jauh lebih mudah. Ini juga mirip dengan Python dan Python banyak digunakan di salah satu perekrut top siswa CS: Google. Teman sekelasmu seharusnya memakan ini. FWIW, saya tahu perl dan python ke tingkat menengah (bukan pemula tetapi bukan ahli).

Saya bisa mengerti memiliki bahasa favorit dan tidak menyukai yang lain, tetapi mengapa beberapa orang mulai kesal karena mempelajarinya?

Muda dan sia-sia? Aku juga seperti itu. Tetapi "kekesalan" saya lebih pada bidang matematika. Jadi dari pengalaman itu saya berani bertaruh bahwa mereka mengerjakannya karena mereka tidak menikmati belajar hal-hal baru atau bahwa bahasa baru sulit dipelajari untuk mereka. (Tapi kemudian, apa pun yang berharga untuk diketahui tidak akan jatuh begitu saja ke pangkuanmu, kataku)

Bisakah Anda benar-benar mempelajari bahasa "salah"? Bukankah belajar sesuatu seperti Skema atau Haskell latihan mental yang baik jika tidak ada yang lain, dan berguna setidaknya untuk paparan berbagai cara memecahkan masalah?

Untuk kalimat pertama: Tidak, tetapi Anda pasti dapat mempelajari bahasa yang Anda inginkan untuk tidak memiliki + batuk + Lisp + batuk + =)

Untuk yang lain: Ya! Anda harus belajar bahasa sebanyak mungkin untuk mengetahui apa yang Anda suka dan untuk memperluas wawasan Anda. Tidak ada persyaratan untuk menguasai semuanya, tetapi memiliki pengetahuan yang bekerja selalu membantu. Anda tidak pernah tahu kapan bahasa yang Anda pikir akan membuang waktu untuk belajar berguna.


1
Apa yang salah dengan Lisp?!?! :)
Michael K

1
+1 untuk 'belajar bahasa sebanyak mungkin'. Jika Anda tahu berbagai bahasa, menjadi sepele untuk memilih satu untuk tugas yang diberikan.
Michael K

1
@Michael: Selain itu, akan lebih mudah untuk mempelajari yang baru, karena Anda sudah tahu sebagian besar konsep.
David Thornley

@Michael: Tidak ada yang salah dengan Lisp =). Aku bukan pria fungsional-bahasa pemrograman. Plus, begitu banyak kurung !! Namun, saya telah melihat beberapa solusi yang SANGAT elegan diimplementasikan di Lisp. Banyak menghormati guru Skema dan Lisp.
aqua

3

Karena mempekerjakan pemrogram adalah proses yang berubah-ubah dan semena-mena, fakta sederhananya adalah bahwa jika Anda memilih teknologi yang salah, Anda mungkin akan menemukan jalan yang harus dilalui oleh dodo.

Di halaman depan pada waktu tertentu, Anda akan melihat semangat religius pada keyakinan seperti:

  1. Gelar sarjana dalam ilmu komputer diperlukan untuk menjadi programmer yang baik.
  2. Gelar Master di bidang ilmu komputer membuat orang-orang programmer buruk.
  3. Sertifikasi mutlak diperlukan untuk memajukan karier Anda.
  4. Sertifikasi adalah tanda merah yang menunjukkan programmer yang buruk.
  5. Gelar sarjana di bidang selain ilmu komputer cenderung menghasilkan programmer terbaik.
  6. Anda bukan programmer yang baik kecuali jika Anda juga memprogram di malam hari dan akhir pekan.
  7. dan seterusnya.

Satu yang konstan dalam semua itu adalah bahwa 99% perusahaan di luar sana ingin Anda memiliki X tahun pengalaman dengan teknologi Y ... Dan karena seseorang hanya memiliki begitu banyak siklus yang tersedia, apa yang mereka habiskan siklus itu untuk masalah-masalah banyak.


2

Saya pikir ketakutan dalam memilih bahasa yang "salah" untuk dipelajari terutama karena kurangnya informasi dan kurangnya bimbingan , seperti:

  • Kekeliruan peluru perak . Kesalahpahaman bahwa ada Bahasa yang Tepat untuk pekerjaan, lingkungan atau proyek. Dan jika Anda memilih yang salah, Anda dipanggang.
  • Tidak memahami bahwa pemrograman melampaui bahasa . Bahasa hanyalah alat, seperti mesin tik atau komputer untuk penulis. Ini bukan tentang mempelajari nuansa alat (sintaks), tetapi apa yang memungkinkan alat (konsep, abstraksi, dll) yang Anda buat.

Karena itu, misalnya, Skema adalah bahasa pengajaran yang hebat. Pemrograman adalah tentang dua hal: abstraksi dan penggunaan kembali. Skema memiliki dua fitur: abstraksi fungsi dan panggilan fungsi (yaitu penggunaan kembali). Heck, itu bahkan tidak memiliki sintaks!
Jörg W Mittag

2

Kami terpapar lebih banyak pendapat.

Dibandingkan dengan bagaimana hal-hal telah dilakukan di masa lalu, ada lebih banyak tebakan tentang bagaimana kita menghabiskan waktu kita karena kita dihadapkan pada lebih banyak pendapat - semua orang memiliki pemikiran tentang apa bahasa pemrograman pertama seharusnya dan karena itu subjek yang rewel, siapa pun dapat membenarkan apa pun .

Karena gaya hidup kita yang bergerak cepat, setiap orang memiliki ketakutan bawaan untuk membuang waktu mereka. Ketakutan yang ditekankan untuk mempelajari bahasa yang salah hanyalah hasil dari orang-orang yang mudah terekspos ke banyak pendapat.


1

Ini adalah ketidaksukaan umum untuk mempelajari sesuatu yang memiliki kegunaan dipertanyakan. Saya dapat melihat sengatan di sini menjadi lebih buruk karena ini adalah kelas yang ingin diambil orang dan mereka masih belajar sesuatu yang mereka pikir tidak berguna. Saya tahu bahwa jika saya akan membuat kolase, saya ingin mempelajari sesuatu yang dapat saya gunakan di dunia nyata.

Satu-satunya bagian di mana saya bisa tidak setuju dengan orang-orang lain adalah ketika sebuah bahasa banyak digunakan dan mereka hanya tidak ingin keluar dari gelembung mereka untuk mempelajarinya. Hanya dengan begitu keluhannya tidak masuk akal.


1

Kenapa itu 'ketakutan'. Saya akan menyebutnya permusuhan karena telah dipaksa makan sesuatu yang tidak Anda inginkan atau tidak merasa itu penting. Tidak ada bahasa yang salah tetapi kami memiliki waktu terbatas untuk fokus pada berbagai hal. Saya harus melakukan kelas CS dengan Java dan tidak senang dengan hal itu. Bukan karena saya takut Jawa menjadi bahasa yang salah, tetapi bukan itu fokus karier saya.

Sekarang Java bermanfaat kan? LOL Semua orang belajar Java. Itulah yang tidak ingin Anda lawan. Resume Anda akan berada dalam tumpukan 1000-an dengan tajuk Lulusan CS Terkini yang Mengenal Jawa. Sebenarnya Anda mungkin lebih baik daripada Skema belajar dipekerjakan karena itu adalah tanda rahasia bahwa Anda pergi ke universitas elit dan bukan perguruan tinggi komunitas mungil.

Saya juga akan mengatakan permusuhan semacam ini jauh lebih luas daripada CS pada umumnya, tetapi menunjukkan pendidikan tinggi pada umumnya. Saya yakin instruktur memilih Perl karena dia tahu Perl, dan dapat menilai dengan mudah, dan takut belajar bahasa yang lebih baru yang lebih disukai siswa. Saya pikir ini adalah pendidikan Anda sendiri dan Anda harus dapat memetakan teknologi yang Anda rasa perlu untuk kesuksesan Anda sendiri.

(PS MIT menyerah pada Skema dan beralih ke Python)


Agak sedih karena menyerah pada Skema, SICP adalah sesuatu yang harus dibaca oleh setiap programmer. Saya cenderung mempromosikannya di setiap kesempatan.
Zachary K

Ini mengingatkan saya pada hari-hari Universitas saya. Beberapa tahun setelah saya mulai, departemen CS beralih dari C ++ ke Jawa sebagai bahasa pengajaran utama. Beberapa tahun kemudian (ketika saya mencoba untuk mengajarkan tutorial struktur data), jelas bahwa tidak ada siswa yang mengerti apa pun tentang alokasi memori (misalnya, mereka benar-benar hilang pada tumpukan vs tumpukan). Akibatnya, mereka tidak memahami operasi dasar pada struktur data yang kami coba ajarkan kepada mereka. Tidak lama kemudian, C ++ menjadi bahasa yang disukai lagi.
smithco

Dalam praktiknya - mempelajari bahasa baru itu mudah setelah Anda memahami pemrograman. Orang merekomendasikan bahasa seperti C karena mengharuskan Anda untuk mendeklarasikan pointer dan mengalokasikan memori dan melindungi akses tulis ke pointer Anda ... ketika Anda berpikir dalam istilah ini segala sesuatu yang lain cukup mudah karena Anda sudah mempertimbangkan semua hal ini. Lebih sulit untuk melakukan yang sebaliknya - mulai dengan bahasa yang lebih abstrak dan kemudian membangun pengalaman untuk memahami semua hal mendasar yang terjadi.
dcgregorya

1

Waktu adalah komoditas yang paling langka, begitu Anda keluar ke dunia nyata - dan tidak ada yang mau membuang waktu untuk keterampilan yang tidak akan memberi mereka manfaat nyata.

Yang sedang berkata, saya tidak berpikir ada bahasa yang 'salah' untuk dipelajari - tapi saya berharap saya telah menemukan Ruby bertahun-tahun yang lalu alih-alih berjuang dengan melakukan hal-hal canggih dalam PHP ...

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.