Bahasa pemrograman apa pun dapat dikuasai dengan mudah jika dasar-dasarnya pemrograman kuat. Fakta atau mitos? [Tutup]

33

Benarkah seseorang dengan dasar-dasar pemrograman yang cukup baik dapat dengan mudah mempelajari bahasa pemrograman apa pun?

Nah, ketika saya mengatakan bahasa pemrograman, saya merujuk pada bahasa yang gesit dan dinamis seperti PHP, Perl, Ruby, dll tetapi bukan bahasa pemrograman sebelumnya dari masa lalu.

Saya telah bekerja hanya pada java, asyik dan fleksibel sampai batas tertentu. Jadi mempertimbangkan fakta bahwa saya seorang programmer amatir tetapi pembelajar yang cepat, secara kasar, berapa lama untuk mendapatkan pijakan pada salah satu bahasa tersebut?

Vamsi Emani
sumber
1
Ganti "Any" dengan "Most".
4
Apa yang membuat bahasa 'gesit'? Saya pikir gesit adalah proses pengembangan .
oosterwal
17
Menguasai dengan mudah? Tidak. Belajar dengan mudah? Iya nih. Penguasaan menyiratkan tingkat keahlian yang membutuhkan bertahun-tahun penggunaan dalam bahasa apa pun. Mempelajari cara menggunakan bahasa apa pun begitu dasar-dasar Anda sudah ada harus diberikan.
Joel Etherton
1
Tidak, itu hanya berlaku untuk bahasa yang sama. Mengetahui Java tidak akan membantu Anda mempelajari Haskell, tetapi membantu Anda mempelajari C ++ dan seterusnya. Mengetahui PHP tidak akan membantu Anda belajar perakitan, tetapi itu akan membantu Anda mempelajari Ruby.
iveqy

Jawaban:

46

Ya, dengan pemesanan.

Empat minggu yang lalu, saya akan mengatakan saya memiliki keterampilan tingkat profesional dalam C dan C ++, dan keterampilan tingkat amatir di Jawa. Bos saya meminta saya untuk menulis beberapa perangkat lunak dalam JavaScript, yang dengannya saya tidak memiliki pengalaman, dan saya melanjutkan.

Selama dua minggu berikutnya, saya membaca banyak cuplikan kode sampel, menemukan semua perpustakaan keren, dan menulis program saya. Sudah selesai, dan berhasil. Lalu minggu lalu saya membeli buku JavaScript, dan saya sudah membacanya, dan nak, saya tidak tahu apa yang saya lakukan. Sekarang saya mengerti mengapa objek saya bertingkah aneh.

Jadi sekarang saya katakan, saya tahu sedikit JS. Saya dapat membacanya dan bekerja dengannya, tetapi saya yakin apa yang saya tulis tidak efisien, sulit dibaca, dan tidak mengikuti praktik terbaik.

Secara umum, seorang pembelajar cepat dapat memakan waktu seminggu dan mulai memproduksi produk berkualitas rendah dalam bahasa baru. Jika Anda tahu Java, Anda bisa dengan cepat mengambil C, C ++, PHP, Python, JavaScript, tetapi cukup baik untuk memodifikasi kode atau menulis fungsi yang didefinisikan dengan baik. (Perl mungkin lebih sulit karena regex's kompleks.) Untuk merancang sistem dalam bahasa baru dengan benar, Anda mungkin perlu satu tahun untuk mengembangkan secara profesional di bawah mentor yang berpengalaman.

Brad
sumber
18
Saya berani mengatakan bahwa itu membutuhkan dua tahun. Tahun pertama harus membuat Anda relatif mahir, tahun kedua harus membuat Anda relatif efisien.
Tim Post
4
Saya memiliki pengalaman ini bertahun-tahun yang lalu (setelah mempelajari selusin bahasa) ... Saya harus bekerja di Ada. Untuk menulis kode di Ada butuh beberapa hari. Untuk benar-benar masuk ke ruang kepala desainer sistem bahasa / run-time dan menulis kode BAIK, itu membutuhkan waktu satu tahun.
quick_now
1
Sejujurnya, saya belajar Java dengan cara ini juga. Saat ini saya berada di tanda 1 tahun, dan saya akan mengatakan "relatif mahir" akurat.
Brad
1
Alasannya adalah bahwa fundamental Anda, bahkan mungkin kuat, hanya di tempat yang tidak luas. Jika Anda tahu bahasa lain, dengan penutupan, pemahaman daftar, struktur data lainnya dan aturan pelingkupan lainnya sebelum jscript, Anda mungkin memiliki lebih sedikit masalah.
Peter
Saya memiliki pengalaman yang sama dengan VB.net, sampai saya membaca kode yang ditulis oleh bos saya (dengan pengalaman VB beberapa tahun) ... oh sayang. Bau kode seperti kode duplikat cenderung melampaui bahasa!
DisgruntledGoat
28

Pada dasarnya jawabannya adalah ya ... dan tidak ... itu tergantung pada apa yang Anda maksud dengan fundamental dan mudah dikuasai .

FAKTA

  • Mengetahui dasar-dasar pemrograman akan membantu terlepas dari bahasanya. Secara fundamental di sini saya maksudkan hal-hal yang tidak spesifik untuk paradigma yang diberikan. Hal-hal seperti algoritmik, level abstraksi, isolasi, dll.

  • Mengetahui dengan baik dasar-dasar paradigma yang diberikan (OOP, functionnal dll) akan membuat mudah untuk belajar bahasa yang mendukung paradigma yang sama. Bisa dikatakan, mengetahui bahasa dengan baik akan memungkinkan Anda untuk mengambil bahasa dengan cepat dari keluarga yang sama.

  • Dengan setiap bahasa yang dipelajari dalam keluarga yang sama yang berikutnya akan membuat saya jauh lebih mudah, saya tidak akan terkejut jika kurva belajar ini secara eksponensial lebih cepat karena Anda tahu lebih banyak.

MITOS

  • Ketika pindah ke paradigma baru yang berbeda dengan mengetahui bahasa dari paradigma pertama tidak akan membantu seperti belajar bahasa di keluarga yang sama. Bahkan, tergantung pada perbedaan di antara mereka, Anda mungkin harus terlebih dahulu menghapus beberapa hal sebelum Anda dapat bergerak maju dan benar-benar memahami paradigma baru.

--- diedit bagian terakhir berdasarkan komentar ---

Fakta...

  • Mengetahui Paradigma pertama dapat membantu Anda mempelajari ...

tapi

Mitos

  • Jangan menjadi sombong karena bisa memperlambat Anda atau tidak membantu sama sekali untuk paradigma ketiga.
Newtopian
sumber
semua baik kecuali yang terakhir. secara anekdot, mengetahui bahasa pemrograman prosedural seperti C sama sekali tidak membantu ketika mencoba mempelajari bahasa logis seperti Prolog, dan dalam kasus saya itu menghalangi, misalnya "T: bagaimana cara saya membuat kode loop dalam prolog?" ==> "A: Anda tidak".
Steven A. Lowe
2
Bukti anekdotal yang saya dengar di sana-sini menunjukkan bahwa Anda dapat memulai pemrograman pemula dengan mudah, tetapi jauh lebih sulit jika mereka memprogram dalam BASIC atau C # atau sesuatu seperti itu terlebih dahulu.
David Thornley
1
@ Seven & David: Saya tidak begitu yakin tentang yang terakhir itu. Saya memang beralih dari prosedural ke Objek ke fungsional tetapi belum mencoba keluarga logika. Saya memang merasa lebih mudah seiring berjalannya waktu dan pengalaman tetapi tidak berani menyamaratakan. Saya akan memodifikasi jawaban berdasarkan komentar Anda.
Newtopian
14

untuk bahasa yang serupa , ya

untuk bahasa dengan paradigma yang sangat berbeda, tidak terlalu banyak

contoh: Anda tahu C ++, Anda ingin belajar Java, sepotong kue; Anda tahu VB.NET, Anda ingin mempelajari Prolog ... seluruh kue, mungkin tiga atau empat kue

Steven A. Lowe
sumber
1
Saya setuju. Ada beberapa bahasa yang hanya mengikuti filosofi yang sama sekali berbeda; oleh karena itu tidak sepele untuk beralih misalnya dari bahasa imperatif seperti C ke bahasa pemrograman logis seperti Prolog tanpa berusaha.
sakisk
4

Saya percaya jawaban singkatnya adalah: "agak benar tetapi sulit untuk diverifikasi". Sangat sulit untuk mempelajari API, penggunaan, idiom, dan paradigma yang terkait erat (OO, fungsional, dll.) Daripada sintaksis sebenarnya dari suatu bahasa. Saya pikir bahasa itu sendiri mudah ditaklukkan jika Anda memiliki pengetahuan dan pengalaman yang kuat tentang dasar-dasar pemrograman dan beberapa pengetahuan penyusun, tetapi sulit untuk dikuasai karena hal-hal tambahan.

Contoh yang jelas akan berpindah dari satu bahasa ke bahasa lain; C ke Jawa. Sintaks kode sangat mirip dengan program C-style, tetapi Anda juga perlu mengetahui java api (generik, pengumpulan sampah, dll.) Dan kemungkinan besar, dalam "lanskap IT" saat ini, beberapa kerangka kerja pihak ketiga (Spring, jUnit , Hibernate, dan sebagainya) untuk melakukan sesuatu yang bermanfaat untuk bisnis. Jadi, jika Anda sudah melakukan C sebelumnya, sintaks bahasa tidak akan menjadi masalah, itu sisanya.

Ini berasal dari saya yang tahu Java, C #, Javascript, HTML, CSS, Delphi, dll. Saya mungkin tidak tahu setiap sudut dan celah tentang kerangka kerja atau perpustakaan yang saya gunakan, tapi saya tahu jalan saya dan dapat belajar dengan cepat karena pengalaman saya menggunakan yang berbeda dari sebelumnya. Untuk seorang "pembelajar cepat" itu semua berpikir lateral benar-benar.

Spoike
sumber
Saya sepenuhnya setuju dengan ini. Mempelajari praktik terbaik / apis / perpustakaan populer / dll membutuhkan banyak waktu, lebih lama daripada mempelajari sintaksis suatu bahasa pemrograman, dan itu adalah kebohongan tantangan nyata, dan sesuatu yang hanya dapat diperoleh dengan menghabiskan waktu bekerja dengan bahasa dan ekosistem
jviotti
3

Dasar-dasar Ilmu Komputer yang perlu Anda ketahui tidak hanya mencakup dasar matematika (teori himpunan, logika, teori graf, aljabar, teori informasi, teori informasi algoritmik, dll.) Tetapi juga sejumlah bahasa pemrograman, setidaknya satu dari masing-masing bahasa grup - yaitu, satu imperatif (mungkin dengan OOP, tetapi bit itu tidak wajib), satu bersemangat, fungsional malas, satu logis, satu concatenative atau stack-based.

Dengan basis ini Anda akan dapat dengan mudah mempelajari bahasa baru yang diberikan dalam waktu singkat. Jika beberapa bit hilang, Anda mungkin menghadapi perlawanan yang parah.

Dan cara terbaik untuk mempelajari bahasa dalam-luar adalah menerapkan kompiler mainan atau juru bahasa untuk bagian yang signifikan (tentu saja tanpa perpustakaan standar - itu adalah bagian yang paling rumit dan paling membosankan dari bahasa apa pun).

Logika SK
sumber
2

Saya kira konsensus di sini adalah bahwa memiliki fundamental yang baik akan membantu sampai batas tertentu, dan saya tidak setuju dengan itu. Namun, satu hal yang hilang dari jawaban lain adalah masalah mengambil idiom bahasa, dan saya pikir untuk menguasai bahasa Anda harus menulisnya secara idiomatis.

Sebagai contoh, Anda dapat menulis rim C # yang sepenuhnya benar tanpa pernah menggunakan usingpernyataan untuk secara otomatis membuang objek, tetapi dalam C # idiomatik ditulis dengan baik Anda akan melihat using {...}banyak. Saya tidak tahu apa-apa. Net bahasa yang memiliki konstruksi ini (walaupun saya tahu sangat sedikit orang lain dan Java saya agak berkarat sehingga saya bisa salah), bahkan seorang ahli yang datang dari bahasa lain yang tidak memiliki ini Fitur perlu mempelajari idiom ini dari awal.

Steve
sumber
Ada idiom serupa yang banyak digunakan dalam Lisp dan Skema, jadi itu bukan hal baru bagi seseorang yang datang dari latar belakang itu, dan orang akan dengan sengaja mencari fitur ini dalam bahasa baru apa pun.
SK-logic
Ya, tetapi jika Anda berasal dari, katakanlah, Pascal atau ADA itu akan menjadi idiom yang sama sekali baru yang bahkan tidak akan Anda ketahui harus diwaspadai sampai Anda melihatnya.
Steve
itulah alasan mengapa saya percaya bahwa seseorang harus tahu setidaknya satu bahasa dari masing-masing kelompok untuk dapat mempelajari bahasa baru dan memilih alat dengan bijak.
SK-logic
@ SK-logic: Ketika saya melihat hal-hal seperti "menggunakan" dan "coba ... akhirnya", saya tidak kesulitan memahaminya sebagai padanan kasar dari Common Lisp "relax-protect". Namun, fitur bahasa seperti itu mungkin tidak muncul dalam pemilihan multi-paradigma bahasa tertentu.
David Thornley
1

Ini pernyataan yang benar untuk beberapa definisi "cukup baik" dan "mudah".

Semakin baik pemahaman Anda tentang dasar-dasarnya, semakin mudah untuk beralih dari satu bahasa ke bahasa lain. Jika Anda seorang programmer Java yang ahli yang memiliki pemahaman yang kuat tentang bahasa berorientasi objek, misalnya, perbedaan sintaksis dasar antara Java dan C # harus relatif mudah dikuasai dalam satu atau dua minggu. Butuh waktu lebih lama untuk memahami bagaimana fungsionalitas di semua pustaka terkait memetakan dari satu ke yang lain, tetapi Anda mungkin akan memiliki pegangan yang layak pada pustaka dasar dalam satu atau dua bulan. Kemudian, ini adalah masalah mencari tahu kasus-kasus di mana pendekatan standar untuk masalah dalam bahasa A tidak menerjemahkan langsung ke pendekatan standar dalam bahasa B (yaitu Anda ingin menggunakan LINQ dalam C # daripada JPA di Jawa) dan menjadi nyaman cukup dalam bahasa baru yang Anda kembali berpikir di dalamnya daripada berpikir dalam bahasa lama dan "menerjemahkan". Itu mungkin akan memakan waktu tiga hingga enam bulan tergantung pada seberapa baik fungsionalitas yang biasanya Anda gunakan peta. Pada tanda enam bulan, programmer Java yang ahli mungkin akan menjadi pengembang C # yang cukup efisien dan kompeten. Tetapi seperti apa pun, Anda dapat menghabiskan waktu bertahun-tahun mempelajari semua detail rumit, menguasai berbagai perpustakaan dan add-on yang bukan bagian dari bahasa tetapi merupakan bagian dari ekosistem di sekitarnya, dan umumnya meningkatkan diri Anda sebagai pengembang dalam bahasa itu. programmer Java yang ahli mungkin akan menjadi pengembang C # yang cukup efisien dan kompeten. Tetapi seperti apa pun, Anda dapat menghabiskan waktu bertahun-tahun mempelajari semua detail rumit, menguasai berbagai perpustakaan dan add-on yang bukan bagian dari bahasa tetapi merupakan bagian dari ekosistem di sekitarnya, dan umumnya meningkatkan diri Anda sebagai pengembang dalam bahasa itu. programmer Java yang ahli mungkin akan menjadi pengembang C # yang cukup efisien dan kompeten. Tetapi seperti apa pun, Anda dapat menghabiskan waktu bertahun-tahun mempelajari semua detail rumit, menguasai berbagai perpustakaan dan add-on yang bukan bagian dari bahasa tetapi merupakan bagian dari ekosistem di sekitarnya, dan umumnya meningkatkan diri Anda sebagai pengembang dalam bahasa itu.

Gua Justin
sumber
1

Saya akan mengatakan itu sepenuhnya tergantung pada antusiasme seseorang untuk belajar bahasa baru. Ketika fundamentalnya kuat dan jika dia bisa mengerti bagaimana bahasa baru mengartikan sesuatu maka cukup mudah untuk belajar bahasa apa pun.

Contoh terbaik adalah diri saya. Saya telah bekerja dengan beberapa bahasa meskipun saya telah melakukan sebagian besar pekerjaan saya di C # tetapi saya memulai karir saya dari C dan melanjutkan untuk belajar C ++, Java, VB, PHP, bahasa scripting, perl dan sebagainya. Di mana saja selama periode ini, saya tidak pernah merasa seperti saya tidak bisa belajar bahasa ini.

JPReddy
sumber
3
Dan bahasa yang Anda uraikan kurang lebih mirip satu sama lain. Untuk tantangan, cobalah mempelajari Haskell, atau Skema, atau Keempat, atau Prolog.
David Thornley
1

Saya merasa tidak pernah sulit untuk belajar bahasa pemrograman baru, sebaliknya, itu sangat menyenangkan sebagian besar waktu. Namun, ada beberapa bahasa yang saya lihat tetapi tidak pernah mengerti, karena saya tidak bisa memahami ide di baliknya, jika ada. Salah satu contoh adalah COBOL, saya tidak pernah mengerti apa yang harus dilakukan di mana DIVISI dan BAGIAN dan mengapa. Contoh lain adalah PHP dan Groovy. Dengan PHP saya mencoba memahami mengapa orang membutuhkannya, mengingat bahwa ada perl. Mungkin seseorang bisa menjelaskan. Dengan Groovy saya juga tidak mengerti sedikit konsep di baliknya.

Ingo
sumber
1

Semuanya tergantung.

Saya tahu itu sering jawabannya ...

Tapi apa arti fundamental ?? Banyak orang yang memiliki fundamental untuk satu paradigma (seperti OO) tidak memilikinya untuk paradigma lain (seperti fungsional).

Banyak orang yang datang dari OO dan mengetahui semua pola desain, mungkin tidak memiliki petunjuk pola desain fungsional atau hal-hal seperti pemahaman daftar, currying, rekursi ekor, penutupan ...

Jadi YA: jika fundamental berarti dasar dari semua paradigma.

Dalam hal ini masalahnya adalah bahwa javascript menggunakan banyak paradigma, seperti prosedural, OO dan fungsional sedikit dan memiliki pelingkupan aneh yang berasal dari java, c ++, ...

Jadi dasar-dasarnya tidak membantu dalam hal ini, tetapi mengambil lebih banyak fundamental di sini dan masih mengonversi ke bahasa lain mungkin menjadi lebih mudah dan lebih mudah semakin banyak pola yang Anda dapatkan di kotak alat Anda.

Peter
sumber
0

Jangan lupa bahwa seni pemrograman komputer adalah seni untuk tetap PERSIS apa yang Anda maksud. Jadi segala cara memberitahu komputer apa yang dilakukan, dari Jawa ke Access ke Excel ke Visual Fortran, adalah bahasa pemrograman.

Dan beberapa bahasa benar-benar buruk. IMHO Excel dan Basic adalah bahasa yang buruk; Java dan C ++ adalah bahasa yang baik. Script FileMaker adalah bahasa yang mengerikan. HTML bisa menjadi sangat baik jika Anda tidak ceroboh.

Bisakah kamu mempelajarinya? Jika itu baik, ya. Jika buruk, tergantung pada ambang jijik Anda. Hal-hal yang membuat Anda ingin muntah sulit dipelajari.

Jangan setiap orang berkomitmen untuk menggunakan bahasa X pada suatu proyek kecuali Anda telah melihat dan bermain dengan bahasa X.

Andy Canfield
sumber
0

Jawabannya adalah "Ini fakta bukan mitos!"

Saya sama seperti Anda, saya juga bekerja di berbagai teknologi yaitu. java, .net, dan baru-baru ini bekerja dengan iPhone, android, dan blackberry.

Internet penuh dengan sumber daya, cukup lalui informasi yang mengerti itu, laksanakan itu dan melangkah lebih jauh.

Faktanya "Teknologi dibuat untuk pengembang, bukan pengembang yang dibuat untuk teknologi, Teknologi berubah tetapi pengembang tidak".

:)

necixy
sumber