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?
programming-languages
learning
Vamsi Emani
sumber
sumber
Jawaban:
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.
sumber
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
--- diedit bagian terakhir berdasarkan komentar ---
Fakta...
tapi
Mitos
sumber
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
sumber
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.
sumber
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).
sumber
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
using
pernyataan untuk secara otomatis membuang objek, tetapi dalam C # idiomatik ditulis dengan baik Anda akan melihatusing {...}
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.sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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".
:)
sumber