LINUX.ORG.RU

Программируете ли вы на Паскале?

 


0

4

Под «Паскаль» понимается любая реализация языка программирования Паскаль. Это опрос, чтобы узнать настоящее, текущее отношение людей к данному языку программирования.

>>> Результаты



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 4)

Ответ на: комментарий от sabacs

О, а вот и диагноз по аватарке подъехал.

Практик я, практик. Насмотрелся, спасибо.

liksys ★★★★
()
Ответ на: комментарий от MOPKOBKA

он уже не работает «наемным программистом в офисе», как и AntonI

Вообще говоря работаю в некотором смысле - т.е. пишу отчуждаемый код, правда там основное это креативить новые наукоемкие алгоритмы, ну и потом их уже кодить, но кодить тут вторично. Бонусом у меня идет то, что я НЕ завишу ни от каких сторонних либ кроме стандартной, если говорить про С++. Мой код только должен отвечать некоторым интерфейсам которые мне отчасти навязывают.

Так что не я страдаю от чужого говонокода - это другие страдают от моего говнокода;-)

Когда то я юзал ImageLibrary, но она несмотря на то что старая и популярная даже pragma once в хедере не имела - в итоге я от нее избавился. Из последних косяков - SWIG новый поломался, приходится сидеть на предыдущей версии (собираю иногда из сырцов).

AntonI ★★★★
()
Ответ на: комментарий от MOPKOBKA

лучше уж взять Python

Математикам? Уж лучше Фортран, Паскали или Си. Питон для недоматематиков вроде статистов и социологов, которым следовало бы R знать.

Лучше до, с паскалем можно допустить много ошибок

С Паскалем на этапе введения в программирование нельзя допустить ошибки, не выявляемые двумя минутами пробегания глазом листинга программы. После изучения программирования в современных реалиях в изучении Паскаля особого смысла нет, разве что Делфи, если найдётся работа сопровождать какой старый проект.

mister_VA ★★
()
Ответ на: комментарий от AntonI

Врать не хорошо,

Так и не врите. Я эе извинился сразу при первом же указании на ошибку, а то, что потом вы припёрлись через 10 сообщений опосля, так идите нах.

mister_VA ★★
()
Ответ на: комментарий от liksys

В большом проекте..

…вы обзваниваете всех коллег каждый раз, как собираетесь объявить новую переменную? Или в начале каждого рабочего дня собирается совещание, на котором каждому выдаются дозволенные ему на сегодня идентификаторы?

Делайте свою работу нормально - тогда и проблем не будет.

Тогда бы мы уже давно жили при коммунизме, делай каждый свою работу добросовестно. Я же просто напомню старую максиму: «Человеку свойственно ошибаться и он использует это свойство часто и с удовольствием».

Так что не называйте вседозволенность «удобством», дабы как раз не плодить тех, кто не понимает, что всякое «удобство» – платно.

mister_VA ★★
()
Ответ на: комментарий от mister_VA

Так и не врите. Я эе извинился сразу при первом же указании на ошибку, а то, что потом вы припёрлись через 10 сообщений опосля, так идите нах.

Какая прелесть… ну что же, все ходы записаны, в хронологическом порядке (я рекомендую перечитывать Ваши излияния всем любителям физики, это ужасно смешно):

первый раз:

Ты несёшь обычную ахинею, используя научные термины произвольным образом. Энергия – это мера возможности системы совершить работу, а работа измеряется возможностью переместить 1 кг на 1 метр со скоростью 1 м/с.

первое указание на Вашу ошибку, в прямом ответе на Ваш коммент

второй раз:

Ещё раз: энергия ИЗНАЧАЛЬНО – это МЕРА возможности системы тел совершить работу, т.е. переместить тело массой 1 кг на 1 м за 1с.

второе указание на Вашу ошибку

Чего в этом треде точно НЕТ (специально просмотрел сейчас до конца) - там нет ни малейшего намека на какие то извинения с Вашей стороны, ни за феерическое даже по меркам ЛОР-а хамство, ни за эту ошибку. Т.е. на тот момент Вы действительно ДУМАЛИ ЧТО ЭНЕРГИЯ ИЗМЕРЯЕТСЯ в м*кг/c (единицы измерения импульса).

А Вы, батенька, феерическое брехло - это факт.

AntonI ★★★★
()
Последнее исправление: AntonI (всего исправлений: 1)
Ответ на: комментарий от mister_VA

лучше уж взять Python

Математикам? Уж лучше Фортран, Паскали или Си. Питон для недоматематиков вроде статистов и социологов, которым следовало бы R знать.

Если Вы математику знаете так же как физику и программирование (скорее всего), то лучше не брешите о том в чем вообще ничего не понимаете. На Вашем фоне любой учащийся заборостроительного техникума выглядит Коши и Лейбницем в одном лице - потому что он не философствует с умным видом на неизвестные для него темы и не хамит как последняя базарная хабалка.

AntonI ★★★★
()

Когда-то, когда деревья были большими, нас учили программировать на ТурбоПаскале. Через 5 лет я учил студентов программировать уже на Delphy… А обычный Паскаль… его еще попробуй найти.

aiqu6Ait ★★★★
()
Ответ на: комментарий от mister_VA

…вы обзваниваете всех коллег каждый раз, как собираетесь объявить новую переменную?

Ты совсем валенком решил прикинуться? В большом проекте люди работают каждый над своей задачей. У них есть гайдлайны о том, как надо писать код вообще и как можно называть переменные в частности. Готовые изменения в апстрим принимает тимлид, который следит за тем, кто что сделал.

Так что не называйте вседозволенность «удобством», дабы как раз не плодить тех, кто не понимает, что всякое «удобство» – платно.

Ты вообще хоть раз в жизни продуктовый код писал? Потому что вот эти охренительные истории про пересекающиеся имена переменных - это натуральный детский сад. Я не представляю, какой длины нужно нахерачить функций с блоками и однобуквенными переменными, чтобы начались проблемы.

Если мне не изменяет память, по прошлым срачам ты какой-то кабинетный теоретик из университета. Это объясняет, откуда взялись все эти выдумки про переменные.

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)

Почему нет варианта про Модула-2?

AUX ★★★
()
Ответ на: комментарий от firkax

Это какой-то неправильный паскаль

Любой современный паскаль, хоть delphi, хоть free pascal.

novus
() автор топика
Ответ на: комментарий от mister_VA

Таки да и Си для профессиональных программистов должен быть первым изучаемым языком,.. ПОСЛЕ того, как они научатся программировать.

Т.е. сначала учимся программировать, чему поможет Паскаль, а потом учим ЯП.

Какой интересный посыл… Вы действительно думаете что имеет место быть квантовый скачок между «я ничего не знаю», и «я - суперстар (tm)»? Я не думаю что оно так работает. Ну, или скажем так - «по молодости» мне приходили идеи что я таки научился программировать… Бог ты мой - как я заблуждался: по факту учусь до сих пор, и сейчас у меня хотя бы мерещит на горизонте надежда что я что-то знаю.

bugfixer ★★★★
()
Ответ на: комментарий от AntonI

Вас уже посылали нах? Посылали. Так что вы тут делаете?

mister_VA ★★
()
Ответ на: комментарий от liksys

Готовые изменения в апстрим принимает тимлид, который следит за тем, кто что сделал.

И? Где эти идеальные программы, в которых не течёт память, не вылазят странные или тривиальные баги?

Я не представляю, какой длины нужно нахерачить функций с блоками и однобуквенными переменными, чтобы начались проблемы.

Так повторяющееся имя идентификатора не обязано быть однобуквенной или не соответствующим принятым правилам. «У дураков мысли сходятся».

И вообще, я же уже писал, что приведённый пример несколько искусственный и при должной аккуратности сильно маловероятен, причём скобки в операторах действительно задают жёсткую область видимости в отличие от «голых».

Я лишь указал, что объявление переменной по месту, где впервые потребовалась, вовсе не «удобство», а вседозволенность, которую следует ограничивать самодисциплиной программиста, иначе можно нарваться на. И вроде все уже с этим согласились. Оп чём спорим?

mister_VA ★★
()
Ответ на: комментарий от bugfixer

Вы действительно думаете что имеет место быть квантовый скачок между «я ничего не знаю», и «я - суперстар (tm)»?

Нет, зато с момента «я выполнил сотни заданий по программированию на реальном компе» можно начинать становиться профессиональным программистом, приступив к изучению Си. Я лишь про то, что Си не подходящий инструмент для непрофессионалов. И не подходящий инструмент для обучению программированию «с нуля» массового студента, а не специально отобранных индивидов, зачитывающися Кнутом, Чёрчем и Хомским.

Остальное ваше старо как мир: «Век живи – век учись».

mister_VA ★★
()
Ответ на: комментарий от mister_VA

Си не подходящий инструмент для непрофессионалов.

Особенно если это кто то «тупенький»(с) вроде Вас, бггг - с этим тут у всех полный консенсус!

Удивительно как Вы, дожив до 50 с гаком лет, так и не научились минимально отвечать за свои слова. Вы всерьёз считаете что Ваше хамство и посылания нах являются аргументами? Детский сад какой то…

AntonI ★★★★
()
Ответ на: комментарий от AntonI

Не помню. У меня в подписи к этой персоне указано «пыль кабинетная», так что он однозначно где-то признавался.

А потом мы удивляемся, почему же у нас айтишное образование такое дерьмовое.

liksys ★★★★
()
Ответ на: комментарий от mister_VA

И? Где эти идеальные программы, в которых не течёт память, не вылазят странные или тривиальные баги?

Ровно там же, где ты обитаешь - в розовом манямирке. Реальность же такова, что идеально работающий код невозможно написать ни на одном языке, а лишь уменьшить вероятность появления ошибки, используя разнообразные методики.

Так повторяющееся имя идентификатора не обязано быть однобуквенной или не соответствующим принятым правилам. «У дураков мысли сходятся».

Отлично. Если ты назвал переменную осмысленно и не пишешь функцию на тысячу строк, вероятность подобной ошибки стремится к нулю.

Я лишь указал, что объявление переменной по месту, где впервые потребовалась, вовсе не «удобство», а вседозволенность, которую следует ограничивать самодисциплиной программиста, иначе можно нарваться на. И вроде все уже с этим согласились. Оп чём спорим?

Я не вижу, чтобы все с этим согласились. И спорим мы как раз о том, что ты несешь теоретический бред. Объявление переменной по месту как раз уменьшает вероятность ошибок:

  • Ты видишь ее тип близко к месту, где она используется.
  • Можешь использовать такую прекрасную вещь, как const, чтобы исключить вероятность случайного изменения вычисленной посреди функции переменной.
  • Используя пачку const, ты можешь побить сложное выражение на отдельные значимые части.
    const uint htot = V4L2_DV_BT_FRAME_WIDTH(&dv.bt);
    const uint vtot = V4L2_DV_BT_FRAME_HEIGHT(&dv.bt) / (dv.bt.interlaced ? 2 : 1);
    const uint fps = ((htot * vtot) > 0 ? ((100 * (u64)dv.bt.pixelclock)) / (htot * vtot) : 0);
    const float hz = (fps / 100) + (fps % 100) / 100.0;
    
  • Не будет ситуации,когда полкода у тебя переменная остается неинициализированной и ты случайно заиспользуешь ее раньше инициализации при каком-нибудь очередном патче.

Всё это - реальность, а не твои пустые теоретизирования. Ты буквально не знаешь, но мнение имеешь. Думаешь, это не заметно по твоим рассуждениям, что ты в жизни не написал ни строчки продуктового кода и только сидишь и фантазируешь о том, как его следует писать? Иначе бы мы уже давно обсуждали две другие, более серьезные проблемы - выход за границы массива и освобождение ресурсов, а не вот этот бред про переменные.

Я лишь про то, что Си не подходящий инструмент для непрофессионалов. И не подходящий инструмент для обучению программированию «с нуля» массового студента

Господи, опять эти сказки про сложность си.

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 2)
Ответ на: комментарий от liksys

Ты сам-то не сильно лучше него в плане тех глупостей что пишешь регулярно. А он похож на тролля-провокатора.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Ты сам-то не сильно лучше него в плане тех глупостей что пишешь регулярно.

У тебя есть что-то по фактам возразить, или ты так, примерно неприятное почувствовал?

liksys ★★★★
()
Ответ на: комментарий от firkax

Алгол не надо сравнивать потому что у него не было ни одной достаточно живой реализации - а значит он почти никому не практике так и не понадобился

Целое семейство ЭВМ под Алгол разработали. Чтобы не возиться с ассемблерами и прочими достижениями предыдущих десятилетий. Если бы Алгол никому не понадобился, то ни Кнуту, ни Вирт никто бы не стал заказывать компиляторы Алгола.

Но, конечно, Алгол - это и алгоритмический язык, для публикации и обсуждени алгоритмов, и конкретные входные языки конкретных систем программирования на Алголе. О чём и написано в Сообщении.

vM ★★
()
Ответ на: комментарий от vM

Целое семейство ЭВМ под Алгол разработали

ЭВМ может и разрабатывали, но с какого по какой годы эксплуатировались эти компиляторы (я не в курсе какие они существовали) и по какой причине перестали?

firkax ★★★★★
()
Ответ на: комментарий от firkax

Системное и прикладное программное обеспечение на тех языках высокого уровня можно использовать и в наши дни. И оно используется. В том числе системы программирования на Алголе и т.н. языках системного программирования на основе подмножеств Алгола.

А разработчик оффтопика пытается заработать и на этом. https://learn.microsoft.com/ru-ru/azure/architecture/example-scenario/mainframe/media/unisys-clearpath-forward-mainframe-rehost-diagram-premigration-expanded.png#lightbox

Справочное руководство от 2015 года

https://public.support.unisys.com/aseries/docs/clearpath-mcp-17.0/pdf/86000098-515.pdf

Не мертвее некоторых реализаций Паскаля и Си.

vM ★★
()
Последнее исправление: vM (всего исправлений: 1)
Ответ на: комментарий от liksys

Не знаю, о чем у вас тут речь, но увидел пример кода, поэтому начал вчитываться в коммент. С написанным согласен.

А есть еще вот такая удобная штука, которой я пользуюсь:

void какая_то_функция(какие_то_там_аргументы)
{
   какие-то вычисления...

   {
      int x = ...;
      int y = ...;
      int z = ...;
      foo(x, y, z);
   }

   какие-то вычисления...
}

Блок кода позволяет ограничить область видимости переменных, и их имена не протекут вниз по коду и не могут быть там случайно использованы.

wandrien ★★
()
Ответ на: комментарий от wandrien

Всё так. Блоки и константы по месту творят чудеса. Но некоторым луддитам не нравится :)

liksys ★★★★
()
Ответ на: комментарий от wandrien

блок кода, это фактически заинлайненная функция. его легко оформить в отдельную функцию.

блок кода - это то, что мастхев любой язык.

длинная функция без блоков и обьявлений в нем локальных переменных - это явно плохой дизайн.

так же как код надо разбивать на процедуры(функции), также код функций надо разбивать на блоки, ибо это суть - то же самое.

при правильном разбиения на блоки фрейм функции не увеличится, а уменьшиться, в силу переиспользования блоками общих частей фрейма, или что еще важней - регистров.

это просто довесок к общим аргументам.

alysnix ★★★
()

Раньше говнокодил на Turbo pascal, TMT Pascal и Delphi.

Вот все хочу освежить знания и что нибудь заговнокодить на free pascal.

И да, pascal rulez 4eva!!!

vasya_pupkin ★★★★★
()
Ответ на: комментарий от bugfixer

На самом деле текущая статистика ожидаема и образцово-показательна: мне интересно было бы посмотреть на (а) человека профессионально формировавшегося в 90ых которому удалось Паскаль избежать (хотя-бы на этапе обучения), и (б) кто в здравом уме будет его использовать сегодня. Так что - всё логично.

Я и мои знакомые, конечно, не прям в середине 90-х в ВУЗе учились, а уже в 00-х. Но у нас везде сразу был Си и Си++. Си изучали в Turbo C под DOS, а Си++ вроде бы в Visual Studio 6.0 под виндой, уже точно не помню.

А на УПК в школе был QBasic в DOS.

Сам я в личном порядке вообще начинал изучение компьютеров с системы команд проца Z80. А потом уже и x86 (по той самой книжке Юрова).

С паскалем вживую ознакомился только под Delphi. В порядке личной инициативы, не по учебной необходимости.

wandrien ★★
()
Ответ на: комментарий от vM

Опять общие слова.

и т.н. языках системного программирования на основе подмножеств Алгола.

Так то и Паскаль - язык на основе подмножества Алгола.

Не мертвее некоторых реализаций Паскаля и Си.

Речь не про «некоторые реализации» а про хоть одну. Какой год (конкретное число!) разработки самого нового из известных тебе програмных продуктов на Алголе? «Вот нам его настроили в 1960-м году и надо поддерживать» за разработку не считается.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от Alden

Кстати, пользуясь случаем, поною. Жалующиеся на begin-end вместо скобочек. Каково вам притащенное из долбаного VB в ST требование заканчивать каждый оператор своим особым end? END_IF, END_FOR, END_CASE :)

А прикольная фича. Помогает отслеживать структуру кода. Я такое делал в своём хобби-ЯП, но там правда эти спецификаторы были опциональными, простой end тоже прокатывал.

wandrien ★★
()
Ответ на: комментарий от archie

Ну местных ты этим особо не удивишь :) В баше еще более забористая наркомания: iffi, fordone, caseesac.

Эх, до forrof недотянули. Жаль =)

wandrien ★★
()

Люблю этот язык, хотя давно на нем ничего не писал.

Напоминает мне о старых-добрых временах, когда трава была зеленее, солнце ярче, а дома валялась книжка «Турбо Паскаль 7.0». Эх…

jet_bird
()
Ответ на: комментарий от no-such-file

Какие инструкции для создания фрейма в середине функции? Что ты несёшь? В Си нет ни исключений, ни вызова деструкторов. Фрейм - это тупо кусок данных, куда указывает регистр стэка. Он может быть произвольной длины вниз, пока не стукнется о дно.

tinycc – однопроходный компилятор, который компилирует современный Си. Да и вообще однопроходных компиляторов Си за историю айти было написано – до чёртовой матери. Независимо от того, используются там декларации по правилам C89 или C99.

wandrien ★★
()
Ответ на: комментарий от firkax

По технической части всё верно.

А по высокуровневой:

Ведь код, кроме компилятора, читаю я сам, и такую кашу читать неудобно.

Как обычно у firkax своё уникальное видение, расходящееся с лучшими практиками индустрии.

wandrien ★★
()
Ответ на: комментарий от no-such-file

Если тебе надо в ТОЧКЕ ВХОДА в функцию знать размер её фрейма, то Си тебе никак не поможет, потому что даже по правилам C89 допустимо писать:

void f()
{
   int a = A();
   int b = B(a);
   int c = C(a, b);
}

Здесь МИКСУЕТСЯ исполняемый код и декларации.

Если тебе нужно строго знать размер фрейма при генерации кода для точки входа, то только — классический паскаль с отдельным блоком var, в котором недопустимо наличие исполняемого кода.

Так что твои аргументы невалидны.

Однопроходная компиляция функций для Си возможна только для тех ABI и аппаратных платформ, где размер фрейма на входе в функцию знать не обязательно. Вот на x86 — не обязательно!

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Однопроходная компиляция функций для Си возможна только для тех ABI и аппаратных платформ, где размер фрейма на входе в функцию знать не обязательно. Вот на x86 — не обязательно!

не надо фантазий.

с однопроходной прямой генерацией кода, компилятор испускает команду для аллокации фрейма (x86) запоминая ее позицию. сам код функции всегда генерируется в буфер.

add sp, 0

как только функция завершается и размер фрейма точно определен, компилятор на эту позицию ставит команду add sp, frame_size.

после того как код функции окончательно оформлен - буфер сбрасывается в бинарный файл.

если генерируется просто asm, то аналогично.

зы. если функции не нужен локальный фрейм вообще, на место add sp,0 или ставится nop, или код сдвигается, чтобы эту дырку закрыть

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 1)
Ответ на: комментарий от liksys

Программы на Си требуют волевого поддержания кодовой базы в чистоте, иначе они быстро превращаются в помойку из копипаст. Не хотите или не можете - не пишите на Си, вот и всё.

Это на любом ЯП. Мне такие помойки из копипаст приходилось разбирать на JS и питоне, что можно называть их не копи-, а крипипастами.

wandrien ★★
()
Ответ на: комментарий от alysnix

Это уже не однопроходная в терминологии нашего собеседника, так как есть второй проход для простановки констант.

В общем, терминологический вопрос. Если считать однопроходной компиляцией такую компиляцию, где не требуется держать в памяти синтаксическое дерево или его аналог, а требуется только буфер под машкод функции, то такая однопроходная компиляция возможна для практически любого ЯП, где не требуется «заглядывать по коду вперёд», то есть все используемые сущности известны в момент использования.

не надо фантазий.

Да какие фантазии. Можно вообще без add sp, frame_size, фиксированный фрейм под локальные переменные — это больше для удобства отладки, чем для практической пользы.

А вот как наш собеседник форвард бранчи будет делать без буфера под функцию, вопрос…

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от alysnix

и тут все какбэ забыли, что форматная строка в принтфы может быть сгенерирована в рантайме и компилятор ее не проверит никак.

все эти принтфы - полиморфные функции, внутре представляющие собой микроинтерпретатор форматной строки, и разумеется, если программа для такого микроинтерпретатора написана неверно - то будет ошибка.

хотите чтобы ошибок не было, пишите строго типизированные принты, навроде print_int, print_float и так далее.

Этот микроинтерпретатор мог бы проверить в рантайме, если бы в компилятор завезли новый формат вызова для variadic functions, подразумевающий передачу типов аргументов. Но за 40 лет так и не завезли.

wandrien ★★
()
Ответ на: комментарий от wandrien

Это уже не однопроходная в терминологии нашего собеседника, так как есть второй проход для простановки констант.

апдейт прошлых позиций есть в любом случае. например при компиляции булевых выражений.

if ((a > 0 && b == 0) || some_fun(...)) {
   ...
}
else {
   ...
}

здесь если a <= 0, должен быть джамп на some_fun(). а если some_fun() == false джамп на else блок.

тут поступают аналогично. ведется список true и false джампов, которые апдейтятся, как только когда становится понятным адрес, куда им прыгать.

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 1)
Ответ на: комментарий от wandrien

В принципе да, но в сишке это выражено сильнее из-за недостатка выразительных средств. Рефакторить сишный код довольно тяжело.

liksys ★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)