Знаете ли разликата между синтаксис, граматика и семантика в езика?


Отговор 1:

Мисля, че е важно да се отбележи, че има разлика между начина, по който думите „синтаксис“ и „граматика“ се използват от лингвисти и компютърни учени.

Компютърните учени използват думата „граматика“, за да назоват набор от правила за определяне дали дадена последователност от символи е синтактично валидна, т.е. дали тя принадлежи на определен език. С други думи, граматиката е описание на някакъв синтаксис (можете да имате много алтернативни описания на един и същ синтаксис), а езикът е набор от синтактично правилни последователности от символи. Граматиката често се предоставя в така наречената форма Backus-Naur.

Лингвистите използват думата „граматика“, за да назоват набор от правила за правилно използване на езика. Има много различни видове правила и сред тези типове синтактичните правила се занимават с поставянето на думите в правилния ред. Двете неща, които трябва да отбележим, са, че (1) да можете да използвате естествен език неправилно (а светът не се срива) и (2) лингвистите обикновено не са особено загрижени дали дадено изречение принадлежи на език, но вместо това те са засяга начина на използване на езиците.

Както в езикознанието, така и в компютърните науки, думата „семантика“ се отнася до набор от правила, които обясняват как следва да се тълкуват последователностите на символите.


Отговор 2:

Синтаксис: как трябва да се изложи езикът. Това включва ключови думи и разположение на препинателни знаци. Например синтаксисът на Python е различен от синтаксиса на C в няколко аспекта, като най-големият от тях е изреченията да завършват с точка и запетая в C, докато Python изисква да се обработи специфичен отстъп.

Синтаксисът е мястото, където ще видите много разработчици да спечелят своята любов или омраза към език, включително и аз. Мразя PHP и JavaScript - те четат грозно, големите блокове стават непривлекателни и ненужно сложни, и честно казано, и двамата позволяват на разработчиците да получат помия с изведени въвеждащи парадигми и лоши практики. И все пак, аз обичам Руби, тъй като тя чете толкова хубаво, има малко по-строго писане в нея и блоковете не стават прекалено тромави поради начина, по който е разработен самият език. Езиковите конструкции го правят елегантен език, въпреки че е много важен абстракционен слой върху C.

Граматика: Правилното подреждане на отчетите, така че да имат смисъл и могат да бъдат обработвани с възможно най-минимални изчислителни разходи. Един от най-добрите примери, които видях наскоро, беше чифт вложени за контури с намерението да се отпечата нещо като:

**********

По-добър, по-лесно разбираем и изчислително по-малко метод за таксуване би бил използването на поредица от оператори printf (). Добрата програмна граматика идва с практиката и всички нови разработчици са склонни да прекомерно усложняват нещата в стремеж към простота.

Това не означава, че има правилен и грешен начин да постигнете целта си. Винаги има 100 начини да облечете котка, но има само шепа, които имат приемлива нотация на Big O и обикновено само няколко от тези, които са достатъчно четливи, за да се считат за елегантни.

Семантика: Намерението на оператора спрямо действителната функция на изявлението. Семантика е изключително важна както в говоримия език, така и в програмирането. Разликата: човек може да изведе неправилно изявление, дори ако семантиката ви е на място. Компютрите ще изпълняват точно това, което пишете, или не, ако е напълно изключено и оттам идват логическите грешки.