Adakah anda tahu perbezaan antara sintaks, tatabahasa, dan semantik dalam bahasa?


Jawapan 1:

Saya fikir penting untuk diperhatikan bahawa terdapat perbezaan di antara cara perkataan "sintaks" dan "tatabahasa" digunakan oleh ahli sains dan ahli sains komputer.

Ahli sains komputer menggunakan perkataan "tatabahasa" untuk menamakan satu set peraturan untuk menentukan sama ada urutan simbol yang diberikan adalah sah secara sintaksis, iaitu sama ada ia tergolong dalam bahasa tertentu. Dalam erti kata lain, tatabahasa adalah perihalan sesetengah sintaks (anda boleh mempunyai banyak penerangan alternatif sintaks yang sama), dan bahasa adalah satu set susunan simbol yang betul secara sintaktik. Tatabahasa sering disediakan dalam bentuk Backus-Naur yang dipanggil.

Ahli bahasa menggunakan perkataan "tatabahasa" untuk menamakan set peraturan untuk menggunakan bahasa dengan betul. Terdapat banyak jenis peraturan, dan di antara jenis ini, peraturan sintaksis prihatin dengan meletakkan kata-kata dalam urutan yang betul. Kedua-dua perkara yang harus diperhatikan ialah (1) ya anda boleh menggunakan bahasa semula jadi secara tidak wajar (dan dunia tidak runtuh) dan (2) ahli bahasa biasanya tidak cukup prihatin sama ada kalimat yang diberikan adalah bahasa, tetapi sebaliknya mereka berkenaan dengan bagaimana bahasa digunakan.

Kedua-duanya dalam bidang linguistik dan sains komputer, perkataan "semantik" merujuk kepada satu set peraturan yang menjelaskan bagaimana urutan simbol harus ditafsirkan.


Jawapan 2:

Sintaks: bagaimana bahasa akan dibentangkan. Ini termasuk kata kunci dan penempatan tanda baca. Sebagai contoh, sintaks Python adalah berbeza daripada sintaks C dalam beberapa pandangan, pernyataan terbesar yang perlu diakhiri dengan koma bertitik dalam C manakala Python memerlukan indentasi tertentu untuk diproses.

Sintaks adalah di mana anda akan melihat banyak pemaju memperoleh cintanya atau membenci bahasa, termasuk saya sendiri. Saya benci PHP dan JavaScript - mereka membaca hodoh, blok besar menjadi tidak menarik dan tidak perlu kompleks, dan terus terang, kedua-duanya membenarkan pemaju mendapatkan ceroboh dengan paradigma menaip dan amalan buruk yang disimpulkan. Namun, saya suka Ruby kerana ia berbunyi dengan baik, terdapat sedikit penekanan yang ketat di dalamnya dan blok tidak menjadi terlalu rumit kerana bagaimana bahasa itu sendiri dibangunkan. Bahasa yang membina menjadikannya bahasa yang elegan walaupun menjadi lapisan abstraksi yang sangat penting di C.

Tatabahasa: Perintah penyata yang betul supaya mereka masuk akal, dan boleh diproses dengan cara sebagai overhead pengiraan minimum yang mungkin. Salah satu contoh terbaik yang saya lihat pada ini baru-baru ini adalah sepasang bersarang untuk gelung dengan niat mencetak sesuatu seperti:

**********

Cara yang lebih baik, lebih mudah difahami dan dikira menggunakan kaedah toling adalah menggunakan siri printf () kenyataan. Tatabahasa programmatic yang baik datang dengan amalan, dan semua pemaju baru cenderung mengatasi perkara-perkara dalam mengejar kesederhanaan.

Ini bukan untuk mengatakan ada cara yang betul dan salah untuk mencapai matlamat anda. Selalunya ada 100 cara untuk menyembuhkan kucing, tetapi hanya segelintir yang mempunyai notasi Big O yang boleh diterima, dan biasanya hanya beberapa orang yang cukup mudah dibaca untuk dianggap elegan.

Semantik: Tujuan pernyataan berbanding fungsi sebenar pernyataan. Semantik sangat penting dalam kedua-dua bahasa dan pengaturcaraan lisan. Perbezaannya: seseorang boleh menyalahi kenyataan sekalipun semantik anda ada. Komputer akan berjalan dengan tepat apa yang anda tulis, atau tidak jika ia benar-benar di luar, dan ini adalah di mana pepijat logik berasal.