LINUX.ORG.RU

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

 


0

4

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

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



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

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

Какие в жопу итераторы

В этом он прав - в plain-C всё слишком примитивно чтобы это стало проблемой. По крайней мере контр-пример я сходу не придумал. Но фундаментальный посыл оно не отменяет.

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

Погодь, если мы про сложные итераторы - то там что ++, что next, что ещё какая фигня - разницы с т.з. производительности никакой.

Если мы про простые итераторы - то ты скорее прав чем неправ (и они в pure C точно есть:-)).

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

Погодь, если мы про сложные итераторы - то там что ++, что next, что ещё какая фигня - разницы с т.з. производительности никакой.

А она есть (между ++ and advance()). Разница в implicit «likely», если ты сейчас понимаешь о чём я…

bugfixer ★★★★
()
Последнее исправление: bugfixer (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Опечатка по Фрейду, ага.

Мне гораздо более интересно: @unC0Rr - это ваш виртуал, или нет? Так ловко поддакивает…

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

зачем тогда господин Вирт вводил в Паскаль Inc() и Dec()?

А это разве уже не после него Борланд придумал? Вирт-то в определённый момент разочаровался в Паскале и пошёл пилить другие языки.

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

Потому что эти студенты будут работать на плюсах а не на расте/обероне.

освоение ЯП это самый простой этап.ю профессии числодробильщика.

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

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

А попытки сразу обучить людей «универсальному языку для всего» уже приводят к тому, что этим языком оказался питон, который для сложных программ, мягко говоря, неоптимален. Честное слово, авторы классического бейсика из 70-х (современной альтернативой которого питон и является) были честнее: они позиционировали его как язык программирования для непрограммистов и не пытались пихать в каждую дырку.

О, вот этот комментарий (он в ту же тему) почему-то не заметил вовремя:

Приходят потом в тред юные анонимусы с неокрепшими умами, читают это все - и давай фортраны с паскалями учить!:-(

Знание фортранов с паскалями НИКАК не помешает юным анонимусам при необходимости выучить хоть плюсы, хоть жабу, хоть раст. Главное, чтобы говнокод не писали.

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

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

Знание фортранов с паскалями НИКАК не помешает юным анонимусам при необходимости выучить хоть плюсы, хоть жабу, хоть раст

Помешает ли знание фортрана? Думаю нет.

https://github.com/Reference-LAPACK/lapack/blob/master/SRC/cgeev.f#L291

Но может тогда лучше изучить код лунного модуля на ассемблере? Тоже интересно же, и в примерно таком же стиле:

https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/GIMBAL_LOCK_...

Учитывая количество комментариев, и запись истории, я бы даже сказал, в целом понятнее код выглядит.

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

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

Нужность такого перехода, немного сомнительна.

Я вот вовремя не освоил, и теперь уже поздно, видимо, мозги не те…

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

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

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

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

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

Но поскольку я тут не Копенгаген и даже не Осло — призову в тему @max_lapshin, он про это (в частности, про Erlang) знает намного больше меня. :)

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

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

На С++ можно писать в функциональном стиле, возможно все же снижают сложность не языки, а определенный стиль написания?

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

Язык может поощрять стиль, а может и наоборот.

На Си без плюсов можно писать в ОО-стиле, и даже пишут (GTK, некоторые места из Linux Kernel), но выглядит это куда вырвиглазнее, чем в плюсах, и менее безопасно.

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

Я так же думал в 16 лет, мысль была такая, вот я начинал с си

Как мило.

а теперь мышление в стиле фп мне недоступно, закостенел мозг.

Аж подпрыгнул. И что же такого случилось? И откуда ножки «закостенения» растут? Очередная «Джава головного мозга»?

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

А это разве уже не после него Борланд придумал?

То как я это вижу - люди хотя бы понимали что они делают.

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

Аж подпрыгнул. И что же такого случилось?

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

Очередная «Джава головного мозга»?

Виноват С, ну а что поделать, если структуры, юнионы, енумы и процедуры это очень удобно.

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

Когда я учился у нас один поток учили плюсами, второй паскалю. Паскалистам, я считаю, не повезло.

Да, с возрастом приходится учить новые ЯП, это норм. Но, если говорить о числодробилках - порог вхождения там очень высокий. Из за этого порога много народу в эту область просто не идёт, предпочитая что попроще. Одним из аспектов является необходимость свести в юной голове три разных сущности - физмат модель (набирается в техе), численная схема (набирается в техе но совсем другое) и код её реализующий.

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

На все про все у студента год в лучшем случае, дальше надо писать диплом. К счастью студенты обычно уже немного знают плюсы и питон. Так что тут все просто - ни для какого паскаля нет ни времени, ни необходимости. Курс молодого бойца занимает полгода-год, этот курс отшлифован за 20 лет практики:-)

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

просто языки плохо пригодны для обычных задач

Давайте на этом и остановимся. Не готов я пока с вами проблемы мироустройства обсуждать.

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

Да ладно… сложный итератор требует при переключении многовсяких действий, а то что переключение обозвано++ это просто синтаксический сахарок. Если там и есть накладные расходы (по моим представлениям в данном случае нет), то на общем фоне они мизерны.

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

Да ладно

Нужно понимать, хотя бы примерно, как работают предсказатели условных переходов на современных чипах. Такой лупчик (исполняющийся ровно один раз) будет стоить.

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

набирается в техе

набирается в техе но совсем другое

Если не секрет — какие это годы и в каком вузе?

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

Физфак МГУ, 1990е. Но диплом я писал в одном из НИИ РАН (где до сих пор и работаю).

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

Поправь меня, но

iterator::next()
iterator::operator ++ ()

стоят совершенно одинаково, компилятору оно что в лоб что полбу. Никаких циклов там и в помине нет?

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

стоят совершенно одинаково, компилятору оно что в лоб что полбу. Никаких циклов там и в помине нет?

Всё правильно. Речь исключительно об ++ vs += const в контексте итераторов.

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

В контексте базовых типов как я понимаю, т.е. для интов. Для сложного типа, когда операция перегружена, уже пофиг?

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

В контексте базовых типов как я понимаю, т.е. для интов. Для сложного типа, когда операция перегружена, уже пофиг?

Как раз для интов - всё монопинесуально (там всё ровно). Делай что хочешь. Посыл был исключительно в контексте наличия inc / next (называй как хочешь) в случае user-defined-types и перегруженных операций.

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

Тогда яннп:-(

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

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

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

Всё правильно. Вопрос исключительно во что это разворачивается.

bugfixer ★★★★
()
Ответ на: комментарий от bugfixer
void iterator::next(){...}

I.next()

или

void iterator::operator ++ (){...}

I++;

В чем будет разница после компиляции? Все остальное совпадает.

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

Мне кажется - ты не до конца понимаешь за что я здесь борюсь. Я утверждаю что операция «next()» (в противовес next(N)) - имеет право на жизнь сама по себе. Вот и всё :)

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

А шо, кто то против?!:-)

Не поверишь… Их даже больше одного… тынц раз, тынц два, тынц три. Спешу заметить - это все разные люди. Я в шоке.

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

Зачем тогда господин Вирт вводил в Паскаль Inc() и Dec()? Задумайтесь.

Задумайтесь, почему господин Вирт ввёл в свой Паскаль функции succ() и pred(), но не стал вводить псеводофункции Inc() и Dec() с побочными эффектами?

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

Эге ты как лихо обобщаешь. Я сказал, что пишу += для интов, даже если речь об обычном for(int i = 0; i < 100; i += 1), нигде не писал, что операция next() не нужна, тем более для полноценных итераторов.

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

зачем тогда господин Вирт вводил в Паскаль Inc() и Dec()? Задумайтесь.

Чтобы не вводить в язык дебильное сложение варианта енума с единицей.

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

Задумайтесь, почему господин Вирт ввёл в свой Паскаль функции succ() и pred(), но не стал вводить псеводофункции Inc() и Dec() с побочными эффектами?

на всякий случай советую ознакомиться: https://ctp.mkprog.com/en/pascal/increment_statement/

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

Я сказал, что пишу += для интов, даже если речь об обычном for(int i = 0; i < 100; i += 1),

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

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

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

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

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

в инкременте/декременте, если это оператор, вообще неважно с какой стороны ++/–. будет считаться что значки впереди. но красиво - ипсать спереди, потому что постоперация тут будет бессмыслица.

сторона важна только в составе выражения.

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

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

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

Я уже больше десяти лет назад на хаскеле написал транслятор с паскаля в си

и что? если вы до сих пор задумываетесь с какой стороны ставить крестики в операторе инкремента - значит вам это не помогло. не ну знаю… попробуйте написать компилятор из си в паскаль что-ли.

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

https://ctp.mkprog.com/en/pascal/increment_statement/

Указанный Вами текст господин Вирт писал?

В конце п.14 The Programming Language Pascal (Revised Report), 1973 Niklaus Wirth привёл список стандартных процедур, функций и других стандартных идентификаторов Pascal.

https://standardpascal.org/The_Programming_Language_Pascal_1973.pdf#page=49

Functions:
abs,  sqr, odd, succ, pred, ord, chr, trunc, eof, sin, cos, exp, ln, sqrt, arctan, round
Procedures:
get, put, reset, rewrite, new, read, write, pack, unpack

Аналогичный список есть в Приложении C к Стандарту MЭК/ИСО 7185 Pascal 1990 года

Required identifiers

abs           6.6.6.2
arctan        6.6.6.2
Boolean       6.4.2.2
char          6.4.2.2
chr           6.6.6.4
cos           6.6.6.2
dispose       6.6.5.3
eof           6.6.6.5
eoln          6.6.6.5
exp           6.6.6.2
false         6.4.2.2
get           6.6.5.2
input         6.10
integer       6.4.2.2
ln            6.6.6.2
maxint        6.7.2.2
new           6.6.5.3
odd           6.6.6.5
ord           6.6.6.4
output        6.10
pack          6.6.5.4
page          6.9.5
pred          6.6.6.4
put           6.6.5.2
read          6.6.5.2, 6.9.1
readln        6.9.2
real          6.4.2.2
reset         6.6.5.2
rewrite       6.6.5.2
round         6.6.6.3
sin           6.6.6.2
sqr           6.6.6.2
sqrt          6.6.6.2
succ          6.6.6.4
text          6.4.3.5
true          6.4.2.2
trunc         6.6.6.3
unpack        6.6.5.4
write         6.6.5.2, 6.9.3
writeln       6.9.4

В Extended Pascal ( ИСО/MЭЛ 10206:1990)

http://pascal.hansotten.com/uploads/standardpascal/iso10206_a4.pdf#page=174

список обязательных идентификаторов шире, но в нём тоже нет ни Inc(), ни Dec()

IdentifierDefinitionIdentifierDefinition
abs6.7.6.2month6.4.3.4
arctan6.7.6.2name6.4.3.4
arg6.7.6.2NE6.7.6.7
bind6.7.5.6new6.7.5.3
binding6.7.6.8odd6.7.6.5
BindingType6.4.3.4ord6.7.6.4
Boolean6.4.2.2output6.10, 6.11.4.2
bound6.4.3.4pack6.7.5.4
capacity6.4.3.3.3page6.10.5
card6.7.6.3polar6.7.6.3
char6.4.2.2position6.7.6.6
chr6.7.6.4pred6.7.6.4
cmplx6.7.6.3put6.7.5.2
complex6.4.2.2re6.7.6.2
cos6.7.6.2read6.7.5.2, 6.10.1
date6.7.6.9readln6.10.2
DateValid6.4.3.4readstr6.7.5.5
day6.4.3.4real6.4.2.2
dispose6.7.5.3reset6.7.5.2
empty6.7.6.5rewrite6.7.5.2
eof6.7.6.5round6.7.6.3
eoln6.7.6.5second6.4.3.4
epsreal6.4.2.2SeekRead6.7.5.2
EQ6.7.6.7SeekUpdate6.7.5.2
exp6.7.6.2SeekWrite6.7.5.2
extend6.7.5.2sin6.7.6.2
false6.4.2.2sqr6.7.6.2
GE6.7.6.7sqrt6.7.6.2
get6.7.5.2StandardInput6.11.4.2
GetTimeStamp6.7.5.8StandardOutput6.11.4.2
GT6.7.6.7string6.4.3.3.3
halt6.7.5.7substr6.7.6.7
hour6.4.3.4succ6.7.6.4
im6.7.6.2text6.4.3.6
index6.7.6.7time6.7.6.9
input6.10, 6.11.4.2TimeStamp6.4.3.4
integer6.4.2.2TimeValid6.4.3.4
LastPosition6.7.6.6trim6.7.6.7
LE6.7.6.7true6.4.2.2
length6.7.6.7trunc6.7.6.3
ln6.7.6.2unbind6.7.5.6
LT6.7.6.7unpack6.7.5.4
maxchar6.4.2.2update6.7.5.2
maxint6.4.2.2write6.7.5.2, 6.10.3
maxreal6.4.2.2writeln6.10.4
minreal6.4.2.2writestr6.7.5.5
minute6.4.3.4year6.4.3.4
vM ★★
()
Ответ на: комментарий от alysnix

если вы до сих пор задумываетесь

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

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

Этим, а также отсутствием возвращаемого значения INC(v, amount) в Модула-2 отличается от v+=amount в Си.

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