Saya merasa frustasi bagaimana kecepatan perkembangan yang ditawarkan oleh bahasa dinamis akan dikompromikan secara signifikan oleh kurangnya penyelesaian dan aset lain yang akan diberikan IDE kepada Anda dalam rekan-rekan statis mereka.
Ini bukan hanya tentang mengetik lebih sedikit - ini adalah peningkatan produktivitas dan kesenangan yang Anda dapatkan dengan menelusuri API tanpa harus terus-menerus merujuk ke dokumentasi yang tidak terintegrasi dengan editor.
Sampai saat ini semua kombinasi bahasa IDE + dinamis - yang seharusnya tidak terlalu banyak - saya sudah coba adalah:
- kereta
- lambat
- clueless / overenthusiastic (seperti dalam menunjukkan semua penyelesaian yang pernah mungkin)
- atau hanya tidak selengkap, katakanlah, Eclipse + Java.
Saya sadar bahwa analisis kode dinamis bukanlah tugas yang sepele. Tetapi orang tidak dapat menahan diri untuk bertanya-tanya - apakah ini bagian dari kode yang sangat sulit untuk diketahui ?
Jadi pertanyaan saya adalah:
Apakah ada IDE tertentu (atau kurang pengaturan all-in-one) yang mencapai dukungan yang sangat luar biasa untuk bahasa yang dinamis, atau apakah ini masih merupakan masalah yang 'belum terpecahkan'?
sumber
Jawaban:
Smalltalk - bahasa yang sangat dinamis - selalu memiliki IDE yang luar biasa, di mana hal-hal kecil seperti refactoring otomatis, SUnit (kakek-nenek semua * Unit frameworks), "siapa yang mengirim pesan ini?", "Siapa yang mengimplementasikan metode ini?" dan sejenisnya dirintis. Jadi ya, IDE memang dapat mendukung bahasa dinamis ke tingkat yang, hingga baru-baru ini, jauh melampaui bahasa yang diketik secara statis.
S. Lott mengatakan bahwa "Bahasa dinamis tidak dapat memiliki jenis penyelesaian kode yang sama dengan bahasa statis. Pada dasarnya tidak mungkin."
"Pada dasarnya tidak mungkin" dalam pengertian teoretis, absolut? Tentu. Secara praktis? Tidak juga. Ada banyak cara untuk menyimpulkan jenis bahasa dinamis, secara statis ( k-CFA , RoelTyper ), pada saat dijalankan ( PICs ), dan metode lain, seperti menggunakan sejarah programmer baru-baru ini - "Bagaimana Sejarah Program Dapat Meningkatkan Penyelesaian Kode" .
Tentu saja komunitas Pharo dan Squeak sangat senang dengan alat penyelesaian kode mereka .
sumber
Hampir semua yang Anda ketahui dari IDE pertama kali dikembangkan di Smalltak yang merupakan bahasa yang dinamis. Yang lainnya hanya menyalinnya. Jadi jelas, semua fitur ini dimungkinkan dalam bahasa yang dinamis.
Saat ini, bahasa dinamis berada di belakang bahasa statis. Tapi kenapa?
Sampai saat ini cukup universal berpikir bahwa pengetikan statis lebih unggul daripada pengetikan dinamis. Banyak coder telah berubah pikiran baru-baru ini tentang hal itu. Fokus pada IDE untuk bahasa yang diketik secara dinamis tidak ada.
Saya pikir fitur untuk IDE kurang berguna dalam bahasa yang diketik secara dinamis. Ketika bekerja di Java atau Objective-C, saya merasa bahwa IDE diperlukan untuk membantu saya bekerja dengan bahasa, tetapi hal yang sama tidak berlaku untuk bahasa dinamis.
Beberapa bagian dari tugas lebih mudah dalam bahasa statis. Sangat mudah untuk mengetahui jenis ekspresi. Melakukan hal yang sama dalam bahasa dinamis membutuhkan analisis seluruh program atau mencatat jenisnya selama runtime. Karena banyak dari apa IDE berputar di sekitar jenis, itu memang berpengaruh.
sumber
I think that the features for IDEs are less useful in dynamically typed languages
- Lucu, saya pikir justru sebaliknya. Karena begitu banyak bahasa dinamis tidak mengharuskan Anda mendeklarasikan variabel sebelumnya, salah mengeja variabel adalah masalah serius ... masalah yang diringankan oleh IDE yang baik. Sementara itu, fitur utama lainnya - pewarnaan sintaks, alat refactoring, fitur debugging - sama-sama berguna dalam semua bahasa.workOrder
dan beberapa akan menulisworkorder
. Ini adalah dua variabel terpisah dalam Python> _ <Saya mengalami masalah dengan python, semacam. Saya ingin vim sebagai editor saya, tetapi itu berarti saya tidak akan memiliki lingkungan IDE. Jadi, saya menggulung sendiri dengan vim plugins. Saat ini, saya pikir saya sebenarnya memiliki lingkungan yang lebih baik untuk pengembangan yang pernah saya gunakan di IDE sebelumnya.
Pengaturan saya di-host di github , jangan ragu untuk melihat dan boks apa yang Anda suka. Untuk ikhtisar cepat plugin:
Ada beberapa hal lain, tetapi memiliki semua fitur yang dimiliki oleh IDE yang lebih populer. Tidak ada biaya sepeser pun, dan saya bisa memanfaatkan semua kekuatan vim. Split, perintah gerakan, register, melompat, bisa menjalankan seluruh lingkungan dev saya dengan keyboard ...
sumber
Mempertimbangkan evaluasi Anda sulit untuk dipahami ("benar-benar luar biasa"? "Tidak mengerti / terlalu antusias"?) Meragukan bahwa setiap IDE dapat cocok dengan standar yang tersirat.
Membandingkan secara sepele terhadap Eclipse + Java adalah konyol karena bahasa dinamis bukan Java.
Tidak terlalu.
Mungkin tidak terpecahkan. Persyaratan Anda ("kurangnya penyelesaian dan aset lainnya") membuatnya sulit untuk lebih tepat.
Bahasa dinamis tidak dapat memiliki jenis penyelesaian kode yang sama dengan bahasa statis. Ini pada dasarnya tidak mungkin.
Beberapa IDE melakukan pekerjaan menebak dengan baik. Eclipse, misalnya, memiliki plugin untuk bahasa dinamis.
sumber
Saya pikir presentasi oleh Steve Yegge ini masih relevan. di shell kacang ada beberapa setengah naskah Java script yang baik (intelliJ IDEA), tetapi bahasa dinamis pada umumnya sedang mengejar ketinggalan, bukan karena ada sesuatu yang secara inheren lebih sulit tentang membuat alat ini (atau memang bahasa) itu hanya bahasa statis yang didapat semua perhatian dulu.
sumber
Saya memprogram sepanjang hari dalam javascript / php dan ruby yang bekerja pada aplikasi web dan IDE terbaik yang saya temukan untuk ini adalah Aptana. Ia memiliki penyelesaian kode untuk ketiga bahasa tersebut (dan python) yang mengambil vars lokal saya dan di atas itu ketika bekerja dengan html dan css ia mengambil id di html untuk digunakan dalam css / javascript, dan mengambil fungsi nama ketika saya melakukan sesuatu yang cepat dan kotor dan menulis javascript inline (saya tahu buruk, tetapi kadang-kadang berguna untuk bukti konsep). Ini telah dibangun di tugas menyapu dan dibangun di dukungan untuk git dan konsol baris perintah. Butuh sedikit waktu untuk bangun tetapi setelah saya melakukannya saya menemukan bahwa saya hampir tidak pernah meninggalkan IDE saya ketika coding dan itu menghemat banyak waktu.
sumber
Saya telah menemukan bahwa dukungan Wing IDE untuk Python benar-benar luar biasa. Ia melakukan pekerjaan dengan penyelesaian kode, dan debuggernya sekuat Visual Studio untuk C # yang non-dinamis.
Saya bisa membuktikan bahwa itu tidak bermasalah, lambat atau tidak mengerti. Saya belum pernah menggunakan Eclipse, jadi saya tidak tahu tentang hal itu, tapi saya pikir pertanyaan yang lebih besar adalah: apakah ada beberapa penghalang yang melekat untuk mengembangkan IDE yang lengkap dan meningkatkan produktivitas untuk bahasa dinamis. Mengingat pengalaman saya dengan Python dan Wing, saya cenderung mengatakan bahwa bukan itu masalahnya. Namun, tentu saja lebih sulit.
sumber
Microsoft's Visual Studio adalah IDE yang digunakan oleh banyak programmer dan mendukung IronRuby , IronPython dan F #. Sebagian besar akan menganggap Ruby dan Python sebagai bahasa pemrograman yang dinamis sementara F # akan kurang begitu.
Menanggapi komentar, F # adalah bahasa pemrograman.
Sementara definisi yang tepat tentang apa yang secara tepat mendefinisikan "bahasa dinamis" masih bisa diperdebatkan, sebagian besar akan setuju bahwa JavaScript lebih "dinamis" daripada C # misalnya. Menurut Wikipedia:
Saya tidak ingin membuka sekaleng cacing di sini. Beberapa akan menyarankan bahwa F # lebih tepat digambarkan sebagai bahasa fungsional daripada bahasa yang dinamis, dan saya tidak akan mengambil pengecualian untuk itu. Apa yang saya percaya akan adil untuk mengatakan bahwa dari berbagai bahasa .Net, F # secara umum dianggap sebagai yang lebih tepat untuk pemrograman dinamis daripada C # atau VB.
Anda mungkin ingin melihat: Apa yang memenuhi syarat bahasa pemrograman sebagai dinamis?
sumber
dynamic
built-in sekarang. Namun demikian, keduanya tidak diketik secara dinamis, dan sebagian besar fitur lainnya (belum lagi barang budaya) yang terkait dengan "bahasa dinamis" juga tidak ada.Perbedaan utama antara bahasa yang diketik secara statis dan bahasa yang diketik secara dinamis adalah bahwa sistem dapat mengetahui, dengan pasti, apa artinya referensi simbol pada waktu kompilasi.
Ini membuatnya sangat mudah untuk mengumpulkan informasi yang Anda butuhkan untuk membuat IDE yang baik langsung dari info yang dihasilkan oleh kompiler pada waktu kompilasi (yang hanya dipindahkan ke waktu "edit" untuk sebagian besar).
Jika Anda memiliki tanda tangan metode yang berdiri sendiri yang hanya mengatakan bahwa metode tersebut menggunakan "Hal" bagaimana editor dapat membantu Anda mengetahui apa yang harus dikirim? Bagaimana itu bisa membantu menyarankan cara untuk menggunakan benda itu?
Mengetik bebek juga tidak membantu - bahkan editor yang paling cerdas pun tidak akan dapat memberi tahu Anda bahwa hanya karena objek Anda memiliki metode .executeFooOp () yang dapat dikodekan dengan kode ".executeBarOp" pada objek itu. (Meskipun bisa menjelajahi sisa basis kode dan membuat beberapa tebakan cerdas).
Namun, jika Anda tahu bahwa itu adalah "String" di tanda tangan, Anda tahu semua metode yang mungkin Anda panggil pada string itu DAN Anda bisa menyarankan variabel itu ketika pengguna itu sedang mengetik panggilan metode yang membutuhkan String sebagai parameter. Anda bahkan bisa menyarankan sub-kelas yang bisa dilemparkan ke dalamnya jika Anda mau.
Informasi itu tidak ada di sana dengan bahasa yang diketik secara dinamis kecuali Anda dapat melakukan pemindaian lengkap seluruh basis kode dengan sesuatu yang JAUH lebih cerdas daripada kompiler khas Anda.
sumber
Setidaknya untuk PHP banyak IDE "mengerti" sesuatu seperti
Jika Anda mendokumentasikan dengan cara standar (dalam hal ini phpDocumentor ), IDE akan memaksimalkannya.
sumber
Dari semua IDE untuk bahasa dinamis (bahasa yang menyelesaikan tipe saat runtime) yang terbaik adalah ... Visual Studio for Python
Layak untuk dicoba.
sumber