Apakah bijaksana untuk bolak-balik antara dua bahasa pemrograman? [Tutup]

28

Saya telah menulis cukup banyak PHP selama hampir dua tahun. Sekarang saya sedang melakukan pengembangan .NET (terutama c #). Namun, terkadang saya kembali dan melakukan beberapa php.

Pertanyaan utama saya adalah, apakah bijaksana bagi saya untuk terus melakukan ini atau haruskah saya melanjutkan pengembangan dalam C #? Apakah ini akan membahayakan saya dalam jangka panjang (ingatlah bahwa tujuan utama saya bukanlah menjadi penarik semua perdagangan) atau apakah itu praktik yang baik untuk dilakukan?

superM
sumber
30
lebih baik menjadi dongkrak dari semua perdagangan daripada kuda satu trik
scrwtp
27
Ini tentu akan membahayakan Anda jika Anda membatasi diri hanya pada dua bahasa. Dapatkan lebih banyak alat berbeda ke dalam kotak alat Anda.
SK-logic
4
Anda mengajukan pertanyaan ini seolah-olah Anda benar-benar bebas memilih antara C # dan PHP - benarkah demikian?
Doc Brown
10
Mengetahui semua detail kotor dari satu bahasa tidak diragukan lagi sangat berguna. Tetapi ketika Anda bekerja dengan beberapa bahasa, pada suatu saat Anda akan menemukan diri Anda merancang bagian-bagian program dengan cara tertentu, terlepas dari bahasa apa yang sedang Anda gunakan. Ini adalah sejenis programmer nirwana, tempat bahasa tersebut menjadi sekunder dan aplikasi yang penting. Itu adalah tempat yang tepat, karena itu berarti Anda memiliki potensi sebagai programmer bahkan di masa depan, ketika orang-orang bekerja dalam bahasa Z ++ yang baru dan mewah.
2
Hanya dua? Banyak programmer secara teratur bekerja dalam sejumlah bahasa. Mengetahui beberapa memberi Anda seperangkat alat yang lebih besar untuk menggambar.
Caleb

Jawaban:

75

Menggunakan dua bahasa pada saat yang sama bukanlah apa-apa. Bukan hal yang aneh bagi programmer untuk menggunakan beberapa bahasa yang berbeda setiap hari. Tugas yang berbeda dan teknologi yang berbeda membutuhkan bahasa yang berbeda pula.

Hanya hari ini, saya sudah menggunakan empat atau lima bahasa yang berbeda, dan itu menarik karena saya haven'd dilakukan setiap pemrograman sejauh ini. Yang saya lakukan hanyalah mengerjakan presentasi.

Sebagai seorang programmer yang baik, pada dasarnya dituntut untuk mengetahui jalan Anda dalam beberapa bahasa, dan satu-satunya cara untuk mencapai (dan kemudian melestarikan) kelancaran yang masuk akal adalah dengan menggunakan bahasa-bahasa itu.

Konrad Rudolph
sumber
4
Saya tidak yakin bagaimana orang bisa menjadi programmer yang efektif sama sekali tanpa menggunakan setidaknya 3 bahasa secara teratur.
Brian Knoblauch
1
@Brian - ketiga bahasa tersebut menjadi bahasa lisan / tulisan utama Anda, bahasa pemrograman utama Anda, dan SQL dan / atau HTML?
KeithS
2
@KeithS Hanya jika Anda membuat halaman super polos di sisi klien, dan jangan pernah menyentuh catatan XML di sisi server. CSS dan Javascript dihitung sebagai bahasa mereka sendiri, seperti halnya XPath dan XSLT dan XQuery.
Tacroy
2
Apa pun yang berisi "Kebanyakan orang" atau "sebagian besar pengembang" harus diikuti dengan semacam kutipan. Kalau tidak, itu subjektif. Hampir setiap pengembang yang saya temui (dan saya sendiri termasuk) menganggap SQL sebagai bahasa pemrograman, dan kelengkapan Turing bukan merupakan faktor yang diperlukan untuk bahasa pemrograman (pikirkan DSL, yang biasanya dirancang untuk TIDAK menjadi turing lengkap.) HTML dan XML jelas bukan bahasa pemrograman (meskipun Anda dapat memiliki bahasa khusus domain berbasis XML). Regex bukan bahasa pemrograman, tetapi otomat yang dapat diprogram / dapat dikonfigurasi.
luis.espinal
2
Itu bukan sumber. Itu tautan ke diskusi (diskusi tidak sendiri, sumber), dan itu hanya berfokus pada CSS dan HTML. Itu tidak membahas tes "turing complete" (Saya sarankan Anda membaca karya Martin Fowler tentang subjek DSL), atau apakah SQL adalah bahasa pemrograman (yang merupakan, ini adalah sumber aktual: en.wikipedia.org/ wiki / SQL , atau ini amazon.com/SQL-Programming-Language-Kirk-Scott/dp/0763766747 ). Entah Anda tidak membaca posting saya sepenuhnya, atau Anda pikir tautan ke stackexchange adalah sumber (yang bukan.)
luis.espinal
37

apakah itu praktik yang baik untuk dilakukan?

Ini adalah praktik yang sangat baik. Selain itu, saya akan merekomendasikan memperluas daftar bahasa Anda secara teratur dengan mencoba yang baru.

Bahasa dan teknologi masuk dan keluar sangat disukai dengan cepat, dalam beberapa tahun. Sebagai contoh, Objective C lepas landas dengan kekuatan luar biasa setelah hampir mati selama dua setengah dekade - keabadian menurut standar industri ini!

Tidak masalah bahwa Anda berencana untuk "tidak menjadi jack o all trades": jika Anda berencana untuk tetap di industri cukup lama, sangat aman untuk mengasumsikan bahwa Anda harus mengganti tumpukan teknologi Anda setidaknya sekali sepanjang karir Anda. Menggunakan banyak bahasa sekarang membuat Anda siap untuk mengaktifkan pemberitahuan yang cukup singkat.

dasblinkenlight
sumber
14

Apakah ini akan membahayakan saya dalam jangka panjang (ingatlah bahwa tujuan utama saya bukanlah menjadi penarik semua perdagangan) atau apakah itu praktik yang baik untuk dilakukan?

Mengetahui dua bahasa atau lebih tidak akan pernah membahayakan Anda. Mengetahui bahasa Anda sangat dangkal (tanpa memahami cara kerja orang dalam) dapat membahayakan Anda.

Preferensi pribadi saya selalu menguasai satu bahasa pemrograman berorientasi objek terlebih dahulu . Ini akan memberi Anda pembelajaran mendalam tentang semua konsep pemrograman, dan kemudahan untuk mempelajari konsep berikutnya begitu ada kebutuhan.

apakah itu praktik yang baik untuk dilakukan?

Pastinya ya!

Saya akan menyarankan untuk belajar lebih dari satu dan mempraktikkannya dengan membangun beberapa aplikasi. Sementara itu, Anda juga dapat merencanakan untuk mempelajari beberapa bahasa penulisan skrip (jQuery, KnockoutJs, dll.) Dan pustaka jika Anda melakukan atau berencana melakukan pengembangan web.

ElYusubov
sumber
1
Saya tidak berpikir, belajar OOP akan mengajarkan Anda banyak konsep dari pemrograman fungsional, misalnya, aturan pelingkupan JavaScripts sangat berbeda dari bahasa OOP populer lainnya seperti C #, dll. Ada banyak konsep lain di luar sana.
phant0m
Saya sangat setuju. Namun, jQuery dan KnockoutJs TIDAK ada bahasa scripting. Dan saya tidak akan merekomendasikan "belajar jQuery" tanpa pengetahuan dasar JavaScript.
Bruno Schäpper
Anda tidak dapat mempelajari jQuery tanpa mempelajari JavaScript dalam proses karena jQuery bukan bahasa, ini adalah perpustakaan yang ditulis dalam bahasa.
ILikeTacos
5

Seharusnya tidak akan membahayakan Anda dalam jangka panjang, karena mahir dalam sejumlah bahasa menjadikan Anda pengembang yang berpengetahuan luas. Menggunakan "alat yang tepat untuk melakukan pekerjaan yang benar" adalah tujuan akhir dan menjadi fasih dalam berbagai bahasa membantu Anda mencapai hal itu karena Anda tahu apa lagi yang ada di luar sana dan dapat membuat keputusan yang terinformasi dengan baik tentang platform / kerangka / bahasa apa yang akan digunakan untuk selesaikan sesuatu.

Deco
sumber
Terima kasih atas jawabannya tetapi saya bertanya-tanya apakah sering bergeser tidak akan mengganggu proses belajar saya atau memperpanjangnya atau apakah itu hanya tergantung pada kemampuan orang itu?
Lamin Sanneh
@LaminSanneh Mempelajari bahasa lain tidak membuat Anda lebih buruk pada yang pertama. Ini bukan RPG dan Anda tidak memiliki poin "keterampilan pemrograman" yang dapat Anda tetapkan untuk setiap bahasa. Paling buruk, dibutuhkan waktu yang Anda akan gunakan untuk bahasa lain. Tetapi bahasa hanyalah cara untuk mengekspresikan ide-ide Anda, dan mempelajari bahasa-bahasa baru memberi Anda perspektif dan ide-ide baru yang dapat Anda terapkan pada yang sudah Anda ketahui. Tentu, Anda tidak akan tahu sintaks setiap bahasa, tetapi siapa yang peduli tentang itu? Ini pencarian Google yang cepat
Jay
5

Selama karir Anda, Anda harus belajar bahasa baru dan teknologi baru; industri hanya membutuhkannya. Pada tugas profesional pertama saya, saya harus mengirimkan kode yang ditulis dalam Ada, C, dan Fortran, bersama dengan beberapa skrip SQL dan shell. Saya harus beralih dari C ++ ke Java dan kembali lagi dalam beberapa tahun terakhir. Saya telah menulis skrip shell dalam csh, bash, dan perl.

Meluangkan waktu untuk mempelajari berbagai bahasa, terutama jika mereka berada di domain yang berbeda (OO, fungsional, logis, dll.) Akan membantu Anda dalam beberapa cara. Ini akan membuat otak Anda tajam. Ini akan membantu Anda memisahkan konsep dari implementasi (misalnya, hash dan peta bukan hanya tipe data dalam bahasa tertentu). Ini akan memberi Anda gagasan yang lebih baik tentang alat apa yang sesuai untuk masalah yang diberikan (misalnya, saya tidak akan membangun situs Web di C, dan saya juga tidak akan menulis driver perangkat di Haskell). Mungkin memudahkan Anda untuk mencari pekerjaan ("Hei, dia sudah tahu Intercal 1 , kita tidak perlu melatihnya!"). Ini akan memberi Anda gambaran tentang tantangan apa yang dihadapi desainer bahasa. Mungkin menginspirasi Anda untuk membuat bahasa pemrograman Anda sendiri.

Paling tidak, itu akan membuat Anda tidak bosan.


1. Lelucon. Jangan mencoba mempelajari Intercal.

John Bode
sumber
4

Orang yang pensiun tahun ini memulai karier mereka sebelum C dibuat. Aman untuk mengatakan Anda mungkin mengganti bahasa pemrograman sekali atau dua kali dalam karier Anda. Anda tidak ingin bekerja untuk majikan yang tidak mengerti itu.

Saat Anda baru, beralih konteks antara dua bahasa jauh lebih sulit, jadi Anda akan lebih produktif jika Anda bekerja setidaknya 4-8 jam dalam satu bahasa sebelum beralih. Nantinya Anda akan dapat beralih secara instan tanpa kehilangan produktivitas. Dengan kata lain, menggunakan dua bahasa pada akhirnya akan menjadi kekuatan alih-alih memperlambat Anda.

Karl Bielefeldt
sumber
2

Ada sisi positif dan negatifnya.

Inilah sisi baiknya ...

Seperti yang disebutkan orang lain, bisa belajar yang baru dan bekerja dengan banyak bahasa dan alat pemrograman hampir penting untuk memiliki karir yang panjang dalam pemrograman. Banyak hal berubah selama bertahun-tahun, alat / bahasa datang dan pergi. Tentu, ada beberapa orang yang konten untuk diprogram dalam COBOL mainframe yang sama yang mereka gunakan pada 1980-an tetapi ini adalah situasi yang relatif jarang. Sebagian besar programmer akhirnya mengubah alat / bahasa beberapa kali selama karir mereka. Terkadang Anda dipekerjakan karena Anda tahu beberapa teknologi yang lebih tua atau tahu semua bahasa yang digunakan perusahaan.

Kelemahannya adalah ...

Beberapa majikan akan melihat Anda sebagai "jack of all trades, master of none" dan menolak aplikasi Anda tanpa memberi Anda kesempatan. Mereka mencari ahli yang sempit di bidang tertentu, bukan hanya programmer yang baik dan berpengetahuan luas. Kadang-kadang Anda mungkin terputus oleh SDM karena Anda tidak memiliki "5 tahun pengalaman terus menerus di [X]". Anda mungkin dapat menghindari ini dengan menyesuaikan resume Anda agar sesuai dengan pekerjaan tetapi ini mungkin tidak membantu Anda dalam wawancara teknis.

Bagi saya, sisi positifnya jauh lebih baik tetapi Anda harus menyadari bahwa sebagian kecil organisasi melihatnya sebagai negatif.

jfrankcarr
sumber
+1, Terlebih lagi, saya yakin ada korelasi antara minoritas organisasi ini dengan pemrograman yang buruk dan ketidakefektifan.
K.Steff
2
Namun negatif itu dibatalkan oleh pengusaha yang berpikir sebaliknya. Saya memiliki suara dalam keputusan mempekerjakan di mana saya bekerja, dan saya akan sangat sulit untuk meyakinkan untuk baik-baik saja mempekerjakan seseorang yang hanya memiliki satu bahasa pemrograman di bawah ikat pinggang mereka. Mungkin untuk posisi junior, tetapi tentu saja tidak untuk pengembang senior.
Jon Hanna
@JonHanna - Masalah utama adalah bahwa tim pengembangan mungkin tidak pernah bisa mewawancarai calon pengembang karena mereka disaring oleh HR, kadang-kadang oleh program otomatis. Ini, tentu saja, masalah yang lebih umum di organisasi yang lebih besar. Penting untuk memastikan bahwa SDM Anda tidak menyaring kandidat terbaik berdasarkan kriteria arbitrer.
jfrankcarr
+1 untuk menunjukkan kontra . Dari mana saya berasal, jumlah perusahaan yang mempertahankan pandangan "jack of all trade, master of none" tidak terlalu kecil.
lsoliveira
Ya, tapi kami bisa mengubahnya menjadi kualitas yang baik; selalu ada orang bodoh dalam SDM yang menganggap kualitasnya buruk. Namun pada akhirnya, jika SDM dalam suatu organisasi adalah idiot, mereka akan membuat karyawan yang buruk, dan sementara dipekerjakan mungkin ada yang lebih baik daripada garis pengangguran, Anda akan mencari pekerjaan baru segera dan mencari pekerjaan di tempat lain .
Jon Hanna
2

Ketika Anda melakukan pengembangan PHP, apakah Anda menulis javascript atau SQL? Dalam pengembangan C # Anda masih bisa menggunakan keduanya. Tidak begitu memotong dan mengering seperti menggunakan satu bahasa pemrograman.

Jika Anda senang melakukannya, jangan khawatir. Jika Anda tidak ingin melakukan keduanya (atau keduanya) maka Anda memiliki masalah.

Tanda
sumber
2

Mempelajari bahasa pemrograman baru akan mengajarkan Anda hal-hal tentang pemrograman yang dapat Anda terapkan pada bahasa yang sudah Anda kenal. Anda harus mempertimbangkan setidaknya bermain dengan beberapa bahasa lain, bahkan jika Anda tidak menggunakannya secara profesional, daripada hanya memiliki sedikit bahasa.

Idealnya, pendekatan yang sangat berbeda dengan yang sudah Anda kenal.

Jon Hanna
sumber
2

Tidak, tidak ada yang salah dengan mempelajari banyak bahasa dan cukup sering menggunakannya. Dalam kehidupan sehari-hari saya, saya dapat menjumpai Ruby, PHP, JavaScript, CoffeeScript, Python dan kadang-kadang C. Saya tahu semua bahasa ini dengan cukup baik dan berpindah dari satu bahasa ke bahasa lain hanya dengan membalik sebuah tombol di otak saya. Tentu saya kehilangan fitur dari beberapa bahasa ketika saya pergi ke yang lain tetapi Anda akan mengatasinya.

Saya mencoba untuk selalu memiliki bahasa yang saya pelajari secara mendalam dan kemudian bahasa lain sebagai "naik dan turun". Dengan cara ini Anda selalu memiliki tujuan pendidikan yang jelas dan kemudian sesuatu di cakrawala. Saat ini Ruby adalah bahasa utama saya dan saya sedang bereksperimen dengan Go. Saya mungkin tidak akan pernah mendapatkan pekerjaan sebagai pengembang Go tetapi belajar bahasa baru telah menjadikannya pengembang yang lebih baik.

Ketika saya mewawancarai pengembang, saya selalu suka melihat beberapa bahasa berbeda di resume mereka. Jika pengembang di memiliki "C / C ++" atau "PHP dan Javascript" di resume mereka, mereka terlihat jauh lebih menarik daripada seseorang yang memiliki 4 bahasa atau 5 bahasa. Pastikan Anda merasa nyaman dengan bahasa apa pun yang Anda daftarkan, semua yang ada di resume Anda adalah permainan yang adil dalam wawancara!

Singkatnya: Menggunakan banyak bahasa secara teratur adalah pertanda pengembang yang baik yang peduli akan keahlian mereka. Terus koding!

binarycleric
sumber
Saya akan mengatakan jika pengembang mengatakan "C / C ++" dalam resume, saya ingin itu menjadi satu-satunya bahasa di sana. Tetapi dengan bahasa lain yang tahan-bohong, semakin banyak semakin baik.
Coder
2

Saat melihat resume, kami biasanya mencari seseorang yang mengerti banyak bahasa. Juga, karena pengalaman seseorang meningkatkan jumlah bahasa yang mereka gunakan harus meningkat juga.

Dalam lingkungan kita, kita sering harus mengatasi masalah baru dan menarik dan kami mencari orang yang mau terjun dan memecahkan masalah itu, apakah mereka perlu belajar bahasa baru atau tidak. Masalahnya mungkin dalam kode yang berjalan di desktop Windows, server Windows, server Linux atau browser.

Mengetahui banyak bahasa adalah tanda seseorang yang memiliki sikap baik terhadap keahlian mereka. Mereka ingin selalu belajar hal-hal baru sehingga mereka lakukan. Kurangnya mengetahui sejumlah bahasa merupakan pertanda bagi saya bahwa seseorang hanya melakukan yang seminimal mungkin dan tidak tertarik untuk belajar.

Sarel Botha
sumber
2

Selalu menjadi masalah bagi orang untuk memprogram menggunakan lebih dari satu bahasa. Ketika orang-orang menggunakan Assembly, mereka harus bersandar pada bahasa Assembly baru setiap kali mereka mengubah arsitektur.

Ketika orang-orang di mana melakukan COBOL atau Fortran, mereka juga biasanya melakukan RPG dan / atau JCL.

Di Unix, orang akan bekerja dengan C, sed, awk, shell script dan hampir semua yang ada di wastafel dapur Unix (hampir setiap alat baris perintah di Unix adalah miliknya sendiri, DSL yang sangat spesial.)

Di DOS, orang akan memprogram dalam Turbo Pascal atau C sebagai tambahan untuk skrip batch. Kemudian ketika Windows datang, itu VB atau sesuatu seperti PowerBuilder digabungkan dengan SQL dan skrip instalasi batch.

Saat ini, secara de facto orang "bekerja" dengan lebih dari dua bahasa setiap hari (dan dengan "bekerja", maksud saya, melakukan pengodean sehari-hari atau memiliki pengetahuan kerja). Java atau C # atau VB setidaknya dicampur dengan JavaScript dan SQL. Kemudian bahasa lain ikut bermain untuk skrip batch / pekerjaan dan sejenisnya. Kemudian, untuk setiap bahasa, Anda memiliki kerangka kerja yang dengan sendirinya mengimplementasikan DSL internal, sebuah bahasa mini dalam dirinya sendiri.

Jadi, tidak hanya bermanfaat untuk bekerja dengan lebih dari satu bahasa, tetapi juga perlu. Tidak ada cara untuk membangun sistem modern dan kompleks dengan satu bahasa (dan dengan "membangun", saya tidak bermaksud hanya mengkodekan beberapa omong kosong yang dikompilasi, tetapi membangun sesuatu dengan desain yang layak.)

Heck, saya akan pergi mengambil risiko dan mengatakan bahwa saya akan mengharapkan anak-anak di perguruan tinggi menjadi mahir dalam dua atau lebih bahasa jika mereka serius berada di profesi ini.

Jadi, mengenai pertanyaan Anda:

Pertanyaan utama saya adalah, apakah bijaksana bagi saya untuk terus melakukan ini atau haruskah saya melanjutkan pengembangan dalam C #? Apakah ini akan membahayakan saya dalam jangka panjang (ingatlah bahwa tujuan utama saya bukanlah menjadi penarik semua perdagangan) atau apakah itu praktik yang baik untuk dilakukan?

Jadi, jawaban singkat, tidak, menggunakan atau beralih antar bahasa tidak akan memberi Anda cooties. Mengetahui lebih dari satu bahasa tidak akan membuat Anda menjadi penarik semua perdagangan, dan tidak ada cara bagi pengembang untuk menjadi ahli dengan tidak dapat menggunakan lebih dari satu bahasa.

luis.espinal
sumber
1

Semakin banyak Anda harus membandingkan dengan mengacu pada bahasa utama Anda, semakin baik Anda akan memahami pengorbanan desain yang membuatnya sangat kuat atau lemah pada hal-hal tertentu dan mengambil keuntungan / mengimbangi hal-hal itu. Kuasai setidaknya satu tetapi jangan khawatir tentang menjadi banyak orang lain. Itu hanya terlihat bagus.

Lebih baik untuk bertanya bagaimana resume dengan hanya satu bahasa yang terdaftar dari pengembang "senior". Jawaban atas pertanyaan itu adalah: "Tidak terlalu tertarik dengan apa yang mereka lakukan untuk mencari nafkah."

Erik Reppen
sumber
0

Dua bahasa dapat membantu Anda atau tidak - itu tergantung. Itu tidak akan membahayakan Anda, itu sudah pasti. Banyak pengembang cenderung berpikir bahwa menggunakan sesuatu yang lain selain dari 'bahasa utama' adalah buang-buang waktu, tetapi saya sangat tidak setuju. Mempelajari bahasa lain (dan menggunakannya) adalah manfaat murni: memberi Anda perspektif yang berbeda tentang cara mengatasi masalah. Mungkin terjadi bahwa Anda akan mulai menggunakan salah satu bahasa untuk tugas tertentu setiap saat (seperti yang terjadi pada saya setelah saya memiliki kesempatan untuk belajar dan menggunakan Python).

MaciekTalaska
sumber
0

Dalam situasi ini Anda tidak bertanya tentang beralih dari JAVA ke C # dan kembali sepanjang waktu, sebaliknya Anda menggunakan C # dan PHP yang sebenarnya bukan masalah besar.

Misalkan Anda ingin melakukan beberapa hal berbasis WEB di mana Anda menggunakan tumpukan WAMP (Windows / Apache / MySQL / PHP) dan C #. Anda menggunakan C # untuk menulis beberapa layanan berbasis SOAP dan kemudian menggunakan PHP untuk mengkonsumsinya.

Ini sepertinya benar-benar diterima oleh saya.

Bagaimanapun, mengetahui lebih dari satu bahasa itu baik. Semakin banyak Anda tahu, semakin baik. Perpustakaan PHP / C # / Java / Python / javascript [JQuery misalnya]. Bermanfaatlah untuk sebanyak mungkin orang.

PSU_Kardi
sumber