3469

Как становились проститутками до изобретения Javascript

Как становились проститутками до изобретения Javascript

Онлайн-компилятор

IT-юмор

7.5K постов53.3K подписчиков

Правила сообщества

Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору

179
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
123
Автор поста оценил этот комментарий

Я учёл опыт поста на реддите :)


https://www.reddit.com/r/ProgrammerHumor/comments/yf4hid/eve... если что.

показать ответы
58
Автор поста оценил этот комментарий

Хах) не, я зашел написать что довольно годная хуйня. особенно '0'*'1' => (48*49)%256 => 48 => '0' - довольно комично. А, и да, '1'+'5'+'9' == 159 тоже охуенно

раскрыть ветку (1)
39
Автор поста оценил этот комментарий

Спасибо, приятно :)


К слову, больше ни одна пара символов в диапазон 48-57 не переполняется. Я делал сразу перебор всех вариантов перемножений по модулю 256, думал в лучшем случае получу что-нибудь нематематичное типа '1'*'5'=='8', а оно вон как удачно вышло.

показать ответы
1389
Автор поста оценил этот комментарий

Привет.


Возможно, ты зашел в комментарии сказать, что это не "моё", а утащено с реддита, где ты это видел ещё ночью. Так вот, это был мой пост.


Возможно, ты зашел сказать, что я тупой дебил, который не понимает как работает C, что такое ASCII и так далее. Знаю. Именно поэтому и сконструировал эту искусственную фигню.


Возможно, ты пришел сказать что я тут ввожу людей в заблуждение и специально сделал то-то и то-то (%i %c what you did there). Да, специально. Это мемасик. Шутка-шутеечка. Веб-комикс. Дружеская подколка.


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

... ...

Пару. Плюцов. Си. Плюс-плюс. Ха-ха.

...

...

Ну, я пошёл.

показать ответы
501
Автор поста оценил этот комментарий

Объясняю для непрограммистов.

• '1' + '5' + '9': в одиночных кавычках — это char, код символа в кодировке. В большинстве современных машин кодировка — что-то основанное на ASCII, то есть 49+53+57=159. Просто забавно подобранные ASCII-коды. Формат %i выводит всё это как int, основной целый тип.

• '9' - '2': это число 7 во всех мыслимых кодировках: для удобства программирования цифры располагают последовательно от 0 до 9.

• '9' - 2 в форматах %i и %c: опять-таки, это код символа '7' во всех мыслимых кодировках, так что формат %i должен вывести код символа '7' (55 в ASCII и производных), а формат %c — соответствующий символ. Но тут есть и ещё один хитрый уровень: в функциях с переменными параметрами всё, что короче, чем int, расширяется до int, а float до double — потому кидать в стек int и писать в форматной строке тип char безопасно. На всех машинах. В любом случае возьмёт из стека четыре (как правило, но не обязательно) байта, а из них — только младший.

• '5' + 2 в форматах %i и %c: аналогично.

• 1*1 в формате %i — единица. Ну, это понятно.

• 0*'1' в формате %i — это должен быть ноль.

• '0'*'1' в формате %c: зависит от кодировки, но в мире победившего ASCII это будет 48·49=2352. Как сказано выше, кидать в стек int и писать формат %c безопасно, но будет взят младший байт — остаток от деления на 256. Коды подобраны так, чтобы это был 48, то есть символ '0'.

UPD. Простейшая математика говорит, что это будет '0' во всех кодировках, где код цифры '0' делится на 16. И в EBCDIC тоже. Если, конечно, байт восьмибитный — а то всякие были машины во времена появления Си.

• '1'*'1' и '1'*'0' в формате %i: если '0'=48 и '1'=49, считайте сами.

• Смайлик с катаканой в формате %s: работает на Unix-подобных системах, где остановились на рабочей кодировке UTF-8. Иначе хрен вам, а не катакана.

раскрыть ветку (1)
26
Автор поста оценил этот комментарий

Оставлю это тут для тех, кто сюда ещё заглянет, а то объяснение действительно не оч.


Самое главное, что надо знать для понимания этого мемасика - в С (и не только) каждый символ имеет соответствующий ему код, сответствующее число. Символам 0-9 соответствуют числа 48-57. И для языка '0' и 48 это ровно одно и то же. То есть '9' - '2' - это на самом деле 57 - 50. Ниже я привел таблицу, объясняющую все примеры, начиная со второго. Подсвеченные ячейки - то, что выводится зрителю. Какой результат вывести - задано в строчке, где чередуются %i и %c. В заштрихованных ячейках были бы незначащие загогули, и для понимания они не нужны.


Первый же пример и вовсе кажется самым простым и очевидным - ведь если сложить символы '1', '5' и '9' - и получится "159", правда? Но вот незадача, в С так складывать символы или строки просто нельзя. Язык так не умеет. И именно поэтому это один из самых интересных примеров в списке. Он выглядит логичным, пока не щёлкнет, что ТАК БЫТЬ НЕ ДОЛЖНО. Однако объяснение простое - это работает только для очень ограниченного набора примеров (числа от 150 до 159) - сумма чисел, соответствующих символам '1', '5' и '9' равняется 49 + 53 + 57 = 159. И вот это число и выводится как результат.


Ещё один пример "как быть не должно" - это '1' * '0' = '0'. На самом деле, как показал в комментарии #comment_254224383 @Zilovitch, в некоторых языках этот пример даже не сработает. Конкретно в использованном мной компиляторе С, вывод символа ограничен 256 вариантами. Если ему дать код выше - будет взят остаток от деления. 2352 даёт остаток 48, соответствующий символу '0'.


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


Ну и напоследок, бонус, который я не стал включать: "0-1"+2 = "1". Математически верно, если сперва вычислить значение в строке (0-1 = -1) и прибавить число (2). Но ни один язык себя так не ведёт, и визуально этот фрагмент сильно отличался бы от остальных. С точки зрения С же, я просто вывел строку "0-1", сдвинув начало на 2 символа (откинув "0-").


Всем спасибо за внимание.

Иллюстрация к комментарию
36
Автор поста оценил этот комментарий

Натянуто. Буквально. Форматированием вывода.

раскрыть ветку (1)
62
Автор поста оценил этот комментарий

Большая часть поведения - да. Но '1'+'5'+'9' == 159 и '1'*'0'=='0' я считаю шедеврами (и клёвыми совпадениями, которых могло вообще не быть, будь коды символов цифр другими). Собственно, без них остальное и лепить не стал бы.

показать ответы
7
Автор поста оценил этот комментарий
Они прям серьёзно разбираются, спорят между собой. Во зоопарк
раскрыть ветку (1)
25
Автор поста оценил этот комментарий

Среди приведённых примеров есть два, "поднимающих бровь" у действительно разбирающихся людей. Потому что так НЕ должно быть и в общем случае не будет. Чел, получивший голду за своё объяснение с оскорблениями, не смог объяснить одно из них. Хотя оно у профессионала должно вызвать эмоции в духе "Так, стоп, правда что ли? Это ж надо чтобы совпало... И правда совпало! Прикольно!". Собственно ради реакции такой реакции этих людей всё затевалось. Но вышло ещё веселее. В принципе, по сути, любой, пишущий наотмашь про "да там просто аскии" и "да там просто %c %i" расписывается, что не заметил эти две приколюшки.

1
Автор поста оценил этот комментарий

Я в этих ваших явах и плюсах не разбираюсь, но что, если

1. объявить переменную

2. присвоить ей стартовое значение 0 или ' ', чтоб обозначить тип

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

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

И ещё: там арифметический + и конкатенация не имеют отдельные операторы?

Например, в VB (VBA, VBS и т.д.) если хочешь складывать числа, то используешь плюс. Если хочешь соединять строки, используешь амперсанд &. Числовые переменные конкатенировать запрещено - передавай строковым переменным и делай с ними, что хочешь. Строковые переменные при суммировании, всё равно, будут только конкатенироваться. Т.е. как напишешь, так и будет работать. Не хочешь сюрпризов - проверяй тип данных в переменной перед использованием.

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

раскрыть ветку (1)
21
Автор поста оценил этот комментарий

Это старый добрый С. Он типизированный. Конкатенации плюсом в сях нет. Перегрузки операторов - тоже.


На остальное вроде ответил тут #comment_254161994 .


Ключевое:

Да, специально. Это мемасик. Шутка-шутеечка. Веб-комикс. Дружеская подколка.
показать ответы
8
Автор поста оценил этот комментарий

Бля, я на этом скрине как аутист выгляжу)))

Иллюстрация к комментарию
раскрыть ветку (1)
10
Автор поста оценил этот комментарий

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

1
DELETED
Автор поста оценил этот комментарий

Нет типизации - нет проблем? 😏

раскрыть ветку (1)
9
Автор поста оценил этот комментарий

В JS всё является объектом. Ну как всё, всё кроме того, что не является объектом.

показать ответы
2
Нажми: ALT F4
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
8
Автор поста оценил этот комментарий

Когда я там выкладывал - ещё не задумывался о том, чтобы и сюда потом положить ¯\_(ツ)_/¯ Да и про Пикабушечку там знает полтора землекопа.

показать ответы
2
Автор поста оценил этот комментарий

так идти в проститутки или нет?

раскрыть ветку (1)
15
Автор поста оценил этот комментарий

Сейчас только через Javascript принимают. Получите на складе свои '5' и 3 и проследуйте в складывательно-вычитательную.

1
Автор поста оценил этот комментарий

Объясните для программиста, причем тут проститутки?

раскрыть ветку (1)
6
Автор поста оценил этот комментарий
Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий
Я пишу и на js и на c++ и для меня это совсем не выглядит как конкатенация строк, поэтому введет в заблуждение оно только совсем уж начинающих
раскрыть ветку (1)
5
Автор поста оценил этот комментарий

Тем не менее, для JS '1' + '5' + '9' == 159 это норма, а в С я бы подобному результату сильно удивился (если бы сам его специально не высчитывал), и только потом проверил бы - неужели и правда сумма кодов сошлась.

DELETED
Автор поста оценил этот комментарий

Так и есть. В JS максимально уебанское приведение типов. Поэтому для всех уважающих себя JS'еров придумали TypeScript

раскрыть ветку (1)
5
Автор поста оценил этот комментарий

Самый херовый тип программистов - вроде и опытные, но аж до аггрессии привязанные к своему болоту :(

показать ответы
Автор поста оценил этот комментарий

Ну вот например задача. Есть структура данных. Вдруг понадобилось ее рассматривать не как структуру, а передать побайтно через интерфейс. В С можно просто воспринимать занятую структурой память как массив байт/слов (еще можно с помощью union сразу объявить разное представление). А как это сделать не в С без указателей?

раскрыть ветку (1)
5
Автор поста оценил этот комментарий

Serializer.serialize(data); (с сериализатором, соответствующим ситуации).


А вообще, как бы указатели не только в сях есть. В Паскале можно ещё было в записи (считай struct) один и тот же блок памяти разбить на несколько представлений, например чтобы x.value было 32-битным числом, а x.high и x.low было 16битными половинками. То есть например определить и буфер и доступ к его кускам.

показать ответы
Кэмерон, где Алита?!
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Где тут хоть один повод для ошибки? Для варнинга - наверное есть, я лично удивился, что варнинга нет, хотя char c = '0'*'1'; варнинг выдал бы. Ну и по одиночке некоторые из фрагментов вполне могут быть осмысленны (как минимум формирование знака для цифры через '0'+digit).


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

2
DELETED
Автор поста оценил этот комментарий

Извините, а какой теперь курс плюсиков на Пикабу к плюсам Реддита?

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Держу в курсе.


На Реддите почти 10к рейтинга за сутки. Уровень аппрува 83%, то есть примерно 1/6 оценок - минусы. итого примерно 12.5к плюсов, 2.5к минусов.


На пикабу 2500, из них 2700 плюсов и 200 минусов.


Один плюсик Пикабу это примерно 5 плюсов Реддита.

Один минусик Пикабу это примерно 12 минусов Реддита.


Котировки по версии сообществ IT-юмора.

Автор поста оценил этот комментарий

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


Какого хуя вы считаете что скоростью работы можно пожертвовать? Меняйте уже парадигму мышления!

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Я вам уже всё объяснил.


Разработчики не выбирают между "сделать быстро" и "сделать медленно" при прочих равных. Это лишь один из факторов, не более того.


Между "меняем, платформу, да, будет работать медленнее, но зато с этим можно будет работать дальше" и "не сможем нормально продолжать разработку, тут всё, пиздец уже" - разработчики выбрали первое.


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


Вы имеете право считать второй вариант в обоих последних случаях более правильным выбором. Я имею право считать это пиздецом в голове.

показать ответы
Автор поста оценил этот комментарий

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

Простую задачу решаете через тонны оберток и ненужной хуйни.

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Скорость работы - лишь один из аспектов программного продукта. И иметь хоть сколько-то определяющее значение (за пределами эффективности алгоритмов) он начинает только на довольно поздних этапах.


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

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

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

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


Вроде очевидные вещи.

показать ответы
1
Автор поста оценил этот комментарий

Я зашел сюда узнать, как вы пишете этот знак: ¯
И где, блин, исходник кода из поста в виде текста?

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

1) Win + .  => ;-) => ;P => в самом низу ¯\_(ツ)_/¯


2) Ссылка в посте.

показать ответы
1
Автор поста оценил этот комментарий

Аааа... сцуко! не посмотрел на это

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

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

показать ответы
Автор поста оценил этот комментарий

Приведите пример кода этого сериализатора.

раскрыть ветку (1)
5
Автор поста оценил этот комментарий

{ [native code] } (●'◡'●)


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


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


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

показать ответы
0
DELETED
Автор поста оценил этот комментарий

Не знаю. Так что, наверное, это было про меня. Несправедливо :(

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

┑( ̄Д  ̄)┍

показать ответы
DELETED
Автор поста оценил этот комментарий

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


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

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Я всё-таки в основном на веб ориентируюсь. Питон симпатичный, но для меня недостаточно прозрачный. А поводов присмотреться получше - как-то не было. Сейчас вот есть, но погружаться в допиливание Stable Diffusion под свои эксперименты такое себе вступление...

Автор поста оценил этот комментарий

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

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

Никому не важно, как быстро работает продукт

Мне важно.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

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

показать ответы
Автор поста оценил этот комментарий

Васик - это адаптированный для домохозяек дядюшкой Билли фортран 77. Пля... Я старый, шопесдец, раз это помню.

Иллюстрация к комментарию
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Хм, Бэйсик как таковой появился в 64 году. Как Билли в 9 лет адаптировал язык, который выйдет через 13 лет и будет развитием идей языка, вышедшего через 2 года?


Ладно, Майкрософт Бэйсик вышел в 1975 году. Никак украли спецификации версии Фортрана от 1977 года в разработке?..

показать ответы
Автор поста оценил этот комментарий

Чудесное открытие, ожидающее каждого на первой неделе изучения программирования. Внезапно, 0, '0' и "0" - это разное! :-)

На следующей неделе, дорогие мои детишечки, мы узнаем, что 0.1 + 0.2 внезапно не равно 0.3 :-)

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Чукча не читатель, быстрее-быстрее написать комментарий, а то никто не узнает, что ты у мамы умненький?


#comment_254161994

1
DELETED
Автор поста оценил этот комментарий

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


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


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


Поэтому TypeScript - лучшее, что случалось с JS. И, возможно, лучшее, что когда-либо было создано в недрах Microsoft

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

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


Никаких правил и вовсе в голове не держу , объекты со строками не складываю, сравниваю через ===/!==, а те немногие места где типы пересекаются (та же конкатенация строка+число) для меня ведут себя абсолютно логично. А вот воевать с "у вас тут число, а тут вы забыли сказать что у вас тут число, скажите мне, что тут число пожалуйста" я не хочу, меня это всегда бесило.


Короче, профит от перехода на TS для себя я особо не вижу, а вот поводы для неприязни у меня есть. Потому - продолжаю отстраняться всеми силами.

показать ответы
0
DELETED
Автор поста оценил этот комментарий

Так и что там получилось с курсом?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

10к на реддите (примерно 12к, плюсов 2к минусов)

3460 на пикабе (3707 плюсов, 246 минусов)


Дальше сам :)

0
DELETED
Автор поста оценил этот комментарий

Ты пошто мой C++ болотом назвал 😠

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

А ты мой JS уебанским? o(TヘTo)

показать ответы
2
Автор поста оценил этот комментарий

╰(*°▽°*)╯

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

o(* ̄︶ ̄*)o

показать ответы
0
Автор поста оценил этот комментарий

зачем натягивать сову на глобус? то что смешно в JS, нелепо в C++ (и наоборот), потому что это разные языки.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

*разочарование* :(

Автор поста оценил этот комментарий

интернет:
printf("%d", 10); // 10

printf("%x", 10); // a

пикабу: блядь, но как??? ух, ебать, чувак гений!!


интернет:

2 + 2 * 2 = 6

(2 + 2) * 2 = 8

пикабу: блядь, но как??? ух, ебать, чувак гений!!

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Вот сразу приятно посмотреть на крутого специалиста, от которого ничего не утаишь.


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

показать ответы
Автор поста оценил этот комментарий

Не соглашусь - printf (f - formatted) форматирует данные для вывода. Форматирование вывода присутствует в любом языке.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

По-моему сейчас для этого намного шире используют template literals и явное преобразование на месте. Когда дядька рядом с бузиной, легче отследить поведение.

1
Автор поста оценил этот комментарий
Был такой сайт, что то там про факап в названии.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

IT Happens?

показать ответы
0
Автор поста оценил этот комментарий

Рискну предположить, что 17


i=i+ (i++) + (++i)

i=5+(5++) +(++6)

i=5+5+7

i=17


Коряво проиллюстрировал свою логику, но хоть как-то.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Там ответ зависит от языка и даже компилятора/интерпретатора. На баше в бездне целая эпопея была, помнится.

4
Автор поста оценил этот комментарий

Который стреляет нам в ногу)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Я аж хрюкнул. Нельзя же так!

показать ответы
0
Автор поста оценил этот комментарий

Так Fortran 66 от 77 не сильно отличается и 77 - это не год выпуска конкретного компилятора, а год, в котором был зафиксирован стандарт совместимости. Сам язык постепенно дополнялся в разных версиях разных разработчиков. Я свечку не держал, конечно, но Билли, будучи студентом, с большим шансом его изучал и эволюцию застал. Поэтому MS бейсик частично похож на ранний диалект бейсика, а частично на фортран. Синтаксис новых операторов не мог же случайно просто так взять и совпасть, так же как и Гейтс вряд ли мог, будучи студентом внести свою лепту в новую спецификацию фортрана.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Я бы даже цепляться не стал если бы в комментарии был Фортран66, но с 7ым уж больно натужно. В 77ом только черновик утвердили, стандарт вообще 78 года. А Бэйсик таки 75го...


Я бы скащалл, что фортран тут вообще притянут за уши. Языки достаточно разные. Если ещё поправку взять на относительно зачаточное и ограниченное состояние Computer Science на то время...


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

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

показать ответы
0
Автор поста оценил этот комментарий

Потому что сейчас большинство новоиспеченных "программистов" char от byte не отличит.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Да и староиспеченные зачерствевшие "программисты" тоже не лучше, им никто не сказал что в стандарте С нет типа byte.
0
Автор поста оценил этот комментарий

С вашего позволения, форк на буржуйский.


https://onlinegdb.com/-pii6NcR4
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

В обсуждении уже делился ссылкой https://www.reddit.com/r/ProgrammerHumor/comments/yf4hid/eve...


Тоже расстроился, что у них нет мемасика про проститутку.

0
Автор поста оценил этот комментарий
тут что-то на Маяковском написано
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Нет, Маяковский - это диалект Питона. Тоже все на отступах держится.
1
Автор поста оценил этот комментарий
Я не программист, но знаю, что такое int и char. Однако, понятнее от этого "пояснение" не становится. Какие-то форматы, кодировки...
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Если всё ещё интересно - тут полное и более простое объяснение: #comment_254294000

показать ответы
1
Автор поста оценил этот комментарий

Нестандартное расширение POSIX. У меня на свежем MinGW не работает.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Могу только посочувствовать. Везде, где мне приходилось сталкиваться с printf, такой функционал присутствовал. Кроме баша, да.

0
Автор поста оценил этот комментарий

Проблемы три.

1. Платформоспецифичные типы. Сиди мы на любой одной платформе — стандартном x86, расширенном x86, x64 — писали бы char/short/int/long/long long, да и всё. Ах да, в x64 под Windows/Unix разный long. Ну и хотелось бы на x64 работать с массивами >2Г, а на стандартном x86 — не использовать без нужды регистровую пару.

И потому первым шагом к кроссплатформенному программированию стало добавление платформенных типов — size_t, ptrdiff_t, intptr_t.

Ах да, иногда нужно 8 байтов и точка (например, считываем столько из двоичного файла) — так что int64_t.


2. Форматная строка должна приходить из надёжного источника. Что тоже мешает локализации в маргинальных случаях. И если эта строка не прописана жёстко, её компилятор никак не проверит.


3. Невозможно переставить параметры местами. Хотелось бы сделать «{1} instead of {2}», «не {2}, а {1}».

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Пункт 3

Иллюстрация к комментарию
показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества