- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
function main()
{
print("before");
try
{
throw 1;
}
catch (x: any)
{
print("catch");
}
print("end");
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
function main()
{
print("before");
try
{
throw 1;
}
catch (x: any)
{
print("catch");
}
print("end");
}
Самый большей говнокод за всю историю человечества сделан.
ASD_77 10.09.2021 23:45 # 0
ASD_77 10.09.2021 23:45 # 0
ASD_77 10.09.2021 23:47 # 0
JloJle4Ka 11.09.2021 03:56 # 0
А что там с пкрфомансом в «JS++»?
ASD_77 11.09.2021 04:19 # +1
j123123 11.09.2021 04:34 # +2
guest6 11.09.2021 14:33 # +1
Ну может быть в триста
Но не больше
ASD_77 11.09.2021 15:16 # +1
JloJle4Ka 11.09.2021 19:53 # 0
bormand 11.09.2021 20:00 # +1
Если писать только на сишном подмножестве JS, то можно добиться сишного пирфоманса?
Не думаю. Придётся заодно насрать на спеку JS чтобы разрешить UB'ы и аггрессивные оптимизации.
3.14159265 11.09.2021 20:24 # +2
В JS этих понятий нет в принципе.
Даже если писать на подмножестве и срать в байт-буфера у оптимизатора будут связаны руки.
bormand 11.09.2021 20:37 # 0
Ну как... Он всё ещё может забить хуй на спеку и считать, что обращения к Uint32Array никогда не алиасятся с Float32Array.
По спеке он таких ужасных предположений, конечно, делать не должен.
bormand 11.09.2021 20:09 # +1
Ты, наверное, забил на эту гарантию хуй и дал LLVM'у поиграться с аргументами по-сишному?
JloJle4Ka 11.09.2021 20:16 # 0
Ну и как же? Сишка в случайном порядке аргументы обсчитывает?
bormand 11.09.2021 20:18 # 0
Более того, она их перемешивает между собой...
JloJle4Ka 11.09.2021 20:20 # 0
CEHT9I6PbCKuu_nemyx 11.09.2021 20:21 # +1
bormand 11.09.2021 20:21 # +2
Единственная гарантия: тело функции всё-таки будет вычисляться позже, чем её аргументы сайд-эффекты от тела функции всё-таки произойдут позже, чем сайд-эффекты от вычисления её аргументов.
CEHT9I6PbCKuu_nemyx 11.09.2021 20:25 # +2
JloJle4Ka 11.09.2021 20:37 # 0
А если во время вычисления аргументов ставится таймер, который сработает через ЧАСОК, но тело функции завершается гораздо быстрее?
Kozel 12.09.2021 06:24 # 0
Мне почему-то кажется, что си отработает примерно так же.
guest6 06.06.2024 16:04 # 0
угадай, что нужно сделать
ASD_77 11.09.2021 04:20 # 0
j123123 11.09.2021 04:25 # +2
Но вообще в самом LLVM есть специально сделанные костыли именно для исключений
https://llvm.org/docs/ExceptionHandling.html#exception-handling-intrinsics
CEHT9I6PbCKuu_nemyx 11.09.2021 04:29 # 0
JloJle4Ka 11.09.2021 05:47 # 0
ASD_77 11.09.2021 12:49 # +2
Kozel 12.09.2021 06:32 # +1
Кстати, если поставить себе задачу сделать try/finally (с единственной целью, чтобы перед return изнутри try обязательно выполнялся finally) - там будут те же проблемы?
ASD_77 12.09.2021 13:58 # 0
ASD_77 12.09.2021 01:39 # +3
ASD_77 12.09.2021 01:39 # +2
j123123 12.09.2021 02:42 # +2
ASD_77 12.09.2021 03:42 # +1
JloJle4Ka 12.09.2021 05:45 # +1
> Как мы видим большой разницы между кодом нет
Какой багор ))))))
JloJle4Ka 12.09.2021 09:27 # 0
Есть же слово «auto».
ASD_77 12.09.2021 13:04 # +1
ISO 12.09.2021 13:05 # +1
ASD_77 12.09.2021 13:05 # +1
guest6 12.09.2021 13:09 # +1
Тем не менее я не спорю, что вывод типов в TS сделан намного лучше.
Но сранивать С++ и TS глупо: это языки для разных задач.
А вот если сравнивать TS с JS, Ruby, PHP и Python, то я пожалуй соглашусь, что TS выглядит очень хорошо
Desktop 12.09.2021 13:11 # 0
такая себе мантра. и на js, и на крестах можно написать веб-сервер. и на js, и на крестах можно написать гуйню. да в общем куски фронтенда можно написать на том и на том. в чём разные задачи?
guest6 12.09.2021 13:13 # +1
Перепиши на JS
Desktop 12.09.2021 13:13 # −3
ISO 12.09.2021 13:18 # +2
Desktop 12.09.2021 13:27 # +1
bormand 12.09.2021 13:28 # +1
Desktop 12.09.2021 13:30 # 0
ты ведь именно так и делаешь? ;-)
bormand 12.09.2021 13:49 # 0
guest6 12.09.2021 13:52 # +2
JloJle4Ka 12.09.2021 13:54 # +1
Сколько ядер ни возьми, JAWA встанет раком на сборке мусора, т.к. памяти может не хватить, Jawa же говнище)
guest6 12.09.2021 13:56 # +2
JloJle4Ka 12.09.2021 14:06 # 0
Боюсь, чем больше ядер, тем больше придётся докупать памяти, ведь JAWA настолько анскильная, что на каждый тред копирует стек!
guest6 12.09.2021 14:07 # 0
Вообще открою страшную тайну: нет смысла иметь тредов больше, чем у тебя ядер
JloJle4Ka 12.09.2021 14:09 # 0
mootools
> Вообще открою страшную тайну: нет смысла иметь тредов больше, чем у тебя ядер
А если у меня четыре ядра, но они двойные? Можно иметь 8 тредов?
guest6 12.09.2021 14:12 # +1
>двойные
гипертрейдинг?
Сильно зависит от задачи, но в общем случае можно считать их отдельными ядрами
guest6 12.09.2021 14:12 # +1
mootools
guest6 12.09.2021 14:11 # 0
Или более простой пример: 32 треда обрабатывают запросы пользователя, а 1 тред выполняет в фоне таски, в то время как ядер всего 32.
JloJle4Ka 12.09.2021 14:14 # 0
Это для софтварных тредов. На инициализацию хардварных тредов ты потратил слишком много времени.
> 32 треда обрабатывают запросы пользователя, а 1 тред выполняет в фоне таски, в то время как ядер всего 32.
Переключение контекста нынче недёшево...
guest6 12.09.2021 14:14 # 0
В большинстве сред есть для этого таймер, который будет их выполнять, а в современном мире есть и корутины.
Правда если задачи блокирующие и без блокировки их не переписать, то ты в жопе.
guest6 12.09.2021 14:19 # +1
в теории смысла нет, на практике бывает удобнее сделать поток, и не писать МНОГО КОДА для корутин или пула или асинхронщины
Инструменты пока что слабоваты
ISO 12.09.2021 14:12 # +2
Для CPU-bound задач — да. Для IO (когда тебе надо серануть в сеть/прочитать диск и ждать ответа) — вполне себе имеет.
JloJle4Ka 12.09.2021 14:14 # 0
guest6 12.09.2021 14:16 # +1
Но если ты можешь переписать код на select/poll/CompletionPorts то нет смысла держать треды в спящем состоянии.
В котлине есть корутинная либа ktor например, это обертка вокруг тех самых полов.
Если тебе нужно обработать 44 запроса,ты просто создаешь 44 корутины.
Все они работают на тредпуле размером с кол-во ядер.
Если какая-то корутина "блочится", то на самом деле она не блчится, а передает управление другой корутине
JloJle4Ka 12.09.2021 14:19 # 0
Всё, что прикасается к Jawa и JWM – превращается в ложь, обман, предательство и растрату ресурсов компьютерна.
guest6 12.09.2021 14:21 # +1
не нравится котлин, возьмите asyncio из питона
guest6 12.09.2021 14:19 # +1
Азаза. Jawa-отгрызок пытается хоть как-то повысить перформанс )))))))))
guest6 12.09.2021 14:20 # +1
guest6 12.09.2021 14:22 # +1
guest6 12.09.2021 14:29 # 0
guest6 12.09.2021 14:20 # +1
JloJle4Ka 12.09.2021 14:21 # 0
Desktop 12.09.2021 13:57 # −1
guest6 17.09.2021 10:58 # +2
Я до 2019 для написания и проверки скриптушни обходился ноутбучным i5 третьего поколения. Обходился бы и сейчас, но хромолисовинды оборзели и стали вытекать из 8ГБ, а это уже был максимум, который туда можно было вставить.
Если б можно было туда впердолить ещё памяти, хватило бы до 2025 года.
bormand 17.09.2021 12:30 # 0
Да нифига... у меня довольно долго был i5 3570k, купленный ещё до падения рубля. Не ноутбучный правда, так что он и сейчас вполне юзабелен.
i7 8700k буквально пару-тройку лет юзаю.
guest6 12.09.2021 13:19 # +1
Desktop 12.09.2021 13:24 # +1
жаль, в 2000 символов не помещается. плохо Плэнер* Скрепер html-формы разработал
* https://ru.wikipedia.org/wiki/Плэнер
bormand 12.09.2021 13:55 # 0
В 8 раз точно сольёт, avx то нету. Но может хоть до уровня опенссл дотянет...
guest6 12.09.2021 13:57 # +1
bormand 12.09.2021 14:00 # 0
guest6 12.09.2021 14:03 # +1
Там можно не срать в кучу, например? А инты нормальные там есть?
bormand 12.09.2021 14:07 # +1
Там есть инты, флоаты, линейный кусок памяти и отдельный массив для указателей на функции. В общем-то больше там нихуя нет, даже неструктурных jmp'ов.
Дейкстре бы понравилось.
guest6 12.09.2021 14:09 # +2
я почему-то думал это JVM, а это весьма годно
bormand 12.09.2021 14:16 # +1
guest6 12.09.2021 14:18 # +2
bormand 12.09.2021 14:37 # +1
Ассемблер со вкусом джавы.
guest6 12.09.2021 14:41 # +3
И кто бы ни пробовал его переписать -- получалось нечитаемое говно ))
bormand 12.09.2021 14:58 # +2
Ну это как с тредом, где сишную обработку ошибок через goto пытались переписать без него. Получалось только хуже и нечитаемее.
guest6 13.09.2021 03:55 # +1
ASD_77 12.09.2021 14:07 # 0
bormand 12.09.2021 14:09 # +1
ASD_77 12.09.2021 14:05 # +1
bormand 12.09.2021 14:19 # +1
ISO 12.09.2021 13:17 # 0
???????
guest6 12.09.2021 13:19 # 0
хотя это же не вывод типов, это система типизации другая
guest6 12.09.2021 14:08 # 0
ASD_77 12.09.2021 13:59 # 0
guest6 12.09.2021 14:03 # +1
Хотя конктерно это пример спорен. Я не уверен, что хочу широёбиться по функции ища что она возвращает
ASD_77 12.09.2021 15:08 # 0
guest6 13.09.2021 03:53 # 0
ASD_77 13.09.2021 11:38 # 0
JloJle4Ka 13.09.2021 11:51 # 0
guest6 13.09.2021 11:53 # 0
bormand 13.09.2021 12:01 # +1
JloJle4Ka 13.09.2021 12:04 # +1
Да он школьник, делает домашку, ололо школоло на говнокоде!
ASD_77 12.09.2021 14:03 # +1
j123123 13.09.2021 03:43 # +1
раз считаешь что кто-то твой тупсрипт будет реально юзать заместо крестов и сишки, при наличии того же Rust, Nim, D
guest6 13.09.2021 05:16 # 0
ASD_77 13.09.2021 12:53 # 0
JloJle4Ka 13.09.2021 13:23 # +1
ASD_77 13.09.2021 12:54 # 0
ASD_77 12.09.2021 13:05 # +2
JloJle4Ka 12.09.2021 13:07 # +2
bormand 12.09.2021 13:53 # +2
ASD_77 12.09.2021 15:08 # +2
bormand 12.09.2021 15:13 # +1
CEHT9I6PbCKuu_nemyx 12.09.2021 15:24 # 0
http://web.archive.org/web/20120124144026/habrahabr.ru/users/andoriyu/
Он на всех сайтах умудряется наживать врагов.
guest6 12.09.2021 15:28 # +1
А кто -1-й?
> Откуда: США, California, Santa Barbara
Ого
CEHT9I6PbCKuu_nemyx 12.09.2021 15:36 # +1
К сожалению, вебархив не сохранил 7157-ю страницу рейтинга. Хотя можешь посмотреть, кого утопили в 2007-м:
http://web.archive.org/web/20071013092534/http://habrahabr.ru/people/unhabred/page1/