заведи отдельный топик для перечисления языков, в которых ты не разбираешься
|
заведи отдельный топик для перечисления языков, в которых ты не разбираешься
pal хочется взять и...
у тебя паранойя. На этот раз в эрланге я разбираюсь и он тут в тему. Про D - в чём не прав ? Ты наверное в силу ограниченности присущей плюсофилам даже не смотрел ни то не другое.
в тему реализовывать "Монотридный сервачок" на concurrent programming language ?
то, что ты в нем не разбираешься, необязательно косвенно демонстрировать неправотой, достаточно прямо об этом сообщить, что ты и сделалПро D - в чём не прав ?
я в силу своей любознательности смотрел и то и тоТы наверное в силу ограниченности присущей плюсофилам даже не смотрел ни то не другое.
в первом случае меня остановила узкоспециализированность, хотя у кого-то поворачивается язык называть его "general-purpose", а во втором - "улучшенный с++", не совместимый ни с с, ни с с++, никем не поддерживаемый, лишен всякого смысла, будь он хоть трижды хорош. в реальном мире улучшенный с++ называется с++0х, а д не существует
но это все не соответствует теме, делай темы xxx vs c++, может я и проявлю интерес
нет, в тему о том что по 10 правилу гриспена нагородить вам на плюсах тот же эрланг когда будете масштабировать и разделяемую память переписывать на отправку сообщений по сокетам. во вторых про автоматы. В третих да. пускай будет монотрИдный. Рассматриваем процессы эрланга как акторы. ну или если для каждого клиента по автомату, и каждого по обрабатывать, то те же эрланговские процессы получатся.в тему реализовывать "Монотридный сервачок" на concurrent programming language ?
ну... бояться узкоспециализированности - сидеть на плюсах и петоне. Других ведь не останавливает.и никто не жалеет.
то что я о нём спрашиваю, не значит что я делаю о нём мнение или перечисляю, как хотите вы.то, что ты в нем не разбираешься, необязательно косвенно демонстрировать неправотой, достаточно прямо об этом сообщить, что ты и сделал
пока что всё нашол.
http://www.digitalmars.com/d/2.0/cpp_interface.html
http://www.digitalmars.com/d/2.0/interfaceToC.html
да и странно если бы сишное ABI кто то не поддерживал.
вот и хорошо что никем не поддерживаемый. мне захотелось ощутить плюсоёбство сначала, без шелухи легаси, что накопилось в плюсах. вот почитаю я например как что-то реализовано в с++0х, там же всё только для тех кто на плюсах писал очевидное может быть. а в Д как то всё сначала. и это прекрасно. поэтому хочу его попробовать в деле.
да и вобще - в этой теме же запредельная концентрация обсуждений си, си++. и все знают это. вот и логично спрашивать в этой теме про что то касающееся этого всего.
во первых, нет никаких причин, по которым наша реализация должна быть хуже(не забываем, что с++ гораздо мощнее, чем языки, про которые это правило)
во вторых, то, что на с++ можно реализовать фичи языка х, а на языке х нельзя реализовать фичи с++, является плюсом с++
abi поддерживают все, кому не лень, а надо поддерживать api, т.е. имеющиеся заголовкипока что всё нашол.
http://www.digitalmars.com/d/2.0/cpp_interface.html
http://www.digitalmars.com/d/2.0/interfaceToC.html
да и странно если бы сишное ABI кто то не поддерживал.
какое же это дело, когда ни библиотек, ни инструментария ? это песочницаа в Д как то всё сначала. и это прекрасно. поэтому хочу его попробовать в деле.
Ну вроде библиотеки которые мне нужны есть. А инструментарий - не привыкать. для плюсов тоже только студия и полуфабрикаты на основе gcc. Прорвёмся )какое же это дело, когда ни библиотек, ни инструментария ? это песочница
Просто я почти уверен что на плюсах элементарные вещи в эрланге будут иметь страшные слова вроде сериализация, RPC, диспатчеры, врапперы, менеджеры. Да и туплы/бинари конечно можно темплейтами, но ограниченные. Это разные парадигмы и нельзя сказать что плюсы лучше эрланга или наоборот. Нет смысла в Erlang vs C++. но на плюсах придётся делать велосипеды как в эрланге, и там мало что поможет плюсовое.
c++ однозначно лучше в силу того, что он general-purpose
нишевые языки к сравнению даже не допускаются
это потому что нишевые языки для своих ниш превосходят general purpose по всем параметрам.нишевые языки к сравнению даже не допускаются
ниша = песочница
а песочница это что?
если существуют эффективные средства для конкретно сервера, конкретно клиента, конкретно небольших утилиток, то что останавливает ? Конторе не выгодно чтобы сиплюсплюсеры сидели без дела и надо изобразить взгляд в форме крестиков, как в мультиках, и кодить всё что под руку попадёт ? ) В это время люди показывают такие цифры http://lionet.livejournal.com/20916.html
И по вашему для плюсов нет ниши ? только геймдев, легаси, крупные пакеты крупных фирм которые тоже легаси.
это нечто настолько незначительное по сравнению с окужающим миром, что можно считать, что оно и не существует
при желании на любом языке можно сделать медленнее и показыватьВ это время люди показывают такие цифры http://lionet.livejournal.com/20916.html
чушьИ по вашему для плюсов нет ниши ? только геймдев, легаси, крупные пакеты крупных фирм которые тоже легаси.
общего назначения это общего назначения, а не то, куда ты ткнул пальцем
суть в том чтобы сделать быстрее и лучше.при желании на любом языке можно сделать медленнее и показывать
всё тьюринг-полное стало быть общего назначения. Общего назначения это какой то швейцарский ножь получается - копает как топор, рубит как лопата.. Если уж общего назначения, то это питон с его рефлексией, метапрограммированием, встроенными типами, да и типизацией, которая позволяет делать такие абстракции c с такой гибкостью, что порой используя какуюто либу, не замечаешь что это вообще был питон... А плюсы это так.. сишка. простые типы данных, ветвления, неуклюжие классы, куча сторонних библиотек boost, qt, stl...общего назначения это общего назначения
я бы вообще запретил не managed языки, кроме си. мучался сегодня с D. это ж просто апофеози это из пяти-строчного примера в википедии...E:\Downloads\lol.d(10): Error: cannot append type char[] to type immutable(char)[][]
E:\Downloads\lol.d(9): Error: function std.stream.Stream.opApply (int delegate(ref char[]) dg) does not match parameter types (int delegate(ref immutable(char)[] __applyArg0))
E:\Downloads\lol.d(9): Error: cannot implicitly convert expression (__foreachbody407) of type int delegate(ref immutable(char)[] __applyArg0) to int delegate(ref ulong n, ref wchar[] line)
Ну хорошо, вы говорите что неплюсы это экзотика и всё такое. но вы вообще признаёте что могут быть языки лучше плюсов, или всё настолько плохо ?
если бы это было так, сделали бы быстрее и лучше на с++
а так, хотели показать, что с++ хуже, и показали
нетвсё тьюринг-полное стало быть общего назначения.
нет. это значит, что у него есть и лопата и топор или есть возможность их сделатьОбщего назначения это какой то швейцарский ножь получается - копает как топор, рубит как лопата..
не надоело рассуждать о высоких материях без подготовки ?Если уж общего назначения, то это питон с его рефлексией, метапрограммированием, встроенными типами, да и типизацией, которая позволяет делать такие абстракции c с такой гибкостью, что порой используя какуюто либу, не замечаешь что это вообще был питон... А плюсы это так.. сишка. простые типы данных, ветвления, неуклюжие классы, куча сторонних библиотек boost, qt, stl...
btw, только "не managed языки" могут быть general-purposeя бы вообще запретил не managed языки, кроме си.
в смысле "не { _исключительно_ managed }"
если ты не способен использовать raii, в с будет еще хуже
я же говорил, что его нетмучался сегодня с D. это ж просто апофеоз и это из пяти-строчного примера в википедии...
и не будет, т.к. см ниже
все, что может быть лучше с++, находится тут http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2597.html и со временем станет с++Ну хорошо, вы говорите что неплюсы это экзотика и всё такое. но вы вообще признаёте что могут быть языки лучше плюсов, или всё настолько плохо ?
Напиши решето Эратосфена, работающее во время компиляции на С.
Заодно подучи LL и LALR-грамматики, может и с автоматами проще станет.
Кстати, какая временная сложность разбора контекстно-свободной грамматики по твоему?
LOL!
jabber.ru - песочница?
Я живу на планете, где компиляторы, регексы, поиски строк и очень многое другое делаются автоматами.
А вот ты похоже с Марса.
Умные люди не применяют методы, а решают задачи. В том числе и используя локальные переменные, переключая весь стек.
Используя для этого даже longjmp (если нет swapcontext).
Напрашивается ответ - если у тебя руки хуже компилятора, то это только твоя проблема.
Кстати, в вопросе слышен голос не плюсовика, но джависта.
Зачем тогда плюсовики пользуются smart pointers, - GC ведь лучше?
Т.е. как работает компилятор ты не знаешь...
Кстати грамматика большинства языков сложнее практически любого сетевого протокола. Так что сервер на автомате написать проще чем компилятор.
Затраты чуть другие.
И тайминги не контролируется.
И race condition в наличии.
Ты RT-системы когда-нибудь в жизни писал?
Не такие, где на 100 коннектов требуется 4-ядерный Xeon, а нормальные?
Ага, в IBM тоже идиоты...
Планета неправильная, на автоматах никто не пишет, в языках никто не разбирается, а тут еще и IBM офигели...
Твой первый линукс был 2.4? Я не ошибся?
Зайди на http://www.kernel.org/pub/linux/kernel/v1.2/ и http://www.kernel.org/pub/linux/kernel/v1.3/ и сравни даты релизов.
Для меня, как пользователя emacs - сюрприз.
Для человека, тупо следующего указаниям маркетинговых отделов вендоров - сюрприза нет, такой умеет телепатически извлекать тенденции моды из коллективного бессознательного IT-тусовки.
Я увы не умею и не стремлюсь.
Я на другом зарабатываю.
Теорию формальных языков прогуливал? Тогда понятно чего ты автоматы не любишь.
А вот это уже клиника, С-шные линкеры, фортрановские линкеры...
НЕТУ С-шных ЛИНКЕРОВ В ПРИРОДЕ!!!
Есть линкеры ОС!!!
И если язык _требует_ переписывания линкера ОС - то это нарушение кучи принципов дизайна. Это называется заплатка, причем не на собственной концепции, а поставленная на чужой нос, чтобы свои трусы меньше пахли. И людей, пишущих заплатки на стратегических проектах надо не увольнять - надо им отметку в паспорте ставить - заплаточник.
Чтобы выше сеньора никогда не поднимались. Потому что этот образ мышления - на всю жизнь. И один такой архитектор с кусочно-непрерывным видением - испортит жизнь огромной куче людей и засрет мозги новым будущим архитекторам.
Что мы кстати и наблюдаем.
Изучение чего угодно - вообще удел слабых, сильные и так все знают, без консультации с реальностью...
The future is already here - it is just unevenly distributed. (c) W. Gibson
Вот чего я не понимаю в этой жизни - это compile-time execution в подобных формах, включая C++ templates.
Ну хочется сделать чтобы что-то считалось и модифицировало программу во время компиляции - блин сделайте тьюринг-полный препроцессор с возможностью модификации синтаксиса целевого языка. Эта штука покроет любой вариант compile-time execution как бык овцу. И будет на порядок удобнее и отладка легче и решение универсальное для любого языка - один раз написал, много раз пользуешь. Язык не меняется, компилятор не меняется первое время.
И нафига эта степень интеграции с урезанием функционала?
Сохранить и еще на сантиметр приподнять хрустальную абстракцию чего-либо (ООП или ФП или type-safety)?
Блин, программы работать должны, а не реализовывать абстракции.
А чем static if в D отличается от #if? Только type-safe. Т.е. народ тупо опустил препроцессор до уровня системы и тем самым поднял связность и сложность всего комплекса без новой функциональности. И смысл? Типа удобство? Так это вендорам удобство, не программистам.
Имхо архитекторам MDL-принцип надо на первом курсе изучать. Причем под гипнозом, с имплантированием чипа в моск.![]()
The future is already here - it is just unevenly distributed. (c) W. Gibson
нет, ты свою глупость просто так не замнешь
ты писал про "времЕнную сложность компиляции", а теперь пытаешься свести ее к парсеру
даLOL!
jabber.ru - песочница?
все мимо кассыЯ живу на планете, где компиляторы, регексы, поиски строк и очень многое другое делаются автоматами.
мимо "Монотридный сервачок" и мимо "люди ими не думают"
тебе уже врядли что-то поможет, но все-таки рассмотрим это подробнее, вдруг поможет кому-то еще
нормальный человек напишет внури потока что-то в духе
a = readA ( );
b = readB ( );
if ( ... )
c = readC ( );
...
это именно то, как люди думают, и другие люди будут на это смотреть и легко понимать
человек же, потерявший связь с реальностью, преобразует все операции в асинхронные, нагородит автомат с кучей состояний, придумает, где и как хранить эти a, b и c и решит, что он непомерно крут
а теперь представим, что одна из этих функций не имеет асинхронного варианта, например, она обращается к базе данных, авторы клиентской библиотеки к которой живут в реальном мире и полагаются на использование потоков. конечно, она уснет и в "Монотридном сервачке" уснут все 10к соединений, и весь окружающий мир будет смеяться и показывать пальцем
я бы поумнел сразу, но фанаты наверняка попробуют выкрутиться
например, вручную реализовав асинхронную версию библиотеки
и, когда пыль осядет, опять смогут счесть себя непомерно крутыми
но свет в конце туннеля - это поезд, потому что некоторые очень базовые вещи не имеют асинхронных вариантов
например, open(2)
т.е. как только "Монотридному сервачку" надо будет открыть файл, он уснет целиком, вместе со всеми 10к соединений и тут уже не поможет ничто
или, вдруг одному из соединений понадобится вызвать функцию, которую давно никто не вызывал и страница с которой вытеснилась из памяти
опять в uninterruptible sleep уходят все 10к соединений и окружающий мир продолжает тыкать пальцем и смеяться
можем еще рассмотреть тот факт, что в общем случае придется еще и придумывать user level scheduler, который, во первых, будет медленнее ядерного, хотя бы потому, что будет работать сначала ядерный, а потом этот, а во вторых, не будет полноценным
удачи в реализации realtime scheduling policy только для некоторых из соединений
это то, что делает pthread_setschedparam, а не то, что некоторые могли подумать
да, с тобой уже все ясноНапрашивается ответ - если у тебя руки хуже компилятора, то это только твоя проблема.
стройбат от программирования, это такие звери, что им даже компиляторов не выдают
ассемблер, наверняка, тоже только мешает, достаточно ведь шестнадцатеичного редактора
в общем случае gc конечно же хужеКстати, в вопросе слышен голос не плюсовика, но джависта.
Зачем тогда плюсовики пользуются smart pointers, - GC ведь лучше?
и, сюрприз, за своевременным вызовом деструктров следит компилятор
ты продолжаешь путать компилятор с парсеромТ.е. как работает компилятор ты не знаешь...
Кстати грамматика большинства языков сложнее практически любого сетевого протокола. Так что сервер на автомате написать проще чем компилятор.
даже, если закрыть на это глаза, то автоматы, очевидно, слишком просты, так что в gcc их давно заменили на "hand-written recursive descent parser"
ты просто не знаешь ни тех, ни других и строишь выводы на основании фантазийЗатраты чуть другие.
ты просто не умеешьИ тайминги не контролируется.
не больше, чем у тебяИ race condition в наличии.
нет. однако, я уже точно знаю, что ты нормальную написать не способен в принципеТы RT-системы когда-нибудь в жизни писал?
Не такие, где на 100 коннектов требуется 4-ядерный Xeon, а нормальные?
ты опять сказал глупость, был посажен в лужу, а пытаешься сделать вид, что говорил что-то другоеАга, в IBM тоже идиоты...
Планета неправильная, на автоматах никто не пишет, в языках никто не разбирается, а тут еще и IBM офигели...
Твой первый линукс был 2.4? Я не ошибся?
Зайди на http://www.kernel.org/pub/linux/kernel/v1.2/ и http://www.kernel.org/pub/linux/kernel/v1.3/ и сравни даты релизов.
цитируем "Естественно речь шла о переходе 2.2-2.4-2.6"
кстати, давай сюда линк, что там в ibm говорили в 95 году
лолДля меня, как пользователя emacs - сюрприз.
это же пример ide, включающей в себя компилятор
ты опять ничего не понял и ответил наугадДля человека, тупо следующего указаниям маркетинговых отделов вендоров - сюрприза нет, такой умеет телепатически извлекать тенденции моды из коллективного бессознательного IT-тусовки.
на бредогенерации ?Я увы не умею и не стремлюсь.
Я на другом зарабатываю.
ты действительно не понимаешь, что там еще и семантика должна быть или просто прикидываешься ?Теорию формальных языков прогуливал? Тогда понятно чего ты автоматы не любишь.![]()
ты сколько не ори, а в ос, написанной на с - сишный линкер, в отличие от ос, написанной, скажем, на яве
А вот это уже клиника, С-шные линкеры, фортрановские линкеры...
НЕТУ С-шных ЛИНКЕРОВ В ПРИРОДЕ!!!
Есть линкеры ОС!!!
ты не умеешь читать или в каком-то своем мире живешьИ если язык _требует_ переписывания линкера ОС - то это нарушение кучи принципов дизайна. Это называется заплатка, причем не на собственной концепции, а поставленная на чужой нос, чтобы свои трусы меньше пахли. И людей, пишущих заплатки на стратегических проектах надо не увольнять - надо им отметку в паспорте ставить - заплаточник.
Чтобы выше сеньора никогда не поднимались. Потому что этот образ мышления - на всю жизнь. И один такой архитектор с кусочно-непрерывным видением - испортит жизнь огромной куче людей и засрет мозги новым будущим архитекторам.
Что мы кстати и наблюдаем.
всю жизнь и линкеры и другие программы развивались, развиваются и будут развиваться, и появление с++ ничего не изменило в этом плане
в данном случае речь шла о "The index can be used to check whether your programming skills are still up to date", огульные обобщения никчемуИзучение чего угодно - вообще удел слабых, сильные и так все знают, без консультации с реальностью...
Я как бы далёк от теории формальных языков и не представляю в каких универах такое учат, Но просто справедливости ради, очевидное мне...
шедулер для зелёных потоков без разделяемой памяти эрланг вм просто отводит для каждого потока по пачке редукций и циклом их выполняет, и намного легче потоков/процессов ОС. Блокирующие операции, как и положено "песочнице" выведены в отдельные потоки, и никаких нареканий ни у кого не было(я даже с трудом нашел как это реализовали). в недо-ОС FreeBSD есть даже асинхронная запись в файл, и тоже на очередях. Я также не уверен что проблем не будет если десятки тысяч ОС-тредов(я сильно сомниваюсь конечно что ОС выдержит), при попытке записи в один файл будут делать это асинхронно.user level scheduler, который, во первых, будет медленнее ядерного, хотя бы потому, что будет работать сначала ядерный, а потом этот, а во вторых, не будет полноценным
На этот раз опять замедлили эти ребята http://www.sics.se/~joe/apachevsyaws.html
Когда я впервые читал про автоматы мне показалось что они помогают применять логику в зависимости от состояния, сделать код более детерминированным. Хотя возможно я путаю автоматное программирование, которое прямо таки просится под событийно-ориентированные штуки, с вашими какими-то патернами дикими...
тут нет смысла спорить, как я уже указал, некоторые операции в принципе не бывают асинхронными, поэтому без kernel level threads будет спать весь процесс
кстати, все это давно поняли и от зеленых потоков отказались, что ява, что freebsd
у последних, правда, на это ушло две попытки, т.к. в первой они опять решили сделать не как у людей, а mxn
то что вы указали я уже опровергнул. Эрланг ВМ имееет совершенно другие принципы. Там для блокирующих операций есть потоки ОС, и используются они как расходный материал. когда нужна блокирующая операция(да и любое общение с внешним миром), из пула берётся свободнй поток и сообщение шлётся ему.как я уже указал
Таким образом на 10000 зелёных потоков мы имеем 100 ОС-потоков поторые можно подставить под удар.
Неожиданно ?
Социальные закладки