- 1
- 2
-- All scripts should begin at line
null, Null, NULL = nil
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−340
-- All scripts should begin at line
null, Null, NULL = nil
Lua
dos_ 26.11.2011 19:08 # +15
nUll, nUlL, nULl, nULL,
Null, NulL, NuLl, NuLL,
NUll, NUlL, NULl, NULL = nil
mozg 26.11.2011 19:12 # +6
3.14159265 26.11.2011 19:28 # +6
NlI,Иll,NII,ИII
nIl,nlI,nil,nIL,
NiLL, ИiLL,итд...
dos_ 26.11.2011 19:46 # +4
AlexT 26.11.2011 21:38 # +3
null, nulL, nuLL, nuLl,
nULl, nULL, nUlL, nUll,
NUll, NULl, NuLl, NuLL,
NulL, NUlL, NULL
хотя херня какаято получается :(
плохо у меня с ним
guest8 14.05.2020 23:30 # −999
Lure Of Chaos 26.11.2011 21:52 # +2
NaIN!
CrashTesterAnusov 29.05.2017 21:31 # 0
guest8 14.05.2020 23:31 # −999
lucidfoxGovno 26.11.2011 22:30 # +2
guest8 14.05.2020 23:31 # −999
TeaBag 27.05.2017 00:45 # 0
TeaBag 27.05.2017 03:17 # 0
SemaReal 30.10.2017 02:19 # 0
inho 30.10.2017 19:13 # 0
TOPT 02.04.2018 10:34 # 0
d_fomenok 30.10.2017 20:22 # 0
Only WCT forever
O4epegHou_nemyx 09.06.2019 15:08 # 0
А ещё там есть загрузчик на кое-чём ещё:
https://github.com/freebsd/freebsd/blob/master/stand/forth/loader.4th
bormand 09.06.2019 15:52 # 0
O4epegHou_nemyx 09.06.2019 20:04 # 0
MAKAKA 14.05.2020 23:40 # 0
MAKAKA 14.05.2020 23:42 # 0
мощно
https://github.com/freebsd/freebsd/blob/master/stand/lua/loader.lua
guest8 09.06.2019 20:39 # −999
O4epegHou_nemyx 09.06.2019 20:45 # 0
OCETuHCKuu_nemyx 09.06.2019 20:47 # 0
guest8 09.06.2019 20:48 # −999
bormand 09.06.2019 20:49 # 0
guest8 09.06.2019 20:53 # −999
guest8 11.06.2019 18:55 # −999
OCETuHCKuu_nemyx 09.06.2019 20:51 # 0
guest8 09.06.2019 20:54 # −999
O4epegHou_nemyx 09.06.2019 20:56 # 0
guest8 09.06.2019 20:59 # −999
OCETuHCKuu_nemyx 09.06.2019 21:06 # 0
O4epegHou_nemyx 09.06.2019 21:09 # 0
guest8 09.06.2019 21:09 # −999
O4epegHou_nemyx 09.06.2019 21:15 # 0
OCETuHCKuu_nemyx 09.06.2019 21:15 # 0
O4epegHou_nemyx 09.06.2019 21:06 # 0
guest8 09.06.2019 21:08 # −999
O4epegHou_nemyx 09.06.2019 21:10 # 0
guest8 09.06.2019 21:16 # −999
O4epegHou_nemyx 09.06.2019 21:19 # 0
guest8 09.06.2019 21:22 # −999
cmepmop 09.06.2019 22:52 # 0
OCETuHCKuu_nemyx 09.06.2019 21:13 # 0
guest8 09.06.2019 21:15 # −999
OCETuHCKuu_nemyx 09.06.2019 21:09 # 0
guest8 09.06.2019 21:10 # −999
O4epegHou_nemyx 09.06.2019 21:12 # 0
guest8 14.05.2020 23:32 # −999
guest8 14.05.2020 23:34 # −999
roskomgovno 12.07.2018 04:26 # 0
TOPT 12.07.2018 07:31 # 0
print(null) - - nil
Sim_salapim 12.07.2018 10:05 # 0
(или наоборот)
3oJIoTou_xyu 12.07.2018 11:50 # 0
Теперь угадай чья фуфайка торт и золотой хуй.
guest8 12.07.2018 15:15 # −999
roskomgovno 12.07.2018 15:16 # 0
TOPT 13.07.2018 06:31 # 0
666_N33D135 12.07.2018 15:20 # 0
JIyHHblu_xyu 13.07.2018 06:47 # 0
Лунная клизма, дай мне силу!
TOPT 13.07.2018 10:52 # 0
ucnykaH 13.07.2018 11:26 # 0
KaKou-To_xyu 13.07.2018 11:45 # 0
JIyHHblu_xyu 13.07.2018 12:47 # 0
Pa3yMHbIu_xyu 13.07.2018 13:00 # 0
nojloBou_xyu 13.07.2018 22:19 # 0
HoBorogHuu_nemyx 01.01.2019 15:53 # 0
3oJloTou_neTyx 01.01.2019 16:01 # 0
cKpunToBou_neTyx 01.01.2019 16:37 # 0
JIyHHblu_nemyx 26.01.2019 18:57 # 0
guest8 09.06.2019 20:38 # −999
roskomgovno 12.07.2018 14:14 # 0
я забыл что неинициализированна переменна будет нил
этот код не имеет смысла
gueest8 24.01.2019 17:24 # 0
зависит от точки _G
HoBorogHuu_nemyx 24.01.2019 12:38 # +1
Просо —– это хорошо!
ASD_77 24.01.2019 18:22 # 0
OCETuHCKuu_nemyx 09.06.2019 20:07 # 0
O4epegHou_nemyx 09.06.2019 20:32 # 0
gost 24.01.2019 18:15 # 0
ASD_77 24.01.2019 18:23 # 0
guest8 24.01.2019 18:43 # −999
1024-- 24.01.2019 19:28 # 0
https://www.ecma-international.org/ecma-262/9.0/index.html#sec-terms-and-definitions-null-type
Хотя, typeof null === 'object'
https://www.ecma-international.org/ecma-262/9.0/index.html#sec-typeof-operator-runtime-semantics-evaluation
В отличие от объектов, литералы null равны самим себе и не содержат свойств:
> undefined крайне скверный тип, он никогда ничему не равен, кроме себя
null ведёт себя так же с ===
хотя, null == undefined
guest8 24.01.2019 19:31 # −999
gost 24.01.2019 19:39 # 0
bormand 24.01.2019 19:40 # 0
guest8 24.01.2019 19:41 # −999
ASD_77 24.01.2019 20:05 # 0
Rooster 24.01.2019 20:12 # +1
1024-- 24.01.2019 20:31 # +1
В общем, времени на раздумья не было, а в голове автора наверно ещё вертелись низкоуровневые и типизированные сущности.
guest8 24.01.2019 20:34 # −999
ASD_77 24.01.2019 22:31 # 0
guest8 24.01.2019 22:32 # −999
ASD_77 25.01.2019 01:14 # 0
в C# попытка была сделать и то и то.. и как всегда получилось все сильно громоздко
guest8 25.01.2019 01:56 # −999
1024-- 25.01.2019 02:02 # +1
Придумать трудно, нужны ПРОТОТИПЫ.
Ничего лучше не придумывается. Берётся прототип языка, обкатывается на реальных проектах. Выясняются слабые места и недоработки, создаётся новый язык с новыми фичами и без старых багов, а старый язык выкидывается нафиг. И так несколько раз, пока в ходе эволюции не получится нормальный язык.
Для старого скриптоговна предлагаются варианты:
* Выбросить нахрен
* Автоматический транслятор из произвольной в последнюю версию
* Встраивать интерпретаторы всех прошлых версий
И главное - не жалеть старое говно. Совместимость должна обеспечиваться комплияторами/трансляторами, а не языком.
По идее, в JS надо
* выкинуть undefined и void
* заменить === на ==, а == на ~ (вроде не должно мешать унарной тильде)
* добавить перегрузку операторов с возможностью задания произвольных как в хаскеле
* добавить прослойку между ООП и ФП: сделать адекватную замену (x => x.field); добавить двоеточие как в lua, чтобы в зависимости от выбора привязывать/не привязывать this к методу объекта; аналогично - с call/apply
* разделить в объектах данные и метаданные или полностью перейти на Symbol. Я не против, если operator('+-+') будет возвращать символ, а дальше его можно было бы использовать как ключ для перегрузки оператора +-+.
* сделать обязательной точку с запятой
* выбрать что-то из var/let и оставить только одно
* упростить синтаксис функций. (x,y) => z оставить, а варианты function(){} и () => {} облегчить и свести до одного, скажем, (in,put){ return output; }, this передавать либо явно, либо в функциях отдельного сорта. Например, [x,y] => z и [in,put]{ return output; } принимают свой this (как function(){}), а круглые скобки - нет (как x=>y).
guest8 25.01.2019 02:10 # −999
1024-- 25.01.2019 02:38 # +1
Касательно кода языка. Зачем выкидывать полностью? Главное, что должно получиться на выходе - язык, который выпускается как новый, в котором не оставлено говно для обратной совместимости. Выкидываются только куски кода, соответствующие плохим фичам; куски кода, соответствующие хорошим фичам - адаптируются под новый язык.
Касательно пользователей. Ну, либо транслятор, либо несколько движков для разных версий, либо всё вместе.
Если речь о вебе, то даже хорошо бы было, если старые движки ещё и CSS/HTML той же версии был. Тогда б настало всеобщее счастье. Программист проверяет, чтоб всё работает под текущий стандарт, а потом его код гарантированно запускается под этим же движком многие годы.
Лучше, чем сейчас, когда всё обновляется, но то поддерживает обратную совместимость и копит говно, то не поддерживает и всё ломает, то ещё что-то от изменений ломается.
bormand 25.01.2019 07:09 # +1
Сколько там лет уже лет прошло? А второй до сих пор жив.
guest8 25.01.2019 15:01 # −999
bormand 25.01.2019 23:27 # 0
Если в очередной раз дату не передвинут.
1024-- 25.01.2019 19:24 # 0
Это же здорово.
Сделали новый нормальный язык без багов старого, а обратная совместимость осталась через то, что
> второй до сих пор жив
guest8 25.01.2019 20:35 # −999
bormand 25.01.2019 23:31 # 0
Зато теперь нет ёбли с пиндосскими либами и скриптами где они вечно забывали воткнуть encode и decode (для инглиша и так сойдёт). По-моему вполне адекватный ход.
guest8 26.01.2019 00:05 # −999
bormand 26.01.2019 00:11 # +1
> возвращает int
А должно возвращать хуету, от которой мне потом всё равно придётся брать ord?
Ну заебись.
Что должно лежать в массиве байтов, если не числа от 0 до 255?
guest8 26.01.2019 00:24 # −999
bormand 26.01.2019 00:50 # 0
Всем похуй на двойку, раз уж явно решили ломать с ней обратную совместимость...
В двойке у тебя была байтстринга. И ты по индексу получал... байтстрингу длины 1. Сомнительная хуйня, но для строки ещё сойдёт.
В тройке у тебя нет байтстринги. Есть массив байтов. И возвращать по индексу массив из одного байта - это уже треш какой-то.
> array
Array из интов жрёт дохуя. Массив байтов нужен для любых блобов (пакеты из сети, двоичные данные с диска, вот это всё). По сути это и есть Array, просто плотный.
В принципе, в эрланге со списками из интов живут как-то. Наверное и тут можно было бы забить на пирфоманс.
guest8 26.01.2019 19:53 # −999
bormand 26.01.2019 21:06 # 0
А, ты про import array? Да, этот плотный и не жрёт. Я затупил.
Ну тогда смело можно было вообще только юникод оставлять.
bormand 26.01.2019 21:59 # +1
Им ctypes и struct завезли, а они хотят байтоёбить форматом... В конец уже упоролись со своим питоном. Правильно Гвидо сделал, что прикрыл эту вакханалию.
guest8 26.01.2019 20:12 # −999
bormand 26.01.2019 21:03 # +2
Гвидо похуй было же. Если бы ему не было похуй - он бы никогда на это не решился.
> попробуй понять почему не работает
Потому что 'r' вместо 'rb'. Вот только этот код у тебя и на двойке случайно работал. Просто удачные файлы попадались.
Питонисты такие наивные... У них отобрали инструмент для отстрела ног, а они жалуются...
guest8 26.01.2019 21:13 # −999
bormand 26.01.2019 21:22 # +1
Лень. Что там будет то? Там кривая либа, которая хочет именно текстовую строку (хотя протокол явно двоичный)?
> по дефолту в однобайтовой локали
Я про конвертер '\r\n' в '\n' на венде. А в торрентах полно замечательных полей с хешами, где такая хуйня может встретится. Всего 2 байта должны удачно лечь. Поэтому даже в двойке нельзя было открывать двоичные файлы без 'b'.
guest8 26.01.2019 21:40 # −999
bormand 26.01.2019 22:11 # 0
Ну дождись, пока автор портанёт либу на тройку. Или сам портани. Зачем совать либу от одного языка в другой и надеяться, что это прокатит?
guest8 26.01.2019 22:13 # −999
bormand 26.01.2019 22:38 # 0
Даже с 'rb' и актуальной версией либы (под тройку)?
> Ну это пушка.
Крестобляди никогда не понять тонкую душу питониста...
guest8 26.01.2019 22:40 # −999
bormand 26.01.2019 22:50 # 0
Мне лень. Ничего интересного я там не найду.
Если оно с 'rb' не работает, но обещает совместимость с тройкой - это косяк либы. Если автор либы и не обещал совместимость - ну ССЗБ, о чём вообще разговор?
guest8 26.01.2019 23:11 # −999
bormand 27.01.2019 10:21 # 0
Какую конкретно либу надо ставить чтобы попробовать? А то их там куча похожих в репозитории. Штук 100 наверное.
bormand 27.01.2019 11:10 # +1
За каким хуем её дают скачать для тройки - х.з. Ну да ладно, давайте её пофиксим. Не брать же портированный под тройку форк.
1) Из-за изменившихся правил поиска модулей либа не может найти свои же кишки. Фиксим импорт на bencode.BTL
2) Не может найти некий StringType. Убираем импорты, заменяем типы на свежие. Выбрасываем ветку для long нахуй.
3) Теперь наконец-то получаем ошибку декодирования. Въёбываем ord'ов в ключи мапы которую там читали.
4) index хочет байты, въёбываем b перед строками, заодно обмазываем ord'ами сравнения. bdecode() заработало.
5) У dict.items() нет sort, обмазываем в list.
6) Запинываем ошибки конкатенации байтов и строк (b-литералы и encode после str). Убираем ветку для строки и добавляем ветку для bytes.
7) Профит, торрент читается и сохраняется.
guest8 27.01.2019 13:41 # −999
bormand 27.01.2019 13:55 # 0
Гвидо, блядь. Раз недооценил масштабы использования своего языка.
Но какого хрена эта либа вообще делает в репе для тройки? Зачем пип ставит заведомо мёртвые либы? Вот в чём вопрос.
> юникод
Эта функция должна бить ассёртом по ебалу передавшим туда юникод. Ибо протокол двоичный. Но в питоне так не принято, да?
guest8 27.01.2019 14:33 # −999
bormand 27.01.2019 15:14 # 0
> рабочую либу для тройки
"bencode3", "bencode.py". Авторы пишут, что для тройки подходит. Разве это всё не работает?
> Ассерт же в дебаг моде только
Ну ок, согласен, полноценным исключением по ебалу.
guest8 27.01.2019 16:56 # −999
bormand 27.01.2019 17:20 # 0
Что конкретно в них тебя не устраивает? У меня они несколько торрентов разобрали без проблем. Вижу все поля и хеши.
> кто же будет либы переписывать на тройку
Да мне похуй, кто будет их переписывать, если честно. Гвидо спрашивай. Не я устроил эту маленькую победоносную войну с переходом напитон3.
> Нет
Да. А ты дальше сиди на своей двойке и собирай грабли с автокастом строк в байты и обратно.
guest8 27.01.2019 18:19 # −999
bormand 28.01.2019 00:23 # 0
Да, я не настоящий сварщик. Я всего лишь допиливал хрень на базе твистеда на прошлой работе и писал тестики, утилитки и адаптер для бинарных протоколов через ctypes на текущей. Всякий just for fun с usb коннектом до циклоняшки и stm'ки, само собой, считать за работу напитоне нельзя. Подработку с сервером на фласке - аналогично.
Очевидно, что раз питон не является моим основным языком, я не имею права высказывать своё мнение о питонах, в особенности о работе с байтами.
guest8 28.01.2019 00:37 # −999
bormand 28.01.2019 00:46 # 0
gost 27.01.2019 15:18 # +2
Удваиваю вопрос, кстати. Буквально вчера поставил python-geoip на свой самый новый Питон 3.7.2 через штатный пип, пробую — нихера не работает, вываливается с невразумительной ошибкой. Смотрю исходники — а там куча принтов без скобок. Охуеть.
bormand 28.01.2019 00:27 # 0
bormand 26.01.2019 21:26 # 0
А тут я имел в виду байтстрингу.
guest8 26.01.2019 00:31 # −999
bormand 26.01.2019 00:53 # +1
В других языках это прекрасно понимали и тащили обратную совместимость. Один гвидо, видимо, недооценил масштабы своего поделия.
Ну а раз уж за каким-то хуем попёрлись ломать - надо все косяки фиксить, а не только скобочки к принту. Второго шанса то уже точно не будет.
guest8 26.01.2019 00:56 # −999
bormand 26.01.2019 00:59 # 0
guest8 26.01.2019 01:02 # −999
bormand 26.01.2019 01:05 # 0
bormand 26.01.2019 01:07 # 0
bormand 26.01.2019 01:20 # +1
Всё остальное - мелкая косметика, на которую можно было вообще хуй забить и которую затащили заодно с переработкой строк и деления.
guest8 26.01.2019 19:51 # −999
guest8 26.01.2019 21:16 # −999
guest8 26.01.2019 21:15 # −999
guest8 26.01.2019 22:42 # −999
bormand 27.01.2019 11:49 # +1
> Это ОЧЕНЬ страшно, сложно и дорого.
Да, это действительно очень страшно. Огромная кодовая база, которая реально используется, но при этом держится на соплях и изоленте.
Вот только этот страх есть при любом рефакторинге питоньего кода, переход с двойки на тройку просто вытащил эту проблему на поверхность.
Я согласен, и в крестах можно поломать логику если нет тестов. Но там я хотя бы не боюсь переименовывать поля...
guest8 27.01.2019 13:38 # −999
bormand 27.01.2019 13:56 # +1
guest8 27.01.2019 14:35 # −999
bormand 27.01.2019 15:28 # 0
Потому что я хочу показать преимущество языков со статической типизацией.
Питон няшный. Мне очень нравится на нём писать небольшие скрипты, экспериментировать с железками через его REPL. Но я тупо боюсь трогать тот же парсер тредов на NGK. Хотя надо бы.
guest8 27.01.2019 16:49 # −999
bormand 27.01.2019 17:40 # 0
Да надо бы.
1024-- 27.01.2019 16:14 # 0
Либо мы сравниваем языки честно и беспристрастно, либо организуем "сорта" языков и внутри них сравниваем только выбранные. Статические-динамические языки - это слишком неточно. Можно ещё сравнивать языки, использующиеся в веб-клиентах, серверах, в микроконтроллерах. Потом окажется, что это тоже неточно, и личность автора может улучшить/испортить хороший язык. Соответственно, сравнивать языки в категориях "языки Кернигана и Ритчи", "языки Вирта", "языки Ван Россума", "языки Эйха" и т.д., где каждый язык будет победителем в своей нише.
CHayT 27.01.2019 18:57 # 0
CHayT 27.01.2019 19:02 # 0
bormand 27.01.2019 19:35 # 0
CHayT 27.01.2019 21:58 # 0
Rooster 27.01.2019 22:07 # 0
1024-- 27.01.2019 22:10 # 0
Desktop 06.09.2023 22:14 # 0
JIyHHblu_nemyx 27.01.2019 15:46 # 0
bormand 27.01.2019 15:50 # 0
Да ну это говно. Когда-то у него были крутые регулярки и онлайн-репа с крутыми либами. Но сейчас это уже везде есть.
Rooster 27.01.2019 22:09 # 0
guest8 27.01.2019 16:51 # −999
guest8 25.01.2019 20:57 # −999
bormand 25.01.2019 23:38 # +1
guest8 25.01.2019 23:49 # −999
bormand 25.01.2019 23:54 # 0
Прыщебляди соснули.
guest8 26.01.2019 00:01 # −999
O4epegHou_nemyx 09.06.2019 15:32 # 0
guest8 25.01.2019 20:34 # −999
bormand 25.01.2019 07:18 # +1
В итоге вся эта замечательная идея вырождается в сишко-колл-конвеншн или какой-нибудь COM. Где на языки как таковые вообще всем насрать. Лишь бы ABI стабильное было.
guest8 25.01.2019 15:02 # −999
1024-- 25.01.2019 19:37 # +1
С виртуальной машиной придётся либо сделать слишком низко, что она не нужна, либо слишком высоко, что принципиальных изменений в языке не провернёшь, не потеряв совместисомть.
В общем, надо как-то попадать в середину, где оптимально.
guest8 25.01.2019 20:57 # −999
guest8 25.01.2019 15:06 # −999
1024-- 25.01.2019 19:34 # +1
В мире языков так не считают. Под много популярных языков библиотеки несовместимы, кроме случаев, когда переиспользуется сишкостандартная библиотека или работает компиляция в жс.
Я бы скриптушню транслировал в новую версию. А кто писал говнокрипты, которые надеются на размер своего файла и прочую питушню - выкинуть.
guest8 14.05.2020 23:36 # −999