Implementasi penerjemah MSH. Saya ingin memperkenalkan kepada publik yang terhormat juru bahasa pemrograman baru MSH. Saya sudah menulis artikel tentang dia di Habr. Yang terakhir adalah
MSH Interpreter . Artikel ini memiliki tautan ke artikel sebelumnya tentang topik ini.
Sebenarnya, masyarakat setempat agak skeptis tentang kreativitas semacam itu. Tapi ini tidak adil. Bahasa pemrograman yang sukses dapat secara signifikan memajukan seluruh industri TI. Mengurangi upaya pengembangan. Saya mengambil pengembangan bahasa saya untuk tidak memuaskan ambisi saya sendiri. Saya percaya bahwa tidak ada bahasa pemrograman yang berhasil. Dan itu sangat perlu. Apalagi tidak ada bahasa, tetapi ada ideologi bahasa. Ideologi ini terkandung dalam bahasa MUMPS. Tetapi sebagai bahasa pemrograman tidak ada. Ini hanya digunakan sebagai bahasa basis data dan ini secara signifikan membatasi ruang lingkup penerapannya. Situasi ini, menurut pendapat saya, telah berkembang karena kepentingan pribadi pengembang basis data dan kurangnya pemahaman tentang potensi bahasa ini oleh semua orang. MUMPS sekarang ada sebagai standar 1995. Tentu saja, dalam bentuk ini sudah lama usang. Konsep pemrograman baru telah muncul yang harus memiliki bahasa modern. Saya berusaha mengembangkan bahasa seperti itu. Dalam hal ini, perlu untuk mempertahankan ideologi MUMPS. Dan ideologinya adalah kesatuan kode dan data. Bahasa tidak hanya didasarkan pada data, tetapi pada struktur data. Dan ini adalah struktur yang cukup kuat. Ini adalah pohon. Semua struktur lain dimodelkan berdasarkan pohon. Dalam kasus degenerasi, pohon dapat terdiri dari satu titik. Bahkan, garis antara kode dan data agak fana. L.
Logika program dapat ditempatkan baik dalam kode dan dalam data. Dan di mana menarik garis antara kode dan data tergantung pada programmer. Saya mencoba memasukkan semua logika program ke dalam data. Dan program hanya pergi sekitar pohon data dan menjalankan perintah di sana. Kode, tentu saja, belum hilang, tetapi struktur program berada di luar program utama. Fleksibilitas program semacam itu tinggi, tetapi untuk memahami program semacam itu tidak mungkin. Jadi kode dan data membentuk kesatuan. Selain itu, struktur data adalah yang utama dalam kaitannya dengan konten data. Pemisahan menjadi bahasa pemrograman dan basis data tidak alami.
Ketika merancang sistem informasi, program terutama memanipulasi struktur data daripada konten. Konten menjadi signifikan hanya pada saat operasi aritmatika. Sifat sekunder dari konten menunjukkan bahwa tidak perlu untuk tipe data. Jenis data dihasilkan oleh arsitektur komputer dan ketidaksempurnaan penerjemah. Tipe data tidak ada hubungannya dengan makna yang berarti dari sistem informasi. Jelas bahwa ini menyederhanakan kompiler dan IDE, tetapi semua ini sekunder. Masalah yang menghasilkan tipe data jauh melebihi manfaat yang mereka berikan. Ini tidak berarti bahwa Anda tidak perlu mengontrol konten data. Tetapi ini harus dilakukan hanya pada saat penerimaan data dari luar. Dan tipe variabel tidak memberikan bantuan dalam hal ini. Variasi konten data jauh melebihi jenis dasar bahasa pemrograman. Bisa bukan hanya angka, tetapi juga string dari berbagai jenis. Dan angka dapat memiliki berbagai batasan. Bagaimanapun, perlu untuk memeriksa data input untuk kebenaran. Jadi tipe dasar memiliki sedikit hubungan dengan konten data.
Bahasa modern harus mendukung OOP. Karena kurangnya bagian deklaratif dalam bahasa, saya harus membatasi diri hanya pada bagian dari implementasi deskripsi kelas. Tetapi bahasa tidak memaksakan gaya pemrograman. Apakah Anda ingin menggunakan objek, tidak ingin tidak menggunakan. Penanganan acara banyak digunakan di Assembler. Semua DOS dibangun berdasarkan penanganan acara. Dalam bahasa tingkat tinggi, saya tidak tahu kasus menggunakan teknik ini. Meskipun dia memiliki potensi tinggi. Tidak adanya pemrosesan acara dalam bahasa memaksa program untuk menggunakan berbagai siklus pemrosesan pesan. Solusi yang agak kikuk yang menyebabkan banyak masalah ketika mencoba melakukan semacam pemrosesan di dalam loop. Pemrosesan tugas paralel sudah digunakan di mana-mana, tetapi dalam banyak bahasa tidak didukung di tingkat bahasa. Ini membuat program tergantung pada OS dan versinya. Kerugian dari keputusan seperti itu jelas menurut saya.
Ini adalah ideologi di mana bahasa MSH dibangun.
- Kesatuan struktur kode dan data, yang berarti bahasa memiliki struktur data yang kuat.
- Kurangnya tipe data dan, sebagai akibatnya, deklarasi mereka.
- Dimasukkannya teknik pemrograman modern dalam bahasa. Dalam MSH, ini adalah objek, penanganan acara, dan eksekusi tugas paralel.
Siapa pun yang tertarik dengan bahasa ini dapat berkenalan dengannya di github .
Di sana ditata kode sumber dan contoh kerja. Mengerjakan bahasa baru saja dimulai dan ini bukan produk jadi. Tapi saya pikir Anda bisa mendapatkan ide bahasa. Bahasa ini dikembangkan di Linux x64.