- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
#include<iostream>
void suka( void(*callback)( void(*)( void(*)() ) ) ) {
std::cout << "Suka, ";
callback( suka );
}
void blyad( void(*callback)( void(*)( void(*)() ) ) ) {
std::cout << "Blyad !!!" << std::endl;
callback( blyad );
}
int main() {
suka( blyad );
return 0;
}
OlegUP 20.10.2017 20:48 # 0
dxd 20.10.2017 21:08 # +2
inkanus-gray 20.10.2017 22:02 # 0
inho 20.10.2017 22:52 # 0
Вспомнить виндовые тайпдефы с префиксом LP
Bobik 20.10.2017 22:10 # +5
roman-kashitsyn 20.10.2017 23:10 # +1
Вот с "тайпдефами", но в хаски:
1024-- 20.10.2017 23:19 # 0
Пока статический питушок вычисляет тип и задействует математику, у динамического питушка всё работает, и он рвётся к более продвинутым абстракциям.
roman-kashitsyn 20.10.2017 23:31 # +3
SemaReal 20.10.2017 23:34 # +2
Stallman 20.10.2017 23:54 # +5
SemaReal 20.10.2017 23:58 # 0
Но ты очень точно описал суть
inho 21.10.2017 00:00 # +2
roman-kashitsyn 21.10.2017 14:17 # +3
Уважаемый User@8172631, на вашем счету осталось null nullблей. Рекомендуем вам
SemaReal 21.10.2017 22:49 # +3
Кстати, нулизацию можно проверять статические. У Intellij есть аннотации nullable/notnull, а в котлине этовообще разные типы.
roman-kashitsyn 23.10.2017 13:21 # 0
Это тебе сильно поможет, когда ты напишешь "на вашем счету осталось " + amount;
guest8 06.09.2019 22:11 # −999
1024-- 21.10.2017 14:00 # 0
У царя было три сына, у трёх сыновей - по 0..3 сына, а у них - по 0..3 сына и так далее.
Картина из реального мира, которую заказчик требует описать в программе. Статический питушок уже сломался, а динамический - построил дерево на ссылках.
bormand 21.10.2017 14:10 # +5
1024-- 21.10.2017 17:17 # 0
Stallman 21.10.2017 17:33 # +4
bormand 21.10.2017 17:41 # 0
Stallman 21.10.2017 17:44 # 0
1024-- 21.10.2017 17:56 # −1
auto o = static_perdolieren<game_of_life<42>>(x<1 0> + 1);
guest8 06.09.2019 22:11 # −999
1024-- 21.10.2017 17:53 # −3
Ха-ха. Динамический питушок не обязан всегда использовать произвольное число аргументов, а делая это, осознает все последствия.
> Динамический питушок порой не может даже потребовать определенное количество передаваемых аргументов, что обязывает его пердолиться с проверками количества аргументов и их типов постоянно.
Статический питушок порой не может даже потребовать нужный домен, что обязывает его пердолиться с проверками значений аргументов постоянно и иногда - их типов.
Вот мы и вся суть статического питушка. Как динамика - так грешно, как покажешь void*, так "мы не такие", а в коде всё равно Object и джвойная диспетчеризация. Как статика - так "смотри документацию, соблюдай контракты", как динамика - так "проверяй типы и значения".
Stallman 21.10.2017 18:02 # 0
А ну-ка, продемонстрируй мне это на твоем любимом JS. Только без пердолинга в духе иф-аргументс-сайз-хуяйз-кукарек.
Остальной твой высер - обычное кудахтанье, не имеющее ничего общего с реальностью. Въебал минус.
1024-- 21.10.2017 18:17 # −1
> А ну-ка, продемонстрируй мне это на твоем любимом JS. Только без пердолинга в духе иф-аргументс-сайз-хуяйз-кукарек.
> Остальной твой высер - обычное кудахтанье, не имеющее ничего общего с реальностью.
Зачем бугуртить, если не понял? Непонятный термин можно было и погуглить.
OK, вот на первый раз: https://ru.wikipedia.org/wiki/Контрактное_программирование
bormand 21.10.2017 18:25 # +1
Динамический питушок: весь контракт заэнфорсить не получается, да и хуй с ним, сам глазками всё буду проверять.
1024-- 21.10.2017 18:38 # 0
assert и throw как бы намекают, что всё равно придётся пердолиться в рантайме (if+throw ничем не лучше if+arguments.length+throw).
В распространённых статически типизированных языках нельзя сузить диапазон входных значений функции, из-за чего приходится обмазываться assert'ами, но также нельзя расширить диапазон входных значений, из-за чего приходится обмазываться шаблонами.
bormand 21.10.2017 19:03 # 0
В тех же распространнёных крестах диапазоны типов можно сузить метушнёй. Да, останется рантайм проверка при касте из большего диапазона в меньший (она тут неизбежна). Но случайно просунуть в функцию значение, нарушающее контракт, ты уже не сможешь (фейл будет ещё до вызова).
1024-- 21.10.2017 19:13 # 0
Побочные эффекты тоже хрен сузишь (ну может быть, в C++ можно попробовать). Всё равно мануалы курить придётся до посинения. Хотя, в IDE статический питух лучше подсвечивается - это да, удобно.
bormand 21.10.2017 19:14 # +2
Т.е. тебя совсем не напрягает, что пердолинга в рантайме получается больше? Что чем раньше будет выявлена ошибка, тем дешевле будет её фикс? Что без 100%(!) покрытия строк юнит-тестами в динамике нельзя даже банальные опечатки отловить?
1024-- 21.10.2017 19:24 # 0
Напрягает. Конечно, часто удобно удостовериться в том, что ошибок определённого рода нет.
Я не против статических проверок, и C++ мне нравится.
> Что без 100%(!) покрытия строк юнит-тестами в динамике нельзя даже банальные опечатки отловить?
Справедливо для практически всех языков и программ. Фигурную скобку не там поставил - и всё.
Antervis 21.10.2017 20:00 # 0
Овер 90% ошибок - всякого рода опечатки. Разница лишь в том, поймаешь ты их до или после запуска программы
Stallman 21.10.2017 18:35 # 0
Ок.
1024-- 21.10.2017 18:42 # −2
Расскажите уже Штульману про контрактное программирование, а то человек даже в статически типизированных языках на каждом сложении проверяет, что сумма операндов не приведёт к переполнению.
Stallman 21.10.2017 19:00 # 0
1023 прочитал про свое кококонтрактное программирование, возвел идею в абсолют, и решил, что сигнатуры вообще нинужны. Пусть переходит на баш, там вообще ни сигнатур, ни типов, прям контрактный рай
1024-- 21.10.2017 19:26 # 0
Я не пойму, Stallman слишком молод, ничего не знает и считает себя королём мира, слишком стар, что для экономии мышлит шаблонами 70х годов (когда ему было 20 лет), либо просто тролль.
Такое ощущение, что ему кто-то сказал, что JavaScript плохой и динамическая типизация - тоже плохая, вот он теперь ходит и всем это повторяет. И не имеет возможности анализировать ситуацию, всё динамическое стало угольно чёрным, а всё статическое - белым и пушистым.
Программирование - это не только искусство, но и наука. Тут думать надо и оценивать плюсы и минусы, а не кукарекать, что JS говно.
SemaReal 21.10.2017 23:19 # +5
Просто раньше люди не умели сделать ее красивой. Не было вывода типов. Не было нормальных генериков/шаблонов, не было сахара для делегирования (чтобы делать адаптеры) и статическая типизация ассоциировалась у людей с тоннами унылого бойлерплейтового кода, который, к тому же, древние IDE не умели генерировать (его писали руками).
Кто видел Java 4 -- тот поймет.
Потому-то людям так нравились языки без статической типизации, а особенно когда им надо было написать что-то не очень больше.
Но современная стат типизация уже не так плоха, и потому ее по-тихоньку завозят в языки. Это pep-484 у питона, это пропозалы у JS (https://github.com/sirisian/ecmascript-types) и языки типа TypeScript, которые в JS компиляца.
Кстати, динамическая типизация вовсе не означает отсутствие статической: например в java или c# типы проверяются и в рантайме, и в момент компиляции.
JavaScript (в его нынешенем варианте) я, как и Stallman, считаю неудачным языком. У него убогая стандартная библиотека, его синтаксис непривычен для большинства программистов, нет нативных средств описания зависимостей и модулей, его прототипориентированность никому не нужна на самом деле: все эмулируют через нее обычное ООП (с костылями).
Наконец тот факт что люди пишут языки, которые компилирются в javascript, говорит о том что большинство программистов JS не любят.
Однако в JS 2015 внезапно ВСЕ стало сильно лучше. К сожалению без babel оно пока не везде работает, но в целом это говорит о том, что люди признали что у JS есть проблемы, и стали их исправлять.
subaru 21.10.2017 23:39 # 0
Когда? В млях все было.
> динамическая типизация вовсе не означает отсутствие статической
Во-первых, означает. Во-вторых, это как раз статическая типизация позволяет сделать динамику только там, где надо.
SemaReal 21.10.2017 23:50 # 0
а в жабах не было, например.
С функциональными ЯПами всё понятно: они опередили свое время на пол века, в них были вещи которые в мейнстримовых императивных появились только в нулевых:)
>>Во-первых, означает.
конечно же нет. Я даже пример привел.
>Во-вторых, это как раз статическая типизация позволяет сделать динамику только там, где надо.
Не понял фразы. ЯП со статической типизацией может вообще ничего в рантайме не проверять. Си, например.
1024-- 22.10.2017 12:25 # +1
Stallman в последние дни только хейтит JS и переносит свои мысли об этом языке на программистов.
Вот если бы были хорошие инструменты клонирования свойств и создания пустых объектов, ПП в JS было бы интереснее. Джвух фич (неявное прокидывание this в функцию и Function.prototype.setPrototype), как мне кажется, хватит для того, чтобы покрыть нужду в ООП.
А возможность унаследовать только поведение бесценна. Можно, например, унаследовать квадрат от прямоугольника, и квадрат не будет хранить лишние поля.
vistefan 23.10.2017 11:55 # +2
А тот факт, что страус сделал кресты, говорит о том, что он ненавидел няшную до посинения.
А схему стали делать, потому что от старинного лиспа их аж трясло.
А вирта так достал этот сраный алгол, что он оттуда только самое лучшее взял, потому что бесит реально.
guest8 06.09.2019 22:12 # −999
guest8 06.09.2019 22:11 # −999
guest8 06.09.2019 22:11 # −999
guest8 06.09.2019 22:11 # −999
SemaReal 21.10.2017 22:51 # +2
Зато когда это нужно будет рефакторить то IDE пойдет вжопу, равно как и все другие питушки, потому что без запуска кода никто ничо не поймет
Xom94ok 20.10.2017 21:04 # +5
Xom94ok 20.10.2017 21:06 # +5
Благодарим за пользование нашим сервисом.
Всего хорошего, идите нахуй.
Fluttie 22.10.2017 21:47 # +1
В копилку об ideone. На стаковерфлоу выразили мнение, что портянка кода перед передачей в гцц препроцессится какой-то НЁХ на джсе, который интерпретирует "0" по-своему. Ideone пока молчат.
g0cTb 23.10.2017 00:18 # +1
inkanus-gray 23.10.2017 00:25 # 0
[b]0[/b]
Наверняка ideone писали пэхапэшники и проверяли пустоту выхлопа функцией empty.
Stallman 23.10.2017 00:50 # 0
Stallman 23.10.2017 00:51 # 0
g0cTb 23.10.2017 00:59 # 0
g0cTb 23.10.2017 01:00 # +1
inkanus-gray 23.10.2017 07:45 # +2
А теперь задание: придумать несколько способов вставки в комментарий жирного нолика.
1024-- 23.10.2017 07:59 # +2
gost 23.10.2017 11:40 # +3
Stallman 23.10.2017 11:44 # 0
Stallman 23.10.2017 23:30 # 0
g0cTb 23.10.2017 13:09 # 0
g0cTb 23.10.2017 13:10 # 0
bormand 23.10.2017 18:46 # +1
Stallman 23.10.2017 19:41 # +2
bormand 23.10.2017 20:44 # +5
inkanus-gray 23.10.2017 20:51 # +6
inho 23.10.2017 23:42 # 0
inkanus-gray 23.10.2017 23:43 # +1
1024-- 24.10.2017 18:29 # +1
Stallman 24.10.2017 18:32 # 0
d_fomenok 24.10.2017 18:34 # 0
govnokod.ru/23449#comment392370
inkanus-gray 23.10.2017 01:05 # +5
— i
— b
— u
— s
— blink
— size
— color
— code
Результат: только code считает одинокий нолик непустой строкой.
Stallman 23.10.2017 00:55 # 0
guest8 06.09.2019 22:12 # −999
g0cTb 23.10.2017 00:32 # +6
1024-- 23.10.2017 07:57 # +4
inkanus-gray 23.10.2017 08:54 # +2
Единственное, что у меня вызывало опасения, это CSS. Нет ничего более беспомощного, безответственного и испорченного, чем CSS-зомби. Я знал, что рано или поздно мы перейдём и на эту дрянь.
dxd 23.10.2017 13:48 # 0
vistefan 23.10.2017 14:32 # +2
Можешь написать консольный браузер, который будет b рисовать жирным, а strong, например, капсом, стандарт ты соблюдёшь. Если b нарисуешь не жирным, а как-то иначе -- нарушишь.
В вебе многое -- единицы изменерия, терминология, принципы, волочется по наследству ещё из старинной типографики и верстки книг.
SemaReal 23.10.2017 15:54 # +3
В нулевые была сильная увлеченность семантической версткой, и за b и i били по рукам.
Затем пришли сеточки, и всем стало похуй на семантику. Современная верстка напоминает табличную, и верстуны влегкую хуярят туда i и b. Причем i иногда вообще юзают не по на значению.
Веб попытался чуть-чуть побыть не говном, но потом он вспомнил что он всё таки веб и вернулся, так сказать, к дерьмоистокам
gost 23.10.2017 11:44 # +1
inkanus-gray 23.10.2017 11:56 # 0
gost 23.10.2017 15:12 # 0
inkanus-gray 23.10.2017 15:47 # 0
https://ideone.com/fSytdu
В "PHP" такой проблемы нет.
inkanus-gray 23.10.2017 16:08 # +1
https://ideone.com/Wp73wt
https://ideone.com/wUUroF
gost 23.10.2017 20:41 # +3
https://ideone.com/2SxbDg
OlegUP 20.10.2017 21:29 # 0
bormand 20.10.2017 22:14 # +3
Я просто оставлю это здесь.
SemaReal 22.10.2017 04:09 # +4
Так вот ты какой -- современный промышленный язык программирования
inkanus-gray 22.10.2017 08:04 # +1
1024-- 22.10.2017 11:35 # +2
1024-- 22.10.2017 12:36 # +1
inkanus-gray 22.10.2017 15:49 # +1
Удалось скомпилировать:
Кто придумает более короткий пример замыкания с шаблоном?
bormand 22.10.2017 15:50 # +6
inkanus-gray 22.10.2017 15:52 # +5
SemaReal 23.10.2017 15:49 # +1
примитивы -- нет
а вот в C# примитивы это вроде бы value types (кажется). Ну, методы у них есть