ctype еще вспомнил. осилить это всё не составляет проблем. только зачем ?
|
ctype еще вспомнил. осилить это всё не составляет проблем. только зачем ?
.net это в основном чтобы продажи выньдовс солюшенов двигать и джаву теснить из ентерпрайс сектора. большая часть кода Windows (включая Vista) написана на C++. MS Office , Outlook, Exchange Server тоже. Visual Studio - частично на C# (гуй), "потроха" к которым она внутри обращается на C++
если в башне дребедень....
да и шаблоны так плохо поддерживались с++ компиляторами, не знаю как сейчас с этим дело обстоит![]()
не надо путать, от отсутствия шаблонов ява не становится лучше
если у тебя забирают _возможность_, то это называется недостатком
если не интересуют компиляторы, выпущенные в прошлом тысячелетии, то с поддержкой все ок
Последний раз редактировалось pal; 16.04.2009 в 08:10.
Не менее линейной а дальше - как получится.
При тьюринг-полных шаблонах (как и при тьюринг-полном препроцессоре) - до бесконечности.
При ограничениях типа 17 уровней - наверное до O(n^17), хз надо посчитать
В любом случае нелинейная.
О том, что читая Бхаватгиту можно постичь истину - написано ненамного меньше.
Убейте поток который висит в синхронном вызове БД внутри чужой либы.
Реализуемы кстати вполне (не на С++) и иногда единственный способ прибить трид,
Если знать все переопределенные операторы и конструкторы включая вызовы чужого кода - да. Вы их знаете?
Я нигде не говорил о userlevel threads, я говорил о монотридном сервере.
Поинтересуйтесь как пишутся c10k сервера или реалтайм.
Если слово FSM ни о чем не говорит.
Я с массивными мультитридами не работаю уже лет 5 как минимум.
Ибо знаю к чему это ведет на нагруженных системах.
Неправда ваша.
Я что теперь могу void* не приводить к типу в С++?
Потому что по умолчанию предполагается стабильность и простота языка с навороченными и развивающимися библиотеками,
В С++ этот принцип нарушен и очень сильно, Там постоянно развивается язык. Если вы считаете, что это хорошо и правильно - вы нерпавы.
В свое время IBM начала выделять бабло на Линукс при условии, что новая версия ядра будет появляться не чаще раза в два года.
Если вы не понимаете почему это надо - то это не ко мне.
Посчитайте человеко-часы затраченные на переобучение и переписывание программ по новому стандарту и перевдите их в человеко-жизни - Освенцим получится.
Snacc ASN library написанная в 80-х на С компилится на ура - вы можете похвастаться тем же?
А на вопрос почему написанное под gcc не пашет под MSVC или наоборот - у вас две дежурных отмазки - неправильно написана или UB,
Статический чекер может даже не делать полный парсинг, если вам это неизвестно.
А оптимизация и проверка ошибок задачи принципиально разные,
Да только базовые требования виляли круче чем линия партии.
От Вирта до Торвальдса куча людей живет на деревьях. Причем как показывают индексы - больше чем под деревьями.
Да и критерий здесь не простота и удобство - а функциональность.
Но только в С++ оно сократилось до постоянно употребляемой аббревиатуры...
Которая кстати объединяет еще одно специфичное понятие - unspecified behavior.
Многие плюсовики путаются.![]()
The future is already here - it is just unevenly distributed. (c) W. Gibson
что же такое "монотридный сервер". гугление бесполезно.
что то вроде monothread'ный ? poll шоле ?
это не то, что было написано в формуле
17 шагов это 17 шагов, возведение в степень там никаким боком, считай лучшеПри ограничениях типа 17 уровней - наверное до O(n^17), хз надо посчитать
в с она тоже нелинейнаяВ любом случае нелинейная.
если книги не устраивают - займись изучением стл, там ооп отсутствуетО том, что читая Бхаватгиту можно постичь истину - написано ненамного меньше.
это чушьУбейте поток который висит в синхронном вызове БД внутри чужой либы.
Реализуемы кстати вполне
если мы прибиваем неизвестно что, то нет никаких гарантий, что при этом не будет течь память или что похуже
я, вроде, уже говорил, что если ты не знаешь, как что-то реализовать, то это не значит, что оно не реализуемо, это всего лишь говорит о том, что ты недостаточно образован(не на С++) и иногда единственный способ прибить трид,
естественно, стандарт с++ ничего не говорит о реализации pthread_cancel, т.к. не имеет к ней никакого отношения, однако в качественных реалиациях(например, в той, которой пользуюсь я) pthread_cancel раскручивает стек
надо просто знать, что чужой код thread- и exception-safeЕсли знать все переопределенные операторы и конструкторы включая вызовы чужого кода - да.
однако, без этих знаний им в любом случае нельзя пользоваться
который есть то же самое, только вырубленное своим собственным топоромЯ нигде не говорил о userlevel threads, я говорил о монотридном сервере.
естественно, все на потокахПоинтересуйтесь как пишутся c10k сервера или реалтайм.
говорит, только оно не работаетЕсли слово FSM ни о чем не говорит.
во первых, люди ими не думают
во вторых, промежуточное стостояние надо где-то хранить, т.е. приходится придумывать свой стек вместо того, который поддерживается процессором
в третьих , они не масштабируются и при этом требуют переписывания всего вокруг себя в fsm
есть яркие примеры того, как одна и таже функциональность реализована автоматами и по уму(т.е. потоками) и четко прослеживается, что автоматы работают не всегда, а когда работают, то медленнее
либо не повезло с реализацией потоков, либо не осилилЯ с массивными мультитридами не работаю уже лет 5 как минимум.
Ибо знаю к чему это ведет на нагруженных системах.
конечноНеправда ваша.
Я что теперь могу void* не приводить к типу в С++?![]()
как бы память выделялась, если бы не мог ?
язык там развивается не постоянно, а изданием стандартов, при этом сохраняется обратная совместимость. точно так же, как и сПотому что по умолчанию предполагается стабильность и простота языка с навороченными и развивающимися библиотеками,
В С++ этот принцип нарушен и очень сильно, Там постоянно развивается язык.
в частности, пока был выпущен _один_ стандарт, т.е. он вообще еще не менялся ни разу
что "это" ? что стандарт не менялся или что ты об этом не знаешь ?Если вы считаете, что это хорошо и правильно - вы нерпавы.
не знаю, что они тогда говорили, но щас ядра выходят раз в 3 месяца, а они все еще выделяютВ свое время IBM начала выделять бабло на Линукс при условии, что новая версия ядра будет появляться не чаще раза в два года.
собственно, выбор у них не богатый
все, что написано в соответствии со стандартом, компилится до сих порЕсли вы не понимаете почему это надо - то это не ко мне.
Посчитайте человеко-часы затраченные на переобучение и переписывание программ по новому стандарту и перевдите их в человеко-жизни - Освенцим получится.
Snacc ASN library написанная в 80-х на С компилится на ура - вы можете похвастаться тем же?
ой, не надо про мелкомягких, они стали к стандарту приближаться только в последние годыА на вопрос почему написанное под gcc не пашет под MSVC
это из серии ie-only сайтов
он может даже и не чекать ничего, только толку в этом малоСтатический чекер может даже не делать полный парсинг, если вам это неизвестно.
это только если языком чесатьА оптимизация и проверка ошибок задачи принципиально разные,
а если реализовывать, то близко связанные
до такой степени, что у gcc некоторые ворнинги без -O не работали совсем до 4.4, а в 4.4 работают но не лучшим образом
только в фантазиях непосвященныхДа только базовые требования виляли круче чем линия партии.
в реальности они не менялись
число ортодоксов неуклонно падаетОт Вирта до Торвальдса куча людей живет на деревьях. Причем как показывают индексы - больше чем под деревьями.
не надо забывать, что у с большая фора
деревья с повышенной функциональностью ?Да и критерий здесь не простота и удобство - а функциональность.
которое тоже унаследовано из сНо только в С++ оно сократилось до постоянно употребляемой аббревиатуры...
Которая кстати объединяет еще одно специфичное понятие - unspecified behavior.
Многие плюсовики путаются.![]()
будем обсуждать пользу аббревиатур или соотношение путающихся ?
pal, та не парься.
некоторые еще, бывает, имеют аллергию на тополиный пух, некоторые на домашнюю пыль. такова жизнь.
Велик и могуч русский язык, а пользоваться некому
ORLY?
Умолкаю перед гуру : -)
примерчик дашь?
Образуй плз, человека имевшего в 1999-м второе место в Одессе по С++ по Brainbench. : -)
Пользуйся на здоровье.
Вот тебюе примерчик использования.
http://sources.redhat.com/ml/glibc-bugs/2007-03/msg00006.html
Что характерно в С работает нормально. : -)
ORLY? : -)
Страшно далеки они от народа... (c)
Как написать - так и работает
За всех людей не расписывайтесь. кое-кто думает и пишет
Промежуточное состояние отлично храниться где ему надо, с longjmp вообще все чистенько происходит и куча проблем уходит сразу.
И еще такой код умеет то, что мультипоток не сможет в принципе без очень большого геммороя. Рассчитанные тайминги в каждом участке кода. Что для RT-систем обслуживающих сотни тысяч соединений немаловажно. Плюс детерминированный код, который можно гарантированно оттестить (в отличие от мультипотока). Плюс отсутствие затрат на лишние переключения в мультитриде. Плюс жесткая привязка к конкретному ядру/процессору.
Масштабируемость в пределах мультиядра или мултипроца решается кластеризацией сервера - при этом можно расти сразу на кластерные системы. В отличие от мультитрида, за пределы компа не масштабируемого никак.
Хотя мультитрид удобней, да. : -)
Но если требования функциональности давят удобство - удобство идет лесом.
А если находятся программисты которые привыкли так писать (удобно) - то они идут лесом вместе с их концепциями.
Автоматы не могут работать не всегда или медленнее. : -)
Построение автомата - формальный процесс. Без переключения контекста автомат всегда будет быстрее (на одно ядро разумеется).
Хотя если писать его руками, без автоматической генерации кода зато с паттернами.... Жуть.
Вы наверное так писали? Бедняга...
Естественно речь шла о переходе 2.2-2.4-2.6
Тогда огласите пожалуйста соотношение программ написанных по стандарту и не по стандарту.
А то что-то большой процент программ написанных не по стандарту попадается. Значительно больше чем на С
Огласите список кошерных компиляторов (если таковые существуют). И количество некошерных.
И объясните почему тогда программы для gcc 3 не всегда компилятся под gcc 4.
Его тоже мелкомягкие писали?
Если реализовывать то и IDE для оптимизации может быть полезна. Но это не значит что ее надо включать в компилятор.
Высокая связность системы - абсолютное зло и признак плохого дизайна. Связность должна быть минимальна при заданной функциональности. См. задачу о разбиении графа.
Но людям, которые для развития языка (т.е. синтаксиса) потребовалось переписывать линкер это похоже непонятно.
Приводили уже на форуме ссылку - ни фига не падает.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Аббревиатуры возникают не просто так. Это очень четкий симптом. Как план ГОЭЛРО или ВЧК.![]()
The future is already here - it is just unevenly distributed. (c) W. Gibson
Ну они же развиваются. с внедрением C99 тоже не всё гладко. третий гцц забивает на inline. структуры там.И объясните почему тогда программы для gcc 3 не всегда компилятся под gcc 4.
ну скажем так нет для винды годной IDE для сей. кодеблокс говно. нетбинсом пользоватся можно. но оно хочет свои мэйкфайлы и не всегда правильные.IDE ... Но это не значит что ее надо включать в компилятор.
Задача подсветки синтаксиса и разрешения переменных это почти компиляция. профайлера нет. трассировщик - ловля вывода из gdb какой то костыль.
трэды называть тридами это как то совсем никак. "монотридный" блин. вы же не химик... polling это кличут простые смертные. неблокирующий йо.
Мне кажется, что насчет "большинство софта" - это надо говорить очень осторожно. Если говорить о всяком софте который написан еще во времена царя гороха, то да там конечно почти везде Си, но новый софт как правило написан именно на Си++. Кеды как мне помнится на Си++ написаны... Гномеры сейчас полюбили libgtk-mm и тоже стали писать на Си++ (хотя мне кажется они скора все на mono перепишут).
Как язык для системного уровня Си++ имхо хуже Си. Иначе оно превращается в Си с элементами Си++. Ну и Си компиляторов всетаки под больше платформ есть.
В том что Си проще... ну учитвая что там без макросов никак, а они превращают код в такой ахтунг... вобщем потом это дело банан отладишь...
Но это все - всего лишь мое скромное мнение.
=)
Я говорил об совместимости снизу вверх. понятно что С99 или gnu99 код может не глако компилиться под gcc3.
Но здесь обратная ситуация - кошерный код под gcc3 не компилиться под gcc4.
Ну, поллинг тоже разный бывает. Между epoll и select есть большая разница.
(почемуто вспомнился химик Лайнус Поллинг)
Сорри за непривычную терминологию.
Я работаю на анализе и внедрении новых алгоритмов. Таких где статья выходит 2 года назад а код (академический) надо адаптировать сейчас.
С++ кода очень мало. В основном - С, иногда даже фортран встречается (там где надо, в математике например). Более того там где все-таки С++ - работает жутко. Если вообще работает. Исключения крайне редки (вот libsvm пользую - написан на С++ но интерфейсы - С. И с освобождением памяти проблемы есть).
Есть на джаве, но больше как proof of concepts либо как оболочки для интеграции других алгоритмов уже существующих на джаве (типа Weka).
Для large-scale неприменимо в 99%.
Парадокс кстати в том, что взглянув внутрь академического С-кода можно упасть в обморок.
Например http://www.rulequest.com/Personal/c4.5r8.tar.gz
Но посему-то, несмотря на огромное количество ворнингов при компиляции (включая например присваивание указателей int-ам) , на жуткий стиль - это отлично работает, в тч и на large-scale и на непривычных платформах.
С С++ - не так.
Последний пример - OpenDT library с отличным ООП дизайном у меня на 10000 примерах висела 40 часов пока я ее не убил. C-шный древний c4.5 250 миллионов координат просчитал за час и не пукнул.
Много таких примеров накопилось. Включая личную проверку STxxL на работоспособность.
С предсказуемым результатом.
Плюс количество программистов пришедших с ВУЗа и с фанатизмом в глазах доказывающих мне, что самый лучший способ умножить матрицы - использовать foreach - несколько напрягает.
Выбивать фанатизм конкретными примерами приходится долго.
C очень плохо ложиться на GUI, в отличие от С++
Но имхо это проблема хренового дизайна GUI.
При нормальном дизайне большинство проблем ушло бы.
Хотя это уже имхо.
Вообще что думают Unix-way guys про С++ хорошо видно на этом классическом треде
http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57815
Я с мнением Торвальдса (и особенно с мнением Miles Bader) полностью согласен.
Так что получается, что это не только мое личное мнение, многократно высказываемое в коммьюнити до того как Торвальдса достали фанатичные плюсовики.![]()
The future is already here - it is just unevenly distributed. (c) W. Gibson
код шикарен. даже конкретные примеры в двух случайных файлах..
ForEach(i, Xp, Lp - 1)
Verbosity(3) printf("\n");
if ( *Option++ != '-' ) return '?';
Вот-вот. Там еще много таких моментов, сам фигел когда код читал.
Но при этом, в отличие от С++ клонов - работает на ура.
А правильно написанные C++ программы - падают.
Или вообще не компилятся.
Академический код - отдельная тема...
Хотя конечно бывают варианты разные.
C4.5 - показательный пример, написанный кстати автором метода и алгоритмов и никак не предназначенный для code-sharing между группами разработчиков. Т.е. при таком подходе все требования к стилю и все правила идут лесом - главное чтоб работало.
Что и наблюдаем.
При этом одна из лучших open-source реализаций DecisionTree от автора метода.
Так что не все то золото, что блестит.
The future is already here - it is just unevenly distributed. (c) W. Gibson
вы интересными вещами занимаетесь...
никаким количеством смайлов ты ее линейной не сделаешь
https://fedoraproject.org/get-prereleaseпримерчик дашь?
о твоей умности говорит то, что ты тут генеришь, а результаты теста говорят только о том, что там был один результат умнее из одессы. может, их там всего два было? моего там нетОбразуй плз, человека имевшего в 1999-м второе место в Одессе по С++ по Brainbench. : -)
оно везде работает нормально (что действительно характерно)Пользуйся на здоровье.
Вот тебюе примерчик использования.
http://sources.redhat.com/ml/glibc-bugs/2007-03/msg00006.html
Что характерно в С работает нормально. : -)
это вообще был багрепорт
причем, без подтверждения и даже без исправления
может, у гентухистов были проблемы в --disable-libunwind-exceptions, а может в днк
народ это в зеркале ?ORLY? : -)
Страшно далеки они от народа... (c)
дык, в том то и проблема, что написать по силам только в пределах песочницыКак написать - так и работает
на этой планете люди думают не автоматамиЗа всех людей не расписывайтесь. кое-кто думает и пишет
конечно, его можно хранить, и я даже написАл, как, но умные люди предпочитают для этого использовать локальные переменные, ибо удобнееПромежуточное состояние отлично храниться где ему надо,
если много раз повторить одну и ту же чушь, она не перестанет быть чушьюс longjmp вообще все чистенько происходит и куча проблем уходит сразу.
чистенько все будет только, если или совсем не мусорить, или все подчищать
вариант "совсем не выделять ресурсов" не рассматриваем, так что остается только подчищать
кто не в состоянии использовать для этой цели деструкторы, использует явные проверки
и при лонгджампах тоже придется придется подчищать каким-то образом
и это придется делать и в с и в с++
напрашивается вопрос- зачем делать руками то, что компилятор сделает лучше ?
это все пустая болтовня, т.к. к ненаписанной системе не применимо, а ничего сложного на автоматах не написаноИ еще такой код умеет то, что мультипоток не сможет в принципе без очень большого геммороя. Рассчитанные тайминги в каждом участке кода. Что для RT-систем обслуживающих сотни тысяч соединений немаловажно. Плюс детерминированный код, который можно гарантированно оттестить (в отличие от мультипотока).
лишних переключений можно не делать, а можно делать и в автоматахПлюс отсутствие затрат на лишние переключения в мультитриде.
и потоки прекрасно привязываются, и даже к разным ядрамПлюс жесткая привязка к конкретному ядру/процессору.
не надо выдавать желаемое за действительноеМасштабируемость в пределах мультиядра или мултипроца решается кластеризацией сервера - при этом можно расти сразу на кластерные системы.
автоматы за пределы ядра вообще никак не масштабируются, все, что можно сделать - несколько автоматов в разных потоках или процессах, которые есть потоки с разными адресными пространствами(что хуже)
опять бредВ отличие от мультитрида, за пределы компа не масштабируемого никак.
те же потоки, только общаются через сокеты, а не через разделяемую память
где такую траву берут ?Хотя мультитрид удобней, да. : -)
Но если требования функциональности давят удобство - удобство идет лесом.
А если находятся программисты которые привыкли так писать (удобно) - то они идут лесом вместе с их концепциями.
я бы еще добавил "воображаемый"Автоматы не могут работать не всегда или медленнее. : -)
Построение автомата - формальный процесс.
нету крупных программ, целиком реализованных в виде автомата
у него тоже есть контекст, который тоже нужно переключатьБез переключения контекста автомат всегда будет быстрее
собственно, тот контекст, о котором говоришь ты, переключает автомат по имени процессор
т.е. в прошлом тысячелетии ?(на одно ядро разумеется).
бессмысленное требование, т.к. они и так не выходили чаще, чем раз в 2 годаЕстественно речь шла о переходе 2.2-2.4-2.6
а теперь это заменено прогрессией 2.6.n->2.6.n+1 раз в 3 месяца
я не гуглТогда огласите пожалуйста соотношение программ написанных по стандарту и не по стандарту.![]()
в с стандарт слегка на 10 лет старшеА то что-то большой процент программ написанных не по стандарту попадается. Значительно больше чем на С
за списком в гугл. лично у меня выбор не богатыйОгласите список кошерных компиляторов (если таковые существуют). И количество некошерных.
потому что они для gcc3, а не для с++98И объясните почему тогда программы для gcc 3 не всегда компилятся под gcc 4.![]()
правильный вопрос - почему gcc3 их компилировал
ответ: потому что в то время они были больше заняты решением политических проблем, собственно их и до сих пор не перерешали
ну, в 2001 году у мелкомягких было только непотребство в виде msvc6Его тоже мелкомягкие писали?
наоборот, в нее надо включать компилятор. что, собственно, и делают. сюрприз ?Если реализовывать то и IDE для оптимизации может быть полезна. Но это не значит что ее надо включать в компилятор.
ты просто слова прочел, а смысла не понялВысокая связность системы - абсолютное зло и признак плохого дизайна. Связность должна быть минимальна при заданной функциональности. См. задачу о разбиении графа.
к связности это не имеет никакого отношения
людям, считающим язык синтаксисом, пора возвращаться в детский садНо людям, которые для развития языка (т.е. синтаксиса)
не переписывать, а дописыватьпотребовалось переписывать линкер это похоже непонятно.
что с ними всю жизнь и происходило и без с++
было бы странно, если бы сишные линкеры имели поддержку для с++
какое это имеет отношение к числу ортодоксов ?Приводили уже на форуме ссылку - ни фига не падает.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
вообще, изучение подобных рейтингов - удел слабых
посылка сообщений и разделяемая память это наверно очень рядом...и переписывать там только одну строчку наверное.те же потоки, только общаются через сокеты, а не через разделяемую память
А те кто пишет на эрланге так не думают.ничего сложного на автоматах не написано
Десятое правило Гринспена подтверждает...
Отвлекёмся от темы. что господа думают о D ? Мне всёже захотелось ощутить вкус написания программ которые пишут программы в которых используются высокоуровневые абстракции в контексте "макроассемблера"(если так можно назвать си).
Последний раз редактировалось blackSun; 02.05.2009 в 20:41.
мне кажется там настолько критическая концентрация плюсофилской фанатичности, что немножко догоняет лисп и хаскель. Они надумали compile-time execution. а если функция чистая то темболее. может даже надумают тайпклассы, чтобы сразу в compile-time оставлять только нужную логику. и лисповые макросы им покоя не дают. еще можно сделать partial compile-time application, или вкомпиливание результатов вычислений в зависимости от диапозона аргумента(тут хороши были бы тайпклассы) - просто такой массив на 65к элементов, если параметр - int
Социальные закладки