Sebagian besar ini adalah kebetulan.
Bahasa pemrograman telah berkembang dari waktu ke waktu, dan teknologi kompiler dan interpreter telah meningkat. Efisiensi pemrosesan yang mendasarinya (yaitu waktu kompilasi, overhead interpreting, waktu eksekusi, dll.) Juga kurang penting karena platform komputasi arus utama semakin kuat.
Sintaks bahasa memang memiliki dampak - misalnya, Pascal dirancang dengan sangat hati-hati sehingga dapat menggunakan kompiler pass tunggal - yaitu satu pass melewati sumber dan Anda memiliki kode mesin excutable. Ada di sisi lain tidak memperhatikan hal ini, dan kompiler Ada terkenal sulit untuk ditulis - kebanyakan memerlukan lebih dari satu pass. (Satu kompiler Ada yang sangat bagus yang saya gunakan bertahun-tahun yang lalu adalah kompiler 8 pass. Seperti yang Anda bayangkan, itu sangat lambat.)
Jika Anda melihat bahasa lama seperti Fortran (dikompilasi) dan BASIC (ditafsirkan atau dikompilasi) mereka memiliki / memiliki aturan sintaksis dan semantik yang sangat ketat. [Dalam kasus BASIC, itu bukan BASIC tagihan, Anda harus kembali sebelum itu ke aslinya.]
Di sisi lain, melihat hal-hal yang lebih tua lainnya seperti APL (banyak kesenangan) semacam ini mengetik dinamis. Itu juga umumnya ditafsirkan tetapi bisa dikompilasi juga.
Sintaks Lenient adalah yang sulit - jika itu berarti Anda memiliki hal-hal yang opsional atau dapat disimpulkan maka itu berarti bahasanya memiliki kekayaan yang cukup sehingga dapat dimusnahkan. Kemudian lagi, BASIC memilikinya beberapa tahun yang lalu ketika pernyataan "LET" menjadi opsional!
Banyak ide yang sekarang Anda lihat (misalnya, mengetik tanpa atau mengetik dinamis) sebenarnya sangat lama - pertama kali muncul di tahun 1970-an atau awal 1980-an. Cara mereka digunakan, dan bahasa yang digunakan oleh gagasan-gagasan ini telah berubah dan berkembang. Tetapi pada dasarnya, banyak hal baru sebenarnya adalah barang-barang lama yang berpakaian baru.
Berikut adalah beberapa contoh di atas kepala saya:
- APL: pengetikan dinamis. Umumnya diartikan. Datang dari tahun 1960-an / 1970-an.
- BASIC: pengetikan kuat atau dinamis. Ditafsirkan atau dikompilasi. 1970-an dan banyak lagi.
- Fortran: pengetikan yang kuat. Disusun. 1960-an atau lebih awal.
- Algol68: pengetikan yang kuat. Disusun. 1960-an.
- PL / 1: pengetikan yang kuat. Disusun. 1960-an.
- Pascal: pengetikan yang kuat. Disusun. 1970-an. (Tetapi pada 1980-an ada kompiler P-System yang sangat mirip dengan kompiler JIT!)
- Beberapa implementasi Fortran dan lainnya oleh DEC pada hari-hari awal sebagian dikompilasi dan ditafsirkan sebagian.
- Smalltalk: pengetikan dinamis. Dikompilasi menjadi bytecode yang ditafsirkan. 1980-an.
- Prolog: lebih banyak keanehan. Fungsional Dikompilasi (Turbo Prolog, ada orang?). 1980-an.
- C: mengetik kuat (ha ha). Disusun. 1960-an..Hari ini.
- Ada: mengetik dengan kuat. Disusun. 1980-an.
- Perl: pengetikan dinamis. (Sintaks yang kuat). Diterjemahkan. 1990-an (?).
Saya bisa melanjutkan.
- Nitpickers corner: Banyak bahasa yang ditafsirkan diberi tanda atau "byte dikompilasi" pada saat sumbernya dimuat / dibaca. Ini membuat operasi juru bahasa selanjutnya menjadi lebih sederhana. Terkadang Anda dapat menyimpan versi kode yang dikompilasi dengan byte. Terkadang kamu tidak bisa. Masih ditafsirkan.
Pembaruan: Karena saya tidak cukup jelas.
Mengetik bisa sangat bervariasi.
Pengetikan waktu statis yang tetap dikompilasi adalah umum (misalnya, C, Ada, C ++, Fortan, dll.). Di sinilah Anda mendeklarasikan HAL dari JENIS dan seperti itu selamanya.
Dimungkinkan juga untuk memiliki pengetikan dinamis, di mana benda tersebut mengambil jenis yang ditugaskan padanya. Sebagai contoh, PHP dan BASIC awal, dan APL, di mana Anda akan menetapkan integer ke variabel dan sejak saat itu merupakan tipe integer. Jika Anda kemudian menetapkan string untuknya, maka itu adalah tipe string. Dan seterusnya.
Dan kemudian ada pengetikan yang longgar, misalnya PHP di mana Anda dapat melakukan hal-hal yang benar-benar aneh seperti menetapkan bilangan bulat numerik (dikutip, jadi ini sebuah string) ke variabel dan kemudian menambahkan angka ke dalamnya. (mis. '5' + 5 akan menghasilkan 10). Ini adalah tanah yang aneh, tetapi juga pada saat yang sangat sangat berguna.
NAMUN ini adalah fitur yang dirancang ke dalam bahasa. Implementasinya hanya membuat itu terjadi.