Проблема этой статьи в том, что в ней в одну кучу свалены справедливые выпады в сторону далеко не идеального языка и откровенно страные умозаключения.
Разумеется, у С++ есть огромное количество кривостей, неудобств и проблем, но ведь наши недостатки являются продолжениями наших достоинств? Как сказал кто-то, довольно трудно иметь красивую и скромную жену одновременно.
Тот же Страуструп по поводу простоты Джавы говорил: "подождём хотя бы несколько лет и посмотрим, останется ли Джава такой же простой".
Как мы видим, Сишарп сильно расширился к третьей версии. Мой когда-то любимый язык Бейсик на ZX Spectrum был простым, по сравнению с ним QuickBasic показался мне жутким монстром в своё время. Простота любого языка обязательно вылезает боком в другом месте. На эту тему высказывался и Спольски: http://www.joelonsoftware.com/articles/f… Не верю я в бесплатную простоту.
В качестве примера явно предвзятого суждения можно указать на оценку автором библиотеки STL. Только начиная её изучать, я ради интереса написал программу, подсчитывающую частоту встречаемости разных слов во входном тексте. Результаты нужно было печатать с использованием различных критериев сортировки: по алфавиту, по частоте.
Тогда мне показалось (и сейчас кажется), что делается это в STL довольно просто и эффективно. Ничуть не сложнее, чем в той же Джаве.
А всякие разговоры на тему reference semantics vs. value semantics и т.п. это чистой воды вкусовщина. В Джаве новички тоже пишут string a, b; ... if(a == b) вместо a.equals(b). И что теперь?..
> конечно же, у вас стоит максимальный warning level и
> включена опция treat warnings as errors?)
Ну зачем же меня так прилюдно стыдить? :) Каюсь, иногда дьявол сбивает с пути истинного!
не думаю, что наличие такого тайпдефа ударит по производительности. Это ведь всё проверки времени компиляции, а не времени выполнения.
Если на то пошло, зачем тогда вообще тайпдеф? Пишите int и не заморачивайтесь.
Согласен по поводу тайпдефа. Но ведь совершенно ясно, что семантику старого не изменят (ради совместимости), а новое ключевое слово вводить поленятся... Я вот не знаю, есть ли в Бусте такой "честный" тайпдеф на шаблонах? Ведь по сути то, что Вы предлагаете, можно сделать иным способом через пустой параметризированный класс?
Ну думайте так и дальше :) В действительности, практика показывает, что чем лучше люди живут, тем слабее они размножаются.
Пример Европы и Африки вполне показателен.
А большинство задуманного на самом деле не сбывается. Эти картинки так, фигулька. А чего думали ещё? Думали, что лекарство от рака изобретут. Что компьютер будет интеллектуальным собеседником. Ну и многое такое другое... А уж что в социальном плане никакие проблемы не решены это ли не факт? Что во времена, скажем, Диккенса, что сейчас...
Когда я учился в университете, нам показывали concurrent pascal.
Там можно было написать for ... do, а можно было for ... pardo
Во втором случае все шаги цикла запускались параллельно.
Естественно, программист должен отслеживать легальность такой операции.
Строго говоря, параллелизм в играх давно есть. Например, выводя данные в конвейер OpenGL, вы отдаете их на откуп графическому процессору, а дальше он может спокойно работать параллельно с основным.
Более яркий пример множество процессоров приставки PS3. Их, конечно, можно не использовать, но обычно все-таки используют :)
Кто-то говорил, что те же люди, которые мечтают жить двести лет, не знают, как убить вечер выходного. У большинства нынешних людей явно больше времени, чем им требуется.
Основная проблема в том, что никто не будет этим заниматься раскраской.
Я видел гораздо более развитые идеи, особенно в сфере электронных учебников.
Например, предлагалось так размечать текст, чтобы отделять знания различных уровней сложности друг от друга. (Предполагалось, что учебник выводится на экран специальным вьюером, но по сути тот же xml). Также предполагалось сделать так, чтобы одни задания были доступны после выполнения других заданий. Даже была мысль вносить разные элементы описаний в зависимости от типа восприятия человека (визуал, аудиал, кинестетик). Всё это на демках выглядит прикольно и показывает дорогу в светлое будущее.
Но ни один нормальный автор учебника не станет заниматься всей этой разметкой. Сложно. По своему опыту могу сказать, что даже такая банальная разметка как алфавитный указатель на практике оказывается не столь уж простой. Даже указатель требует внимания и усидчивости. А развитие идеи разметки (по типу той, что я описал) вообще приводит к тому, что книга будет описываться примерно как сценарий компьютерного квеста. Что где лежит, и что тебе дадут если принести что-то другое... Совершенно иного масштаба работа.
Например, если у Вас используется на одной странице два языка, ни один из которых не английский. Попробуйте без уникода сочинить страничку, где приводятся примеры перевода, скажем, чешских текстов на русский язык. Если даже это можно (в чём сомневаюсь), три языка без уникода уж точно не потянуть.
Я обсуждал вот какую проблему: в самом верхнем скриншоте темы автор диалогового окна пишет "yes/no/cancel" (в тексте подсказки). Этим он неявно подразумевает наличие у пользователя АНГЛИЙСКОЙ операционки. Если операционка на другом языке, то скорее всего, и кнопки будут локалзованы ("да/нет/отмена"). Таким образом, подсказка окажется обманкой, вводящей человека в заблуждение.
Если не ошибаюсь, это надо хорошо постараться. Обычный вызов MessageBox() или аналога в любом другом языке (Дельфи или что угодно) переадресует к WinAPI, а далее показывается стандартный диалог.
Разумеется, можно наваять свой собственный диалог, но кому это нужно?..
Вот типичный пример того, что я часто наблюдаю у себя:
Разумеется, у С++ есть огромное количество кривостей, неудобств и проблем, но ведь наши недостатки являются продолжениями наших достоинств? Как сказал кто-то, довольно трудно иметь красивую и скромную жену одновременно.
Тот же Страуструп по поводу простоты Джавы говорил: "подождём хотя бы несколько лет и посмотрим, останется ли Джава такой же простой".
Как мы видим, Сишарп сильно расширился к третьей версии. Мой когда-то любимый язык Бейсик на ZX Spectrum был простым, по сравнению с ним QuickBasic показался мне жутким монстром в своё время. Простота любого языка обязательно вылезает боком в другом месте. На эту тему высказывался и Спольски: http://www.joelonsoftware.com/articles/f… Не верю я в бесплатную простоту.
В качестве примера явно предвзятого суждения можно указать на оценку автором библиотеки STL. Только начиная её изучать, я ради интереса написал программу, подсчитывающую частоту встречаемости разных слов во входном тексте. Результаты нужно было печатать с использованием различных критериев сортировки: по алфавиту, по частоте.
Тогда мне показалось (и сейчас кажется), что делается это в STL довольно просто и эффективно. Ничуть не сложнее, чем в той же Джаве.
А всякие разговоры на тему reference semantics vs. value semantics и т.п. это чистой воды вкусовщина. В Джаве новички тоже пишут string a, b; ... if(a == b) вместо a.equals(b). И что теперь?..
> включена опция treat warnings as errors?)
Ну зачем же меня так прилюдно стыдить? :) Каюсь, иногда дьявол сбивает с пути истинного!
(с другой стороны, какая разница 0x или boost есть буст, и радуемся... :)
Если на то пошло, зачем тогда вообще тайпдеф? Пишите int и не заморачивайтесь.
Пример Европы и Африки вполне показателен.
А большинство задуманного на самом деле не сбывается. Эти картинки так, фигулька. А чего думали ещё? Думали, что лекарство от рака изобретут. Что компьютер будет интеллектуальным собеседником. Ну и многое такое другое... А уж что в социальном плане никакие проблемы не решены это ли не факт? Что во времена, скажем, Диккенса, что сейчас...
Там можно было написать for ... do, а можно было for ... pardo
Во втором случае все шаги цикла запускались параллельно.
Естественно, программист должен отслеживать легальность такой операции.
Более яркий пример множество процессоров приставки PS3. Их, конечно, можно не использовать, но обычно все-таки используют :)
А в некоторых фирмах запрещают ходить на artlebedev.ru тоже отвлекает от работы ;)
Я видел гораздо более развитые идеи, особенно в сфере электронных учебников.
Например, предлагалось так размечать текст, чтобы отделять знания различных уровней сложности друг от друга. (Предполагалось, что учебник выводится на экран специальным вьюером, но по сути тот же xml). Также предполагалось сделать так, чтобы одни задания были доступны после выполнения других заданий. Даже была мысль вносить разные элементы описаний в зависимости от типа восприятия человека (визуал, аудиал, кинестетик). Всё это на демках выглядит прикольно и показывает дорогу в светлое будущее.
Но ни один нормальный автор учебника не станет заниматься всей этой разметкой. Сложно. По своему опыту могу сказать, что даже такая банальная разметка как алфавитный указатель на практике оказывается не столь уж простой. Даже указатель требует внимания и усидчивости. А развитие идеи разметки (по типу той, что я описал) вообще приводит к тому, что книга будет описываться примерно как сценарий компьютерного квеста. Что где лежит, и что тебе дадут если принести что-то другое... Совершенно иного масштаба работа.
если внесли Сафари, почему нет IE? Сафари "более" бесплатен?
Разумеется, можно наваять свой собственный диалог, но кому это нужно?..
Вот типичный пример того, что я часто наблюдаю у себя: