Pembangun Berbincang Tentang Set Bahasa Bersatu Sebagai Penyelesaian kepada Cabaran Pembangunan Pelbagai Bahasa

BigGo Editorial Team
Pembangun Berbincang Tentang Set Bahasa Bersatu Sebagai Penyelesaian kepada Cabaran Pembangunan Pelbagai Bahasa

Komuniti pembangunan perisian sedang aktif membincangkan konsep set bahasa bersatu sebagai penyelesaian yang berpotensi untuk menangani cabaran bekerja dengan pelbagai bahasa pengaturcaraan dalam projek. Perbincangan ini bermula daripada artikel yang mencadangkan sistem klasifikasi untuk bahasa pengaturcaraan kepada empat tahap berbeza berdasarkan model pelaksanaan dan sistem pengetikan mereka, dengan cadangan untuk set bahasa bersatu yang dibina sekitar bahasa pengaturcaraan Rust.

Masalah Pembangunan Pelbagai Bahasa

Pembangunan perisian moden sering memerlukan pasukan untuk bekerja dengan pelbagai bahasa pengaturcaraan secara serentak, dengan setiap bahasa berkhidmat untuk tujuan berbeza dalam ekosistem projek. Seperti yang dinyatakan oleh seorang pengulas, kita cenderung menggunakan bahasa dari tahap berbeza dalam tetapan yang berbeza (bahagian hadapan, bahagian belakang, sistem) dan kita menghabiskan banyak masa menulis kod pelekat untuk membolehkan mereka berkomunikasi antara satu sama lain. Realiti ini mewujudkan overhed yang ketara dari segi kebolehoperasian, memerlukan kerja yang ekstensif pada antara muka fungsi asing (FFI) dan pengserialan/penyahserialan antara sempadan bahasa. Pendekatan set bahasa yang dicadangkan bertujuan untuk menangani ini dengan mewujudkan keluarga bahasa yang serupa secara sintaksis yang boleh bekerjasama dengan lancar sambil menyasarkan keperluan prestasi dan kemudahan penggunaan yang berbeza.

Pendekatan Sedia Ada dan Alternatif

Beberapa pengulas menyoroti ekosistem sedia ada yang sudah cuba menyelesaikan masalah ini. Ekosistem Clojure disebut sebagai mempunyai dialek yang sangat berguna dengan pertindihan yang luas merentasi persekitaran berbeza, termasuk ClojureScript untuk pelayar web, Clojure untuk JVM, Babashka untuk skrip, dan Jank untuk kebolehoperasian C/C++. Begitu juga, Dart dikenali sebagai bahasa yang mempunyai JIT dan boleh bermula dengan cepat serta mentafsir secara langsung sambil juga dapat mengkompilasi kod mesin yang cekap apabila anda bersedia untuk melancarkan, secara berkesan menjambatani tahap 2 dan 3 yang dicadangkan.

Kes Menentang Penyatuan Paksa

Tidak semua ahli komuniti bersemangat tentang pendekatan bahasa bersatu. Sesetengah berpendapat bahawa bahasa khusus domain memberikan faedah penting yang tidak sepatutnya dikorbankan untuk keseragaman sintaksis:

Terutamanya dengan bantuan LLM, kita tidak lagi mendapat banyak faedah daripada menjadikan semuanya satu sintaks, satu bahasa, dan sebagainya. Projek seperti Dotnet Blazor/ASP.NET atau Python Streamlit/Dash pada pendapat saya terlalu dipaksa dan lebih banyak mendatangkan masalah daripada manfaat. Cadangan OP, di mana semuanya adalah Rust, mempunyai masalah yang sama; ia terlalu dipaksa.

Perspektif ini mencadangkan bahawa memanfaatkan bahasa khusus mungkin lebih produktif daripada cuba mencipta penyelesaian satu-saiz-untuk-semua, terutamanya kerana alat seperti model bahasa besar semakin membantu pembangun bekerja dengan sintaks yang berbeza.

Tahap Klasifikasi Bahasa Pengaturcaraan

  • Tahap 4: Ditafsirkan, jenis dinamik ( JavaScript , Python , PHP )
  • Tahap 3: Ditafsirkan, jenis statik ( Hack , Flow , TypeScript , mypy )
  • Tahap 2: Dikompilasi dengan pengurusan memori automatik ( Go , Java , C , Haskell , Objective-C , Swift )
  • Tahap 1: Dikompilasi dengan pengurusan memori manual ( Rust , C , C++ )

Set Bahasa yang Dicadangkan

  • Rust: Tahap 1 - Prestasi maksimum dengan pengurusan memori manual
  • RustGC: Hibrid Tahap 2/3 - Pengumpulan sampah dengan kompilasi untuk penempatan
  • RustScript: Tahap 4 - Penjenisan dinamik untuk prototaip pantas

Kebolehlaksanaan Teknikal dan Arah

Pandangan teknikal yang menarik dari perbincangan ini melibatkan arah keserasian bahasa. Seorang pengulas menyatakan bahawa lebih mudah untuk mentafsir bahasa yang terbatas daripada mengkompilasi bahasa dinamik yang direka dengan pentafsir dalam fikiran. Ini mencadangkan bahawa bermula dengan bahasa tahap rendah seperti Rust dan membina varian tahap lebih tinggi (seperti yang dicadangkan dengan RustGC dan RustScript) mungkin lebih mudah dilaksanakan daripada cuba menjadikan bahasa seperti JavaScript atau Python lebih boleh dikompilasi.

Komuniti juga membincangkan potensi menambah pengumpulan sampah automatik kepada Rust, dengan seorang pengulas menyatakan sokongan kuat sambil mengakui bahawa kod RustGC tidak akan mudah untuk ditukar kepada Rust tradisional. Tetapi pergi ke arah yang bertentangan seharusnya mudah.

Perbincangan mengenai set bahasa mencerminkan ketegangan yang lebih luas dalam pembangunan perisian antara piawaian dan pengkhususan. Walaupun pendekatan bersatu boleh mengurangkan beban kognitif dan cabaran integrasi pembangunan pelbagai bahasa, ia juga mungkin mengorbankan kelebihan khusus domain yang disediakan oleh bahasa khusus. Seiring dengan evolusi alat pembangunan, terutamanya dengan bantuan AI, keseimbangan antara pendekatan ini mungkin berubah, berpotensi menjadikan pembangunan merentas bahasa kurang membebankan tanpa memerlukan keseragaman sintaksis.

Rujukan: From Languages to Language Sets