Saya telah membaca beberapa artikel di Internet tentang pilihan bahasa pemrograman di perusahaan. Baru-baru ini banyak bahasa dinamis yang diketik telah populer, yaitu Ruby, Python, PHP dan Erlang. Tetapi banyak perusahaan masih tetap dengan bahasa yang diketik statis seperti C, C ++, C # dan Java.
Dan ya, salah satu manfaat dari bahasa yang diketik statis adalah bahwa kesalahan pemrograman ditangkap lebih awal, pada waktu kompilasi, bukan pada saat dijalankan. Tetapi ada juga keuntungan dengan bahasa yang diketik secara dinamis. ( lebih lanjut tentang Wikipedia )
Alasan utama mengapa perusahaan tidak mulai menggunakan bahasa seperti Erlang, Ruby dan Python, tampaknya menjadi fakta bahwa mereka diketik secara dinamis. Itu juga tampaknya menjadi alasan utama mengapa orang-orang di StackOverflow memutuskan menentang Erlang. Lihat Mengapa Anda memutuskan "menentang" Erlang .
Namun, tampaknya ada kritik yang kuat terhadap mengetik dinamis dalam perusahaan, tapi saya tidak benar-benar mengerti mengapa itu adalah bahwa yang kuat.
Sungguh, mengapa ada begitu banyak kritik terhadap pengetikan dinamis di perusahaan? Apakah itu benar-benar mempengaruhi biaya proyek yang banyak, atau apa? Tapi mungkin saya salah.
dynamic
dan mulai menggunakannya. Tidak lebih dari panggilan metode normal atau kelebihan operator.Jawaban:
Ya, saya percaya mereka melakukannya.
Ada beberapa alasan yang perlu dipertimbangkan dalam pemilihan bahasa untuk proyek baru:
while(1)
.... ....Jika Anda dapat menganggap bahwa organisasi yang bekerja sama dengan Anda memiliki prinsip "Maju" (Ada istilah akuntansi untuk ini), dan tidak akan secara acak memutuskan untuk tidak bekerja pada perangkat lunak, maka Anda memiliki kasus yang jauh lebih baik untuk menggunakan perangkat lunak. Karena tidak ada penjualan Bisnis Utama (membawa implikasi mengambil tanggung jawab untuk mempertahankannya) Python / Perl / $ dynamic_language, itu sangat mengurangi risiko.
Dalam pengalaman saya, pengelola open source sering memiliki masalah dengan sepenuhnya bertanggung jawab atas perbaikan bug dan merilis pembaruan. "Gratis, KAMU kerjakan!" adalah tidak jawaban yang dapat diterima oleh kebanyakan bisnis (bukan compentencies inti mereka, antara lain).
Tentu saja, saya tidak berbicara tentang dunia webapp / startup, yang cenderung bermain dengan risiko tinggi / aturan hadiah tinggi dan sangat terbuka untuk tetap berada di tepi teknologi yang berbusa.
sumber
Anda memberi terlalu banyak kredit teknis kepada pembuat keputusan Enterprise. Ada pepatah lama, "Tidak ada yang dipecat karena membeli IBM." Jika Anda menempuh rute yang berbeda dan keadaan menjadi berbatu (selalu demikian), tidak ada yang mau mengambil risiko disalahkan. Tetap berpegang pada standar dan menyalahkan orang lain.
Ada banyak perusahaan yang lebih muda yang pada akhirnya akan menjadi perusahaan masa depan dan akan menggunakan bahasa-bahasa tersebut.
Dan jangan lupa baris buggillion kode yang ditulis dalam VBA!
sumber
Alasan perusahaan menggunakan C, C ++, C # dan Java bukan karena mereka diketik secara statis (setidaknya tidak secara langsung). Pembuat keputusan perusahaan tidak membuat pilihan seperti ini berdasarkan perbandingan objektif dari sistem tipe, saya jamin.
Usaha melakukan peduli tentang:
Secara pribadi, saya pikir jika Anda ingin menggunakan bahasa dinamis di Enterprise, maka peluang terbaik Anda sejauh ini adalah menggunakan sesuatu yang mendukung piggy back-on pada ekosistem perusahaan yang ada. Yang paling menonjol adalah bahasa JVM dinamis baru: mis. JRuby, Groovy, Clojure. Sejauh menyangkut manajemen TI, ini adalah pilihan bahasa dinamis "aman" karena mereka beroperasi di dalam dan bermain dengan baik dengan ekosistem perusahaan Java lainnya.
sumber
Saya pikir ini hanya alasan utama mereka. Alasan sebenarnya adalah bahwa bisnis tidak benar-benar menganggapnya serius dan merasa bahwa mereka mungkin terlalu amatir. Java dan .NET adalah "nama bisnis besar", memiliki pemasaran komersial yang baik, dukungan pelanggan komersial, dan dengan demikian secara luas dianggap sangat serius.
Sangat disayangkan bahwa praktis tidak ada bahasa yang diketik secara statis yang mendekati sepopuler nama bisnis besar. Mengapa lingkungan pemrograman sumber terbuka / perangkat lunak bebas hampir selalu diketik secara dinamis? Ini mungkin mengindikasikan bahwa bahasa yang diketik secara statis sebenarnya tidak semudah itu dibuat, dan bahwa pengetikan dinamis adalah “hacky man's hack”. Jika itu masalahnya, bisnis yang memutuskan bahasa yang diketik secara dinamis mungkin benar.
sumber
EDIT: Saya harus menyebutkan bahwa bahasa pemrograman utama saya saat ini adalah Python, yang diketik secara dinamis. Secara pribadi, saya suka kebebasan yang datang dengan tidak harus pra-mendeklarasikan variabel, tetapi kadang-kadang, akan lebih baik untuk menentukan (misalnya) seperti apa parameter fungsi yang diperlukan untuk menangkap kesalahan lebih awal daripada terlambat.
sumber
Bahasa yang diketik secara dinamis dianggap (oleh beberapa programmer / bos) untuk menghasilkan kode yang tidak berfungsi juga. Fakta bahwa program diketik secara dinamis mengkompilasi memberi tahu Anda sangat sedikit tentang kebenarannya. Fakta bahwa bahasa yang diketik secara statis mengkompilasi memberi tahu Anda lebih banyak. (Di sisi lain, masih ada jalan panjang antara kompilasi dan melakukan hal yang benar, jadi ini mungkin kurang berarti daripada tampaknya)
Bahasa yang diketik secara dinamis dianggap sebagai bahasa scripting. Anda tidak akan pernah menulis aplikasi dalam bash atau file batch. Semua bahasa yang diketik secara dinamis cenderung dilingkarkan ke dalam kategori itu (tidak adil).
Bahasa yang diketik secara dinamis lebih lambat dari pada bahasa yang diketik secara statis. (Tapi kita akan melihat seberapa baik bekerja pada perubahan JIT itu)
sumber
Catatan: ini sebagian besar subjektif dan berdasarkan pengalaman dan kesan saya.
Bahasa yang diketik secara dinamis sangat berbeda dari bahasa yang diketik secara statis. Perbedaan ini mungkin menjadi lebih penting dalam perangkat lunak perusahaan kelas berat daripada di sebagian besar aplikasi lainnya.
Bahasa yang diketik secara statis cenderung sangat preskriptif. Metode hanya akan mengambil input yang sama persis dengan tanda tangannya. Tingkat akses cenderung menjadi sangat penting dan antarmuka didefinisikan secara eksplisit, dengan pembatasan yang tegas tetapi tegas untuk menegakkan definisi tersebut.
Bahasa yang diketik secara dinamis di sisi lain sangat pragmatis. Jenis konversi sering terjadi secara implisit, fungsi bahkan dapat bermain bersama jika Anda memberikan jenis input yang salah asalkan berperilaku cukup mirip. Dalam bahasa seperti Python, bahkan tingkat akses akan didasarkan pada kontrak daripada pembatasan teknis (yaitu hanya
private
karena Anda diberitahu untuk tidak menggunakannya dan memiliki nama yang lucu).Banyak programmer lebih suka bahasa yang dinamis karena mereka (bisa dibilang) memungkinkan prototyping cepat. Kode sering berakhir lebih pendek (jika hanya karena kurangnya jenis deklarasi) dan jika Anda ingin melanggar protokol yang tepat karena Anda memerlukan solusi cepat dan kotor atau ingin menguji sesuatu, itu mudah.
Sekarang, alasan bahwa perusahaan "enterprisey" sering lebih suka bahasa yang diketik secara statis adalah karena mereka lebih membatasi dan lebih eksplisit tentang pembatasan itu. Meskipun dalam prakteknya bahkan kode yang diketik secara statis dapat dipecah oleh orang idiot dengan kompiler, banyak masalah akan jauh lebih terlihat jauh lebih awal ke dalam proses (yaitu sebelum runtime). Ini berarti bahwa meskipun basis kode besar, monolitik dan kompleks, banyak kesalahan dapat ditangkap dengan mudah, tanpa harus menjalankan kode atau mengirimkannya ke departemen QA.
Alasan mengapa manfaat tidak lebih besar daripada kerugian bagi banyak programmer di luar lingkungan itu adalah bahwa ini adalah kesalahan yang akan sering dengan mudah ditangkap oleh pemeriksaan menyeluruh terhadap kode atau bahkan dengan mencoba menjalankannya. Terutama ketika mengikuti metodologi uji-didorong, kesalahan ini sering menjadi sepele untuk ditangkap dan mudah diperbaiki. Juga, dengan banyak perusahaan seperti itu memiliki siklus rilis yang lebih pendek, produktivitas seringkali lebih penting daripada kekakuan dan banyak pengujian (dasar) sedang dilakukan oleh pengembang sendiri.
Alasan lain bahwa banyak perusahaan tidak menggunakan bahasa yang diketik secara dinamis adalah kode warisan. Konyol, bagi perusahaan besar, seringkali perusahaan akan tetap berpegang pada solusi yang berhasil, bahkan jika mereka sudah melewati masa simpannya. Inilah sebabnya mengapa banyak perusahaan besar memberlakukan Internet Explorer 6 dan sangat lambat untuk memutakhirkan OS mereka. Ini juga sebabnya mereka akan sering menulis kode baru dalam bahasa "lama" (misalnya versi Jawa kuno): jauh lebih mudah untuk menambahkan beberapa baris kode ke perangkat lunak yang tidak hidup daripada untuk mendapatkan persetujuan untuk penulisan ulang lengkap dalam bahasa baru bahasa.
tl; dr: bahasa statis terasa lebih seperti birokrasi, sehingga manajer yang tegas lebih menyukainya.
sumber
+
mengambil angka dan menambahkannya, jika Anda ingin penggabungan, Anda perlu menggunakan.
; di JS kedua operasi berbagi operator yang sama - jika Anda tidak tahu bagaimana nilai Anda akan berperilaku Anda diharapkan untuk mengubahnya secara eksplisit. Tentu saja ini juga ada hubungannya dengan pengetikan yang longgar vs pengetikan yang ketat (Python bahkan lebih ketat), tetapi pada dasarnya Anda harus memastikan nilai Anda memiliki tipe yang tepat atau membuat operasi Anda menegakkan tipe yang diharapkan.Tidak, saya tidak berpikir bahasa yang diketik secara dinamis pantas menerima semua kritik. (Atau jika Anda lebih suka, mereka layak menerima kritik sebanyak bahasa yang diketik secara statis.)
Dalam pengalaman saya (dan saya tidak berusaha untuk menggeneralisasi pernyataan ini), programer yang mengkritik bahasa dinamis belum menggunakannya. Percakapan biasanya berjalan "tetapi dengan mengetik statis kompiler menangkap begitu banyak kesalahan!" dan saya katakan "baik, itu tidak masalah, dalam pengalaman saya". (Biasanya programmer lain dari Java, Delphi atau latar belakang serupa; Saya tidak tahu ada programmer Haskell atau ML.)
Satu-satunya hal yang benar-benar menggelisahkan saya adalah ketika seseorang mengklaim bahwa teknik Foo tidak mungkin dilakukan (atau mungkin sangat sulit dilakukan) dalam bahasa yang diketik secara dinamis ... ketika teknik itu ditemukan di, oleh dan untuk diketik secara dinamis bahasa. IDE? Smalltalk. Refactoring otomatis? Smalltalk. Penelepon / pelaksana-dari? Smalltalk.
sumber
Perusahaan tidak mengadopsi bahasa dan alat baru dengan cukup cepat dan ada alasan bagus untuk itu. Tetapi, ketika salah satu alat utama seperti C # menerapkan beberapa fitur ini, maka mereka akan masuk ke perusahaan utama ....
sumber