Pernyataan ini menunjukkan bahwa bahasa yang diketik secara statis tidak ideal untuk situs web:
Saya akan kontras dengan membangun situs web. Saat merender halaman web, sering kali Anda memiliki banyak komponen yang berinteraksi di halaman web. Anda memiliki tombol di sini dan widget kecil di sana dan ada lusinan di halaman web, dan juga mungkin puluhan atau ratusan halaman web di situs web Anda yang semuanya dinamis. Dengan sistem dengan luas permukaan yang sangat besar seperti itu, menggunakan bahasa yang diketik secara statis sebenarnya cukup tidak fleksibel. Saya akan merasa sakit mungkin untuk memprogram di Scala dan membuat halaman web dengan itu, ketika saya ingin secara interaktif menekan tombol dan apa-tidak. Jika seluruh sistem harus koheren, seperti seluruh sistem harus mengetik centang hanya untuk dapat memindahkan tombol, saya pikir itu bisa sangat tidak fleksibel.
Sumber: http://www.infoq.com/interviews/kallen-scala-twitter
Apakah ini benar? Mengapa atau mengapa tidak?
sumber
Button
kapanWebControl
berisi semua info yang Anda butuhkan dan semua kontrol berasal darinya.Jawaban:
Saya sangat tidak setuju. Ketika sistem tumbuh lebih besar, bahasa yang diketik secara statis memastikan ketahanan pada tingkat komponen dan dengan demikian fleksibilitas pada tingkat sistem.
Juga, contoh yang diberikan oleh penulis tidak benar-benar masuk akal. Sepertinya orang ini tidak tahu bahwa polimorfisme dapat dicapai dengan cara lain selain mengetik bebek.
Ada sejumlah orang yang mengklaim bahasa dinamis lebih unggul, tetapi itu biasanya didasarkan pada kurangnya pengalaman mereka dengan sistem tipe ekspresif yang misalnya mendukung subtipe struktural, tipe data aljabar, dan fungsi urutan pertama.
sumber
Pertama-tama, ingatlah bahwa penulis pernyataan di atas berbicara tentang pengembangan situs web. Jadi dia khawatir tentang pengembangan presentasi , dan di situlah dia berpikir Scala tidak akan menjadi pilihan yang baik ...
Karena itu, saya memiliki pengalaman yang baik dengan pengembangan web. Saya telah bekerja selama setidaknya 8 tahun secara eksklusif dengannya, 5 di antaranya di agensi digital.
Dan, ya, dalam pengalaman saya, bahasa yang dikompilasi secara statis diketik pada lapisan presentasi bisa menjadi hambatan besar. Konten perlu diubah terus-menerus, jauh lebih sering daripada persyaratan bisnis. Dan biasanya ini perlu dilakukan oleh tim yang berbeda (pengembang "front-end"). Mereka biasanya tahu banyak tentang HTML, JavaScript, standar web, CSS, tetapi tidak banyak tentang bahasa sisi server seperti Java dan C #. Mereka juga berasumsi bahwa segala macam perubahan dalam suatu template segera tersedia; mereka tidak digunakan untuk kompilasi dan mengetik kesalahan. Dan mereka benar: bahasa yang diketik secara statis sangat baik untuk persyaratan yang sulit dan kompleks, seperti akses data dan aturan bisnis, tetapi tidak sebagus untuk pengembangan antarmuka.
Itu, pada kenyataannya, salah satu manfaat utama dari menggunakan bahasa template khusus dan ditafsirkan seperti Velocity . Mudah digunakan, daya, dan fleksibilitasnya memadai untuk pengembang lapisan presentasi. Dan kemudian orang-orang di sisi server bebas untuk menggunakan bahasa yang diketik secara statis di tempat lain ...
Namun, saya juga setuju bahwa Scala agak berbeda. Menjadi pada saat yang sama jauh lebih sedikit bertele-tele dan jauh lebih ekspresif daripada Jawa, saya percaya itu bisa digunakan untuk pengembangan presentasi - jadi mungkin itu bisa berhasil digunakan sebagai bahasa template. Dan jika itu juga dapat digabungkan ke kerangka kerja seperti Play (yang mengkompilasi situs web secara otomatis setelah setiap perubahan), itu bisa menjadi pemenang IMHO. Namun, bahkan Play telah memilih bahasa template (dinamis) seperti Groovy, yang bukan pertanda baik.
Singkatnya: masalah dengan Scala jauh lebih terkait dengan fakta bahwa itu dikompilasi. Bahkan jenis mekanisme inferensi membuat Anda hampir lupa itu juga diketik secara statis.
(Dan maaf tentang bahasa Inggris saya. Beri tahu saya jika ada sesuatu yang tidak jelas, saya akan mencoba memperbaikinya.)
sumber
Saya pikir teks (dan sebagian besar jawaban) mencampur bahasa yang diketik secara statis dan bahasa yang terlalu banyak bertele-tele . Tentu saja, persimpangan sangat besar (khususnya ketika mempertimbangkan hanya bahasa yang paling utama); tetapi ada beberapa contoh menarik dari bahasa non-verbose, yang diketik secara statis: Go, Haskell, Scala, Rust ...
sumber
Saya mendorong Anda untuk membaca Strong Typing vs. Strong Testing dari Bruce Eckel . Argumen utamanya adalah bahwa kualitas perangkat lunak semuanya bermuara pada pengujian. Anda dapat menguji dengan berbagai cara. Compiler menguji beberapa hal pada waktu kompilasi: cobalah untuk menyimpan string dalam variabel int dan kemungkinan akan menggonggong Anda. Dalam bahasa dinamis, banyak pengujian terjadi saat runtime. Pada akhirnya, itu tidak masalah ketika pengujian terjadi. Itu harus terjadi. Waktu yang Anda peroleh karena tidak mengkompilasi dalam bahasa dinamis hilang saat pengujian saat runtime. Anda dengan kuat menguji semuanya, bukan?
Karena itu, preferensi untuk bahasa yang dikompilasi dengan sistem tipe kaku versus bahasa dinamis adalah hanya itu - preferensi. Jenis seperti petinju versus celana atau sandal dibandingkan celana dalam Perancis. Tidak ada jawaban benar atau salah. Kenakan mereka dengan sikap yang benar dan hanya ada yang luar biasa.
sumber
Saya setuju dengan itu di sebagian besar jika, karena mari kita hadapi itu, ketika Anda berurusan dengan klien di web-plataform, fleksibilitas adalah suatu keharusan.
Bahasa yang diketik secara statis lebih kuat dan aman daripada yang diketik secara dinamis, tetapi ketika Anda mulai mengadaptasi kode untuk bertindak dengan cara yang tidak dimaksudkan dan Anda membutuhkannya dengan cepat, solusi terlihat agak rumit dan kaku.
Jadi jika Anda memiliki perubahan untuk menggabungkan teknologi saya akan merekomendasikan untuk membuat inti dalam bahasa yang diketik secara statis (inti tidak banyak berubah) dan menggunakan secara dinamis untuk interaksi pengguna.
sumber
Saya pikir penulis posting ini belum melihat ke Scala sendiri. Sementara saya setuju bahwa Java dan C # memiliki keterbatasan dan sedikit tidak fleksibel untuk pengembangan web, Scala adalah bahasa yang diketik secara statis yang sangat berbeda dengan apa yang biasanya Anda pikirkan ketika Anda mendengarnya. Scala memungkinkan untuk mengetik bebek dan juga versi yang aman dari patching monyet (Melalui konversi implisit). Itu membuat pustaka pemrograman sedikit lebih rumit karena Anda harus memikirkan tipe, tetapi jika Anda hanya menggunakan pustaka seperti Lift, rasanya sangat mirip dengan bahasa yang dinamis kecuali bahwa kompiler akan memberi tahu Anda tentang bug yang jelas di mana Anda tidak menggunakannya. Baik. Saya pribadi berpikir kerangka kerja lift tidak harus bersembunyi dari ruby di rel atau sejenisnya. Lihat contoh kode di sini atau di sinidan putuskan sendiri. Saya berkembang dalam lift untuk sementara waktu sekarang dan tidak pernah memiliki situasi di mana saya memiliki kesalahan ketik dan meskipun "Ah man, jika ini dinamis itu akan bekerja" ... karena jika itu dinamis itu tidak akan mengatakan kepada saya bahwa ada bug sampai crash saat runtime.
sumber
Secara pribadi saya pikir apa yang mereka katakan adalah benar untuk sistem apa pun, bukan hanya situs web. Anda akan memerlukan pengetikan statis ketika Anda berbicara dengan perangkat keras, karena segala sesuatu pengetikan dinamis memiliki kelemahan dan manfaat yang sama tidak peduli apa yang Anda lakukan, sungguh, dan apa yang terbaik tergantung pada selera dan masalah spesifik untuk setiap proyek.
sumber
Praktis Jawaban cepat: Tergantung pada ukuran dan kompleksitas ukuran web. Situs web kecil, program dinamis. lang., Situs web besar dan kompleks, program statis. lang.
Jawaban membosankan yang diperpanjang: Banyak pengembang bersikeras bahwa situs web harus dilakukan dengan program dinamis. lr. tetapi kenyataannya adalah bahwa, pada akhirnya, alat pengembangan web cenderung menggunakan atau meniru bahasa yang diketik statis.
Saya telah bekerja dengan PHP beberapa kali, dan cepat atau lambat, kami harus menambahkan banyak kode yang memverifikasi jenis data yang diberikan, yang tersirat dalam program yang diketik secara statis. lang.
Lagn diketik. juga membantu penggunaan IDE, yang membutuhkan banyak jenis verifikasi.
(dibawa oleh tetanggamu, pembuat & pembuat kompilasi ;-))
sumber
Saya agak setuju. Ketika saya melihat sebagian besar kode C # web-end, ada banyak casting dari string dan serialisasi data ke string. Pada dasarnya, HTTP sebagai protokol sangat cocok untuk bahasa dinamis.
sumber