- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
function main() {
let a = 10;
function f() {
print(a);
}
f();
print("done.");
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
function main() {
let a = 10;
function f() {
print(a);
}
f();
print("done.");
}
С виду этот простой кодик - это то что не может С и я так долго трахался что бы смочь его проимлементировать.... но я бля сделал
ASD_77 21.06.2021 11:29 # +1
ASD_77 21.06.2021 11:30 # +2
bormand 21.06.2021 12:17 # +2
> execute stack
Какой багор )))
А зачем? Почему бы не классическое context + function, как во всей скриптушне и даже в крестах? Тебе же не нужно передавать твои функции в настоящие сишные функции, которые 50 лет назад написаны?
ASD_77 21.06.2021 12:42 # 0
bormand 21.06.2021 12:46 # 0
ASD_77 21.06.2021 12:53 # +1
bormand 21.06.2021 12:56 # 0
void foo(void (*callback)(void *ctx), void *ctx);
Либы, которые не дают прокинуть контекст, это обычно что-то из 60х.
DypHuu_niBEHb 21.06.2021 13:59 # +3
ASD_77 21.06.2021 12:47 # +1
defecate-plusplus 21.06.2021 11:47 # 0
ASD_77 21.06.2021 12:49 # 0
guest6 21.06.2021 11:50 # +2
ASD_77 21.06.2021 12:54 # 0
ASD_77 21.06.2021 12:55 # 0
JloJle4Ka 21.06.2021 12:04 # 0
А какой тут лимит вложенности функции? Перформансная ли у тебя имплементация?
Что выведет вот такой код:
?
ASD_77 21.06.2021 12:44 # +1
ASD_77 21.06.2021 12:50 # +1
bormand 21.06.2021 12:51 # +2
Половина работы сделана, злоумышленнику остаётся буфер где-нибудь переполнить и хуйнуть свой код поверх трамплина.
ASD_77 21.06.2021 12:52 # +1
CHayT 21.06.2021 13:32 # +2
guest6 21.06.2021 13:40 # +4
CHayT 21.06.2021 14:37 # +2
guest6 21.06.2021 14:40 # +1
CHayT 21.06.2021 14:42 # +1
j123123 22.06.2021 22:35 # +2
DypHuu_niBEHb 21.06.2021 14:01 # +3
ASD_77 21.06.2021 16:11 # +1
j123123 21.06.2021 18:11 # +1
GNU C это как раз может. https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
И там тоже код в стеке выполняется.
ASD_77 21.06.2021 19:22 # +1
j123123 21.06.2021 19:45 # 0
DypHuu_niBEHb 21.06.2021 19:49 # 0
inkanusinho 21.06.2021 19:55 # 0
DypHuu_niBEHb 21.06.2021 19:59 # 0
Потому что C++ более простой, удобный, и надёжный язык
j123123 21.06.2021 20:10 # 0
Про говноограничения захватываний хуйни в лямбду/объект из-за отсутствия GC я уже где-то обсуждал с PolinaAksenova
DypHuu_niBEHb 21.06.2021 20:13 # 0
ну такое
j123123 21.06.2021 20:19 # 0
https://govnokod.ru/27340#comment621510
DypHuu_niBEHb 21.06.2021 21:39 # 0
В ЯПах с ГЦ всё равно нужно думать про память, иначе ты случайно зацепишь объект за какую-то мелкую хуйню с долгим временем жизни, и на этом объекте, как на сопле, повиснет огромный граф, и ты будешь потом разбирать мемори дампы с OOMами
Я бы хотел, что бы в джавке можно было явно указывать, что ты захватываешь
HEu3BECTHblu_nemyx 21.06.2021 20:59 # 0
Desktop 21.06.2021 21:00 # 0
DypHuu_niBEHb 21.06.2021 21:42 # 0
Soul_re@ver 21.06.2021 21:51 # +1
DypHuu_niBEHb 21.06.2021 21:52 # 0
Soul_re@ver 21.06.2021 21:54 # 0
Desktop 21.06.2021 21:57 # 0
Soul_re@ver 21.06.2021 22:12 # +1
Это как спрашивать, чем класс отличается от кучки данных и свободных функций под капотом.
Desktop 21.06.2021 22:32 # 0
- а в крестах будет утверждать, что она типа анонимный класс?
Soul_re@ver 21.06.2021 22:53 # +1
PolinaAksenova 21.06.2021 23:22 # +1
CHayT 21.06.2021 21:52 # +4
Desktop 21.06.2021 22:01 # +1
– Что означает этот сигнал светофора?
– У меня в ФП никаких светофоров нет!
DypHuu_niBEHb 21.06.2021 22:03 # 0
примитив синхронизации
Desktop 21.06.2021 22:06 # 0
DypHuu_niBEHb 21.06.2021 22:10 # 0
В старом winobj семафоры как светофоры вроде бы рисовались
Desktop 21.06.2021 22:11 # 0
bormand 21.06.2021 22:12 # 0
DypHuu_niBEHb 21.06.2021 22:17 # +1
gologub 22.06.2021 00:48 # 0
Desktop 21.06.2021 22:30 # +1
Desktop 21.06.2021 22:31 # 0
npopa6 22.06.2021 06:37 # 0
Вроде раньше у семафоров были дополнительные сигналы для маневровых работ, которые в светофорах реализовывать не стали.
В СНГ на маневровых светофорах оставили всего три сигнала: красный — закрыто, белый — разрешены маневровые работы, синий — маневровые работы запрещены, потому что блок-участок зарезервирован под маршрут.
bormand 21.06.2021 22:11 # 0
CHayT 21.06.2021 22:15 # 0
Desktop 21.06.2021 22:30 # 0
bormand 21.06.2021 22:32 # +1
Desktop 21.06.2021 22:35 # 0
CHayT 21.06.2021 23:13 # +2
j123123 21.06.2021 20:08 # 0
DypHuu_niBEHb 21.06.2021 20:10 # 0
ASD_77 21.06.2021 20:39 # 0
bormand 21.06.2021 20:22 # 0
Она ещё и кривая, т.к. thunk'и на стеке и вернуть такую "лямбду" нельзя. Можно только на время в какой-то алгоритм передать.
inkanusinho 21.06.2021 19:56 # 0
inkanusinho 21.06.2021 20:01 # 0
DypHuu_niBEHb 21.06.2021 20:03 # 0
inkanusinho 21.06.2021 20:03 # 0
bormand 21.06.2021 20:24 # 0
Почему бреда? Пашкины олимпиадники ведь написали. Для какого-то подмножества "PHP" вполне возможно вывести типы. Само собой, в этом подмножестве не будет eval() и всяких $$name.
guest6 21.06.2021 20:26 # +2
ASD_77 21.06.2021 20:41 # 0
j123123 21.06.2021 20:44 # +3
DypHuu_niBEHb 21.06.2021 20:55 # +1
Ну и коммунити всё таки чуть лучше
j123123 21.06.2021 21:12 # 0
Можно сделать похожую говнонадстройку над PHP и назвать его допустим TypeHP, но хуевого фундамента это не исправит.
Для всякой типопитушни есть более нормальные языки, Standard ML или там OCaml например, где не встраиваются во всякое говно
DypHuu_niBEHb 21.06.2021 21:21 # 0
j123123 21.06.2021 21:26 # 0
Нет чтобы нормальный язык сделать без хуйни, чтоб через WASM там работало
DypHuu_niBEHb 21.06.2021 21:30 # 0
j123123 21.06.2021 21:31 # 0
Или вообще встроить во все браузеры PHP-виртуальную машину
DypHuu_niBEHb 21.06.2021 21:34 # +2
https://phpjs.hertzen.com/
К сожалению почти всё, чем мы сейчас пользуемся в вебе, создавалось как наколенное говно, которое потом внезапно выстрелило, и пришлось этим жить: IBM PC, скриптовые языки, HTML...
ASD_77 21.06.2021 21:35 # 0
bormand 21.06.2021 21:22 # 0
TS хоть и с типушнёй, но он привычен JS'нику. Нужно всего лишь научиться расставлять типы.
j123123 21.06.2021 21:29 # 0
Не, ну так-то понятно, браузеры хавают только жопоскрип, поэтому мы делаем совместимую с жопаскриптом питушню, которая в жопаскрипт комплилится, и так этим тупескриптом можно познакомить вротэндеров с типизацией
bormand 21.06.2021 21:35 # 0
Ну чтобы по аналогии с нодой хуячить весь фуллстек на одном языке.
ASD_77 21.06.2021 21:36 # 0
Soul_re@ver 21.06.2021 21:40 # +3
#define ᚨ &
И тебе не придётся смотреть на * и & в исходниках.
j123123 21.06.2021 22:19 # 0
https://wandbox.org/permlink/eOv9VurkOGg5FPiD
CHayT 21.06.2021 21:57 # 0
Ну, кто-то же запилил \sout{``BuckleScript''} ``ReScript''.
DypHuu_niBEHb 21.06.2021 21:58 # 0
https://guide.elm-lang.org/
HEu3BECTHblu_nemyx 21.06.2021 21:01 # +1
HEu3BECTHblu_nemyx 21.06.2021 21:08 # +1
DypHuu_niBEHb 21.06.2021 21:09 # 0
HEu3BECTHblu_nemyx 21.06.2021 21:12 # 0
bormand 21.06.2021 21:12 # +1
DypHuu_niBEHb 21.06.2021 21:29 # +2
Но ты явно получишь строку.
На JS ты можешь серануть так:
и охуеть
А в TS ты получш
DypHuu_niBEHb 21.06.2021 21:15 # 0
DypHuu_niBEHb 21.06.2021 21:55 # +1
Людей учат джаваскрипту
https://habr.com/en/post/563914/
gologub 21.06.2021 22:01 # 0
какой сканк-код
Soul_re@ver 21.06.2021 22:16 # +1
Какая физика.
gologub 21.06.2021 22:19 # 0
ASD_77 22.06.2021 16:41 # +1
CHayT 21.06.2021 22:18 # 0
bormand 21.06.2021 22:19 # +2
Soul_re@ver 21.06.2021 22:23 # +1
1) Убеждаемся, что на вершине стека тред, в который хотим написать
.
.
.
2) Пишем в тред на вершине стека.
DypHuu_niBEHb 21.06.2021 22:24 # +2
guest6 21.06.2021 22:21 # +2
Desktop 21.06.2021 22:54 # +1
guest6 21.06.2021 23:24 # +2