Воскресенье, 23.11.2025
Мой сайт
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2025 » Ноябрь » 09 » Диалекты языков программирования
19:46
Диалекты языков программирования

Диалекты языков программирования

По поводу этого:
https://masterok.livejournal.com/12837497.html
Си диалект:
if(a==1)
 {
 a=2;
 }
while (i<10)
 {
 i = i+1;
}

VB диалект:
if a=1 then
  a = 2
End If
do while (i<10)
  i = i+1
end do
Реальное отличие в данный момент такое. В Си диалектах тела условных операторов и циклов находятся между фигурными скобками и после строк надо писать точку с запитой. В VB диалектах концы циклов и операторов обозначатся словом «end» и точку с запятой писать не надо.
Немного истории. Слово «basic» означало язык программирования- интерпретатор. Т.е операционная система (DOS) могла интерпретировать команды этого языка и выполнить действия. Ещё она могла интерпретировать машинные автокоды, написанные в debug.com или сгенерированные компилятором любого языка (например, Си). Basic тех времён давал возможность писать на более-менее человеческом языке и обходится инструментами операционной системы (без редакторов и компиляторов других языков).
Из-за этой истории язык макросов, позволяющий работать с документами MSOffice тоже стал называться basic (ничего общего кроме названия). Все это было интерпретаторами.
Развивается то, что используются. Возможности макросов начали использовать, потому VB добавился стандартом к давно существующему Си.
Немного про то, что было в Турбо Си времён DOS-а. Это был язык, который ближе всего к ассемблеру. Его компилятор не делал ничего лишнего, что позволяло получить выполняемый программный код минимального размера.  Для медленных машин это было важно.  И сам язык с фигурными скобками не только позволял не ошибаться в словах «endif», но и экономил место на диске. На скобку тратится 1 байт, а на слово endif 5 байт. Даже во времена 5-дюймовых дискет это было не существенно, но компьютеры и языки появились ещё раньше.
Расплата за экономию: Объявленная числовая переменная могла уже содержать какое-то значение. Ведь объявление переменной  это просто выделение под неё какой-то ячейки в памяти. Там вполне мог оставаться мусор с предыдущего использования. Чтобы убрать, надо вручную присвоить 0. Числа с плавающей точкой (float) невозможно было просто сравнивать ( if (a==b) ) потому что туда что-то могло приплыть в 10-й знак после запятой. Надо было писать довольно сложную конструкцию.
Дико неудобная работа со строками. Ведь это тоже выделение каких-то байт в памяти по случайно выданным адресам. Если надо склеить две строки, то надо выделить память на общую длину и последовательно переписать туда буквы. Это всё было удобнее, чем в ассемблер, но очень близко к нему.
Никакого языка Си с описанными выше особенностями уже давно нет. То, что есть, можно назвать «Си диалект». Привыкли люди засовывать циклы в фигурные скобки и ставить точки с запятыми в конце строк – им даётся язык с той же спецификой.
Пример современного Си- диалекта Arduino. Естественно там есть тип «строка»:
https://alexgyver.ru/lessons/string/

s = String("Hello") + ',' + " World " + 1234;
… и возможность просто через «+» суммировать все, что придёт в голову. Компилятор как-нибудь разберётся и просуммирует.
Конкретно такое суммирование в VB появилось раньше чем в Си, потому, что новый VB был новым языком. Потому он в какой-то момент стал просто удобнее Си.
К моменту появления NET-версий:
В мире .NET языки VB и C# имеют одинаковый вес. Каждая строка кода на VB может быть транслирована в эквивалентную строку кода на C#, и наоборот. Оба языка имеют одинаковые возможности, используют одинаковые компоненты и компилируются в полностью одинаковый вид (в нечто под названием промежуточный язык).
…. уже всеми силами декларируется их равенство. Язык определяется для каждого программного текста проекта (в его первой строке), потому можно хоть сразу на двух языках писать. Но в тот момент создаётся ощущение, что VB вариант лучше доделан. Формальная традиционная большая строгость Си к текстам только удлиняет их. Видимо оставлено для совместимости, но зачем эти «кружева» уже не понятно. И была одна не очень тривиальная ситуация, где VB вариант просто сразу заработал, а Си вариант потребовал странных дополнительных действий. Что там было не помню,  но что-то с этой функций:
https://learn.microsoft.com/en-us/dotnet/api/system.windows.uielement.addhandler?view=windowsdesktop-9.0

Не самая обычная функция, что и навело на мысль, что в VB тестировали, а в С# протестировать забыли.
А на уровне скриптов HTML страниц (<script>) отличий уже нет. Я не заметила, во всяком случае. На чём хочется, на том можно и написать, обозначив диалект языка.
Так что, сейчас это одно и то же. Для
Arduino выбран Си-диалект, потому,  что это прошивка микроконтроллеров. Как-то странно писать такое на VB.
Что касается 1С, то, в конце строк там надо писать точки с запятой, а в конце циклов «КонецЦикла». Так что, это среднее. Там требуется преодолеть шок от русских названий, а дальше всё как обычно. Руками сейчас пишут довольно мало. Текстовые редакторы с автоматическими вставками и выборами из списка позволяют снизить количество опечаток, потому длинное слово «КонецЦикла» не проблема (его никто не пишет руками).
p/s
В школе был какой-то
basic на большой машине. На персональном компьютере QBASIC уже не использовала. Сразу Турбо Си. Но на картинке увидела слово DECLARE. В данный момент так объявляются переменные в языке хранимых процедур SQL Server-а. Теперь я знаю, откуда взято такое оригинально решение.  Это чтобы было понято, что у тех, кто работает в голове «каша» из всех этих языков. Требуется некоторое усилие, чтобы переключится и вспомнить, как тут это пишется. Потому что Си и VB диалектов тоже несколько. Но реально оно всё общее, что ли.

 

Просмотров: 20 | Добавил: akostina76 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Календарь
«  Ноябрь 2025  »
Пн Вт Ср Чт Пт Сб Вс
     12
3456789
10111213141516
17181920212223
24252627282930
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2025
    Бесплатный конструктор сайтовuCoz