LINUX.ORG.RU

Сколько зарабатывает Pascal программист?

 , , ,


6

6

Здравствуйте. Я хочу узнать сколько можно заработать в 2022 году, зная Object Pascal и почему он не стал мейнстримным языком программирования. Почему он только изучается в школах и почему именно Pascal

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

Так кому как. С goto обычно борются как раз в рамках борьбы с лапшекодом.

цитата из сорца :

     /*
     * WARNING: more 'goto' here than your doctor recommended! The different
     * instructions set the value of some variables and then jump to some
     * common execution code.
     */
MKuznetsov ★★★★★
()
Ответ на: комментарий от monk

Извращенцы. Надо было так

char *strncpy(char *s1, const char *s2, int n)
{
  char *r = s1;
  for(int i = 0; i<n && *s2; i++) *s1++ = *s2++;
  *s1 = 0;
  return r;
}
Psilocybe ★★★★
()
Ответ на: комментарий от monk

точно, что говорит об «очевидности» конструкции until.

Всегда на ней спотыкался.

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

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

Речь шла именно о паскале (который для консольных программ в основном), а не о delphi.

Начинать учиться программированию с формошлёпства я не рекомендую.

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

Посмотри/нагугли бенчмарки жавы мы node.js. Как правило, они идут ноздря в ноздрю, и по производительности, и по потреблению памяти.

Джава хоть и статическая, но такой же тормоз. Предлагаю сравнить с паскалем или C и хотя бы -O2 (учитывая что у fpc оптимизация выключена по умолчанию для удобства отладки)

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

Намного лучше ютуб, чем приходить и слушать какого нибудь деда в МГУ, которым окажется Столяров.

Чем тебе Столяров-то не нравится?

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

for(i=0,j=100; i<=9; i++,j++) {

А мне кажется этот код проще читается, чем этот:

loop
  for i from 0 to 9
  for j from 100
  do
  ...

Я вообще вначале подумал что ты случайно отступ пропустил :) Потом опять посмотрел в сишный код и понял что так задумано. Целых три объявления цикла: loop ... for ... for и только потом do.

Конечно на вкус и цвет товарищей нет, но я такое осилить не могу, мне это кажется сложным, слишком много синтаксического шума и похоже на классический вложенный цикл, точнее 3 вложенных цикла.

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

Имхо это очевидный switch..case..break. Можно ещё цикл с выходом из середины, те же яйца в профиль.

Очевидный? Я чет даже не придумаю как это на свитч-кейсе сделать – поделись, если не сложно: мож когда увижу такое меньше встревожусь

он своей простотой ничего не упрощает, если им везде заменять стандартные конструкции языка

кто ж говорит о везде? Я только о некоторых случаях. Если бы речь шла о везде – я тоже был бы против

pihter ★★★★★
()

Ничего себе у ТСа КПД. Первый же вброс седьмую сотню каментов собирает, при том что сам ТС даже не участвует.

Я за вывешивание на доску почета и пожизненный бан по причине «ОН СЛИШКОМ СИЛЕН!!1».

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

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

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

goto напрашивается только в очень хреново спроектированных языках.

мой пример – на псевдокоде: он описывает ситуацию в которой готу напрашивается. Да, извернувшись его можно заменить рядом способов, но какое-нибудь == тоже можно заменить на не_неравно, давайте и его теперь отменим, а все языки, не последовавшие этой идиотской моде на этом основании объявим устаревшими

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

Там не нужен дополнительный break. Это одноразовый цикл. Цикл с постусловием заканчивается когда условие истинно.

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

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

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

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

есть выход из цикла по метке

а вот этого везде не хватает, признаю. И это всегда надо костылить.

Но я и готу использую без тревог, когда надо – не особо-то я и мучаюсь

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

В общем, везде, где пишется именно && и ||, принято именно вычисление по короткой схеме.

Буду знать, спасибо

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

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

Можно подумать твои питоны и расты не позволят написать нечитаемую хрень )

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

С goto обычно борются как раз в рамках борьбы с лапшекодом

к этому у меня вопросов нет. У меня вопросы к религиозной нериязник к готу в любом виде

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

Речь шла именно о паскале (который для консольных программ в основном)

Именно Паскаль – для систем пакетной обработки на супер-ЭВМ с большим машинным словом.

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

В rust далеко не самая удобная реализация выхода по метке. Это при том что её добавили совсем недавно.

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

мне это кажется сложным, слишком много синтаксического шума

Технически, «for» можно убрать. Но в целом лучше синтаксиса для параллельного обхода не придумать.

и похоже на классический вложенный цикл, точнее 3 вложенных цикла.

Это уже синдром утёнка. На Haskell вот такое будет двумя вложенными циклами:

mconcat $ do 
  i<-[0..9]
  j<-[0..9]
  return $ print $ show i ++ " * " ++ show j ++ " = " ++ show (i*j)

А вот параллельный только через что-то вроде

mconcat $ do 
  (i, j) <- zip [0..9] [100..]
  return $ print $ show i ++ "; " ++ show j

Кстати, параллельный может быть ещё и в стиле

loop
  for i from 0 to n
  for j in items
  do

и условие окончания надо проверять и по i и по j. В паскале такое через for вообще сложно писать.

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

мне кажется этот код проще читается

Зато он неприменим, если начиная с какого-то i мы не хотим выполнять блок с итерациями по j (с добавлением условия, конечно), но хотим выполнять остальной вложенный в цикл по i код.

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

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

кейс1: действие,брейк;
кейс2: действие,брейк;...

С циклом эстетичнее будет, в самом деле. Но больше дроча, чем с goto, да.

yu-boot ★★★★★
()
Ответ на: комментарий от pihter

но какое-нибудь == тоже можно заменить на не_неравно

Странно, что питонщики так не сделали. Было бы весьма питонично.

bread
()
Ответ на: комментарий от grem

Ну как шмогли, всё же лучше, чем goto. И да, недавно по меркам Раст - это в найтли) А метки есть как минимум со стандарта 2018.

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

Любой языч[s]е[/s][strong]o[/strong]к со своим компилятором будет сливать C/C++ которые по очевидной причине имеют лучшие компиляторы.

Borland C++ в разы сливает по скорости компиляции Borland Pascal’ю.

C++ Builder сливает Delphi по скорости полной компиляции проекта в несколько раз.

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

В языке с такой агрессивной проверкой владения блоки куда важнее, чем в Си/Си++.

slepoy_pew
()
Ответ на: комментарий от maxcom

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

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

Единственный минус в том, что сейчас часто берут для обучения PascalABC.net, который не является паскалем и нужных фич описанных выше не имеет, не смотря на название.

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

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

Из средств разработки для начинающего и среднего программиста достаточно компилятора, дебаггера и текстового редактора. Из них от языка зависит только компилятор. Дебаггеров хороших кроме gdb нет, а текстовых редакторов полно, но лично я ничего лучше Kdevelop/Kate/Kwrite не видел. Впрочем, опять же, какой-нибудь nano тоже вполне сойдёт.

Паскаль вполне можно применить на практике для решения прикладных задач и на начальном этапе обучения программированию он подходит для этого лучше чем C, Java, Rust, Go или что там ещё есть. Может быть на питоне или перле было бы проще, но они для начального обучения не подходят. Их стоит изучать только когда получен опыт написания достаточно больших программ на близких к железу языках.

Но сейчас попытки его для чего-то использовать это все равно что езда на дохлой лошади.

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

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

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

Поэтому прежде чем их изучать имеет смысл познакомиться всё-таки с императивщиной. А именно для этой цели ничего лучше паскаля нету. C слишком хакерский и подходит только для уже состоявшихся хакеров, а Java, C# или Python слишком далеки от железа.

Есть ещё, конечно, вариант начать сразу с ассемблера, но это, по-моему, слишком уж хардкорно.

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

Но ты точно так же как и все прочие на критику отвечаешь что у нас неправильный аджайл.

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

практика менять задачу на ходу влияет на продукт

Это я понял и принял для себя как валидный ответ на мой вопрос. Но, опять же, не везде аджайлы используются так, я уже 2 конторы прошел где скрам это про слежку менеджмента за кодерками.

untitl3d
()
Ответ на: комментарий от slepoy_pew

Есть фраза, скажем, «Всё смешалось в доме Облонских.». Нужно рандомизировать порядок слов в предложении и порядок символов в слове, при этом приложив ключ. Например: «свЁ» -> [3, 2, 1] -> «Всё». Целевая аудитория начинающая, индексации с 0 не понимает, если что. Фразы для теста в корректном UTF-8.

Что-то мне кажется, что у тебя фигня получится, хотя бы потому что один символ в юникоде может быть предствлен более чем одним кодпоинтом и для некоторых символов есть более одного представления. И ТЗ неполное. Например, что считается разделителем слов, что с знаками препинания и так далее.

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

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

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

Скобки или begin…end, это, имхо, вкусовщина, главное, чтобы не как в питоне, где ни того, ни другого.

Меня в C/C++/Java другое вымораживало - то, что определение функции/метода начинается так же, как определение переменной, только наткнувшись на скобки, понимаешь, что это другое. Я, конечно, привык (тем более, чего уж там, при правильном форматировании разница видна сразу), но когда видишь после этого функцию на паскале, сразу ловишь себя на мысли, насколько же это красивее, чётче и понятнее.

Не зря в Rust, Go и JS избрали подход, ближе к паскалевскому.

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

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

А новичок не побрезговал.

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

в среде сишников бывают такие люди, которые стремятся писать код как можно более непонятно

У нас в универере занятия по Сям вела тётка из какого-то НИИ. Так вот код она писала хрен пойми какой, без бутылки и не разберёшь)

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

Я «джва года»(с) хочу ЯП применяемый в продакшене, чтобы и присваиваивание, и сравнение было «=». В бейсике это дико приятно было, ну и может родной русский язык это диктует, говорю/думаю я «а равно б» и «если а равно б», т.е. одинаково. Мне это кажется очень естественным. Есть такой язык?

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

По-моему это плохо. Присваивание - это совершенно другая операция. Почему бы его не помечать другим знаком, например a ← b+1; какой-нибудь?

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

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

Но Си, конечно, эту задачу облегчает, там из скобок, взятия указателя и разыменования можно написать такую композицию, что другой человек (и даже автор через полгода) будет 3 дня разгадывать.

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

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

slepoy_pew
()
Ответ на: комментарий от Zhbert

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

Если старше пары лет, то, может, и не стоит. А вот если старше пары десятков лет, ВОЗМОЖНО, стоит посмотреть на что-то новое.

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

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

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

А что модно? Кстати чем вообще плохи смузи? Судя по описанию, вкусная штука, жаль мне их делать самому лень, как и искать где купить.

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

Меня в C/C++/Java другое вымораживало - то, что определение функции/метода начинается так же, как определение переменной, только наткнувшись на скобки, понимаешь, что это другое. Я, конечно, привык (тем более, чего уж там, при правильном форматировании разница видна сразу), но когда видишь после этого функцию на паскале, сразу ловишь себя на мысли, насколько же это красивее, чётче и понятнее.

Там другая логика, которая тоже имеет право на существование. Видишь определение int, сразу понятно, что дальше будет код, который в итоге сократится до int. В Си/Си++ есть 100500 других нелогичностей.

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