Saya telah memeriksa situs tersebut dengan sangat singkat, dan merasa penasaran. Apakah ada keuntungan menggunakan Dart? Apakah itu hanya pengganti JavaScript?
Sepertinya Java sederhana. Menulis cukup banyak C # di tempat kerja, bahasanya terasa seperti apa yang saya gunakan, jadi mempelajari sintaksisnya seperti angin untuk dipelajari. Adakah yang punya pendapat atau pengalaman dengan bahasa tersebut?
(Dibandingkan dengan CoffeeScript (= Saya tidak melakukan sintaksis Ruby) sintaksanya terlihat lebih akrab bagi saya).
javascript
dart
marko
sumber
sumber
Is there any advantages of using Dart?
artinya Keuntungan lebih dari apa dan diukur caranya ? Ada sejumlah bahasa yang dikompilasi ke JavaScript. Sebagian besar dari mereka melakukan sesuatu yang jauh lebih baik daripada Dart. Beberapa melakukan banyak hal lebih baik daripada Dart. Dan misalnya, jika Anda melakukan C #, maka ScriptSharp mungkin menarik untuk Anda. Meskipun di antara semua bahasa yang dikompilasi dengan JavaScript, ini masih jauh dari pilihan pertama saya, karena bagi Anda itu akan menghadirkan transisi yang sangat mudah, bahkan mungkin memungkinkan untuk mem-porting kode yang ada tanpa kesulitan.Jawaban:
Terima kasih atas pertanyaan anda! Penafian penuh, saya bekerja di tim Dart.
Mungkin keuntungan terbaik yang dimiliki Dart saat ini adalah bahwa hal itu familiar bagi C #, Java, C ++, dan sebagian besar pengembang JavaScript. Banyak pengembang memiliki seperangkat harapan di sekitar bahasa mereka (OO berbasis kelas, ruang lingkup leksikal, sintaksis akrab) dan alat-alat mereka (penyelesaian kode, refactoring, navigasi kode, debugging) yang bertujuan untuk dipenuhi dan dilampaui oleh Dart.
Inilah beberapa hal yang saya sukai dari bahasa ini:
Jenis statis opsional. Ketika saya membuat prototipe atau hanya menulis skrip kecil, saya tidak menggunakan banyak tipe statis. Aku hanya tidak membutuhkannya, dan aku tidak ingin terjebak dengan upacara. Namun, beberapa skrip tersebut berkembang menjadi program yang lebih besar. Sebagai skala skrip, saya cenderung ingin kelas dan anotasi tipe statis.
Tidak bersalah sampai terbukti bersalah. Dart berusaha keras untuk meminimalkan situasi yang mengakibatkan kesalahan waktu kompilasi. Banyak kondisi di Dart adalah peringatan, yang tidak menghentikan program Anda dari berjalan. Mengapa? Sesuai dengan mode pengembangan web, sangat penting untuk memungkinkan pengembang untuk mencoba sedikit kode, tekan reload, dan lihat apa yang terjadi. Pengembang tidak harus terlebih dahulu membuktikan seluruh program benar sebelum hanya menguji sudut kode.
Lingkup leksikal. Ini luar biasa, jika Anda tidak terbiasa. Sederhananya, visibilitas variabel, dan bahkan ini , ditentukan oleh struktur program. Ini menghilangkan kelas teka-teki dalam pemrograman web tradisional. Tidak perlu lagi mengikat fungsi untuk menjaga ini sesuai dengan apa yang Anda pikirkan atau harapkan.
Kelas nyata dimasukkan ke dalam bahasa. Jelas sebagian besar pengembang ingin bekerja di kelas, karena sebagian besar kerangka kerja pengembangan web menawarkan solusi. Namun, "kelas" dari kerangka A tidak kompatibel dengan kerangka B, dalam pengembangan web tradisional. Dart menggunakan kelas secara alami.
Fungsi tingkat atas. Salah satu bagian yang menyakitkan dari Jawa adalah bahwa segala sesuatu harus dimasukkan ke dalam kelas. Ini agak artifisial, terutama ketika Anda ingin mendefinisikan beberapa fungsi utilitas. Di Dart, Anda dapat menentukan fungsi di tingkat atas, di luar kelas apa pun. Ini membuat komposisi perpustakaan terasa lebih alami.
Kelas memiliki antarmuka implisit. Penghapusan antarmuka eksplisit menyederhanakan bahasa. Tidak perlu lagi mendefinisikan IDuck di mana-mana, yang Anda butuhkan sekarang adalah kelas Bebek. Karena setiap kelas memiliki antarmuka implisit, Anda dapat membuat
MockDuck implements Duck
Dinamakan konstruktor. Anda dapat memberikan nama konstruktor, yang benar-benar membantu dengan kesesuaian. Sebagai contoh:
var duck = new Duck.fromJson(someJsonString)
Konstruktor pabrik. Pola pabrik cukup umum, dan senang melihat ini dimasukkan ke dalam bahasa. Konstruktor pabrik dapat mengembalikan singleton, objek dari cache, atau objek dari sub-tipe.
Terisolasi. Lewatlah sudah hari-hari berbagi keadaan bisa berubah di antara utas (teknik rawan kesalahan). Isolat Dart adalah tumpukan memori yang terisolasi, dapat dijalankan dalam proses atau utas terpisah. Isolat berkomunikasi dengan mengirim pesan melalui porta. Isolat berfungsi di Dart VM dan dapat dikompilasi ke pekerja Web di aplikasi HTML5.
Dart mengkompilasi ke JavaScript. Ini sangat penting, karena JavaScript adalah lingua franca web. Aplikasi dart harus dijalankan di web modern.
Perkakas yang kuat. Proyek Dart juga mengirimkan editor. Anda akan menemukan penyelesaian kode, refactoring, perbaikan cepat, navigasi kode, debugging, dan banyak lagi. IntelliJ juga memiliki plugin Dart.
Perpustakaan. Anda dapat mengatur kode Dart ke dalam pustaka, untuk penempatan nama yang lebih mudah dan penggunaan kembali. Kode Anda dapat mengimpor perpustakaan, dan perpustakaan dapat mengekspor kembali.
Interpolasi string. Ini hanya fitur yang bagus, membuatnya mudah untuk membuat string:
var msg = "Hello $friend!";
noSuchMethod Dart adalah bahasa yang dinamis, dan Anda dapat menangani panggilan metode sewenang-wenang dengan
noSuchMethod()
.Generik. Mampu mengatakan "ini adalah daftar apel" memberikan alat Anda lebih banyak info untuk membantu Anda dan menangkap potensi kesalahan lebih awal. Untungnya, generik Dart lebih sederhana dari apa yang mungkin Anda terbiasa.
Kelebihan operator. Kelas Dart dapat mendefinisikan perilaku untuk operator seperti
+
atau-
. Misalnya, Anda dapat menulis kode sepertinew Point(1,1) + new Point(2,2)
.Setelah mengatakan semua itu, ada lebih banyak perpustakaan JavaScript di luar sana.
Secara pribadi, saya percaya ada banyak ruang di web untuk banyak bahasa. Jika aplikasinya luar biasa, dan itu berjalan di sebagian besar peramban modern, saya tidak terlalu peduli dengan bahasa apa yang digunakan. Selama Anda, pengembang, senang, produktif, dan meluncurkan di web, itu Apa masalahnya! :)
sumber
Itu satu poin tentang Dart. Javascript dianggap sebagai bahasa yang aneh dengan beberapa idiom umum. Dalam bahasa seperti Jawa seringkali ada cara alami untuk mendekati masalah. Misalnya jika Anda menyimpan inventaris tabel, di Java atau C # Anda akan membuat Tabel kelas.
Javascript tidak memiliki kelas, Anda mungkin ingin menggunakan prototipe tetapi mereka merasa canggung dan tidak menyediakan struktur dan alat enkapsulasi yang kuat. (Setidaknya bukan tanpa membuat aksi.) Warisan, komposisi dll canggung dengan prototipe Javascript. Itu sebabnya kebanyakan orang menggunakan peta hash biasa untuk menyimpan data. Atau mereka menggunakan lib pihak ke-3 seperti prototipe yang memberi Anda pengalaman seperti kelas.
Jadi kenyamanan adalah satu hal, susun yang lain. Javascript tidak skalakan dengan baik karena tidak ada cara standar untuk menyusun aplikasi skala besar. Namun saat ini lib pihak ke-3 menjadi sangat populer. (Seperti backbone.js)
Dart adalah sesuatu untuk menyelesaikannya. Itu ada di sana untuk memberi Anda kenyamanan struktural Jawa dan terlebih lagi ia tidak memiliki semua fitur JS yang canggung ini. (Sebagian besar dari mereka terkait dengan pengetikan yang lemah.)
Jadi jawabannya adalah ya: kelas, warisan, ...: "OOP tradisional". (Sebagian besar webworld JS appapps di luar sana menggunakan callback berbasis jQuery didekati sebagai struktur utama.) Dan itu memiliki bentuk longgar statis mengetik, namun itu bukan titik penjualan utama.
BTW: Anda mungkin ingin membaca mailing Google "internal" ini bertanggal 2010: Future of Javascript
sumber
Bagi saya, ini memberi saya kesempatan untuk menyusun kode saya lebih baik daripada JavaScript dengan ruang lingkup dan kelas.
Ini mirip dengan Java dan JavaScript dan dengan editor Dart, saya hampir tidak memiliki adaptasi. Saya mulai mengkode langsung.
var ws = new [Moz]WebSocket
harus memenuhi browser yang berbeda itu menjengkelkan. Dart mengkompilasi ke kode JavaScript yang kompatibel dengan browser populer.Tantangan saya terutama adalah berinteraksi dengan kode JavaScript. Saya entah bagaimana menemukan jalan keluar tetapi akan lebih baik jika itu adalah bagian dari Dart.
sumber
Pendekatan Java / C # pasti bias dalam mengetuk JS sejak awal web 2.0 Itu karena diferensiasi buatan (atau sangat nyata & perlu) antara bahasa sisi klien dan bahasa sisi server. Saya rasa ini adalah bahasa sisi-server agar tetap dalam 'kontrol' domain inti masalah aplikasi web dan untuk membatasi kode yang kurang serius (kode ui) dari kode bisnis (sisi server). Java juga saya pikir suka tetap menjadi kernel sisi-server karena kehilangan perang GUI dengan applet yang sebagian besar disebabkan oleh Flash dan HTML 5. Sekarang Anda memiliki RedTamarin sebuah proyek AS3 NodeJS-esque yang mengacu pada masa depan campuran yang pluralistik dari paradigma front dan backend terpadu. .
sumber