LINUX.ORG.RU
ФорумTalks

Язык Си.

 


0

1

В 90х учили язык Си, и сейчас учат язык Си.
Но есть нюанс.



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

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

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

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

Всегда это сколько лет назад? У нас на первом курсе (98 год) заставляли в Паскаль. На втором был C. Но я и на первом курсе игнорировал Паскаль и на некоторых предметах сдавал код на C. Интересно кстати как сейчас учат.

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

У нас учили курсе на 3-м, ну мы и не программисты были - нам можно.

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

У нас на первом курсе (98 год) заставляли в Паскаль. На втором был C

Разница между ними лишь в головах студентов-младшекурсников и школьников.

no-dashi-v2 ★★
()
Ответ на: комментарий от no-dashi-v2

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

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

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

Два идентичных языка с немного отличающимся синтаксисом. Ручное управление памятью, стандартные конструкции циклов и примитивная система базовых типов.

no-dashi-v2 ★★
()
Ответ на: комментарий от unDEFER

Всегда — это слишком большой промежуток времени. Python сейчас учат. В общем Гуглом Коллаб и спасаемся.

Evgueni ★★★★★
()

Танцпол скатился в болтовню о строках в паскале.

Настоящих буйных мало выгнали…

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

Вы будете смеяться, но для обучения по барабану на null-terminated/length-prefixed — и там, и там время на разъяснение особенностей для работы со строками в целях обучения минимально.

Указатели и их арифметика — это да, проблема, но вполне решаемая, даже в каком-то смысле интересная, но вот то, что для Pascal нет никакой надежды на будущее — это точно.

Evgueni ★★★★★
()

В 90х учили язык Си, и сейчас учат язык Си. Но есть нюанс.

Проблема Си в том, что он ближе к системе, чем к человеку. Во всех смыслах.

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

для обучения по барабану на null-terminated

null-terminated сразу же вызывает вопрос - а как оно должно работать, если в переменную засосать произвольный бинарный файл, где в данных обязательно попадётся этот самый null?

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

null-terminated/length-prefixed

тогда еще и $-terminated надо вспомнить для int 21h с AH = 09H.

Toxo2 ★★★
()
Ответ на: комментарий от no-dashi-v2

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

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

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

ладно-ладно, лабораторки были у меня 20 лет назад%), но все равно там вижу не совсем тоже самое, что вызов мемалока

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

в поцкале никогда не было ручного управления памятью, в этом его «фишка»

Ещё как было. Подробностей не помню, но помню, что я делал аналоги malloc/free ещё на Turbo Pascal 1 под Robotron 1715 (CP/M). И структуру файловой системы на нём же методом тыка анализировал, т.е. там и низкоуровневый доступ к диску был (хотя убей бог не помню даже примерно, как он выглядел).

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

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

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

вполне вероятно еще и что ваши упражнения были т.н. «динамическим выделением памяти»

Что значит «вполне вероятно»? :) Им и были, чем ещё может быть malloc/free?

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

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

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

а как оно должно работать

Как угодно, но не обрабатывать такие данные функциями где ожидается нультерминированная строка?

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

ЯННП причём тут танцы? Объясните.

Баян из позапрошлого десятилетия:«Оптимист изучает английский, пессимист — китайский, а реалист — автомат Калашникова.»

Ну и второй «Си» это китайский товарищ Председатель ЦК КПК Си Цзиньпин. Язык которого(китайский) учат сейчас.

ex-kiev
()
Ответ на: комментарий от LINUX-ORG-RU

Аааа, тонко. Тисюаааа хунь сунь вонь, шунь дунь тунь кимано митсубиси, акуна матата.

Нихао, нинзя

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

Как только дело доходит до работы с системными функциями то там все равно появляются нуль-терминированые строки. Ну и всяческие PChar практически во всех диалектах были

no-dashi-v2 ★★
()
Ответ на: комментарий от unDEFER

Паскаль же всегда учили..

И паскаль тоже. Во всяком случае у нас в институте в 90-х было так: 1-й курс паскакаль, 2-ой курс сишечка.

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

кошка жена

Во-первых, я не зоофил. А во-вторых, на мои 45 см кошка не налезет.

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

В Pascal хотя бы есть отдельный строковый тип

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

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

null-terminated сразу же вызывает вопрос - а как оно должно работать, если в переменную засосать произвольный бинарный файл, где в данных обязательно попадётся этот самый null?

Вы «произвольный бинарный файл» обрабатываете как строку вызывая например strlen? Если да, то вы точно ЧДНТ.

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

Там был New и Dispose (аналог malloc и free). Это вполне себе ручное управление памятью. Ни умных указателей, ни тем более сборщика мусора там не было. Были чуть более удобные строки, которые выделялись на стеке (аналог char s[256] на Си), однако ценой невозможности обработки строк длиннее 255 символов и перерасхода памяти при обработке коротких строк. Всё что не выделялось на стеке управлялось настолько же вручную, насколько же и в Си.

Кстати, в том Turbo Pascal, который я знаю, был ещё тип PChar, который представлял те самые null-terminated строки снимая ограничение на 255 символов. И имеющий все те же неудобства работы как и в сишные строки.

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

Синтаксис разный, возможности сопоставимые.

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

Ограничение в 255 символов. Что сильно осложняло использование String за пределами учебных примеров (для обучения алгоритмам «255 символов хватит всем», действительно, но почти любой серьёзный проект сталкивается с длинными строками). И поэтому изобрели PChar, который был той самой сишной строкой.

То есть правильнее сказать, что в Pascal был специальный строковый тип для выполнения лабораторных. Вне школы/универа разница с Си стиралась.

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

я делал аналоги malloc/free ещё на Turbo Pascal 1

емнип new/delete но это не точно.

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

Это точно к ЯП не имеет отношения.

anc ★★★★★
()

Яфшоке ма,ма,ма,ма в китайском это 4 разных слова и разница лишь в интонации/тоне (аналог наших ударений).
Мама,конопля,лошадь,ругать это ма

«Мама ругает лошадь за коноплю» -> «ма ма ма ма ёта ма» збс 👍

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

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

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

Ну наверное в каждом языке есть приколы которые можно эксплуатировать, у нас от ударения зависит смысл слов порой типа «трусы»,«трусы»,«жаркое»,«жаркое».

«Трусы и трусы плюс жаркое жаркое» можно менять порядок слов меняя лишь ударение сохраняя смысл. В голову не приходит пример когда нужно сделать всё наоборот. Опять же на слух если не быстро все эти «ма» отличаются это как сухо ответить «да», вопросительную интонацию задать «Даааа?» С иронией сказать «ДаааАААаааа». С сарказмом выраженным «Дооааа, конеееечно» вот как все эти 4 формы одного и тоже звучат по разному и имеют (в нашем случае) разный смысл произношения с одинаковым смыслом слова также и у них, не так же, а принцип такой же. Корейский вот наоборот с виду простой как палка, реально там родов нет, он,она,оно отсутствует вообще, спряжений нету еду, едешь,едет ничего нету, есть просто ехать, но всё ломается на дедедедедедедедедеед, они везде декают и от этого дэдэдэдэдэдэ зависит контекстный смысол который без трёх литров не понять никак. Так и получается инстранцы офигевают от того как мы можем на лету! Выстраивать фразы вида «Я открывала эту маленькую коробочку,коробочек,коробушку, а внутрях замечательная кошечка побегала и прибежала прямиком мне в рученьки» а мы офигиваем от мамамамммаммамамаамадэдэдэдэдэдэдэдэ :D

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