Чего вам не хватает в языке программирования и в IDE?

Тема в разделе "WASM.ZEN", создана пользователем xcode, 20 апр 2007.

  1. xcode

    xcode Member

    Публикаций:
    0
    Регистрация:
    8 апр 2007
    Сообщения:
    105
    Нет, это мне нужно для разработки собственного языка программирования:) Хочу собрать побольше хороших идей
     
  2. maxdiver

    maxdiver Max

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    308
    Адрес:
    Саратов
    А, ну это другое дело. А я понял примерно так: "что бы вы хотели изменить в вашем языке программирования или IDE". Тогда, по-видимому, мой пост #7 и несколько следующих оказались немного не в тему :) Но, с другой стороны, за исключением некоторых "недоработок", язык C++ меня полностью устраивает. Пожалуй, можно только, как в Java, добавить спецификации исключений - тогда код точно стал бы намного безопаснее.
     
  3. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    xcode
    Если совсем для нового языка, то идей гораздооооо больше :)
    1) поддержка многопоточности на уровне языка. Как это будет выглядеть не представляю, но эта штука должна упрощать распараллеливание задач, синхронизацию, отладку
    2) если брать за основу Си-подобные языки, то нужно добавить в язык возможности по написанию безопасного кода, исключающего buffer-overrun, stack-overflow, двойное освобождение памяти и так далее. Причем это должно быть сделано не на основе примитивного сборщика мусора со встроенными проверками памяти и границ, а на каких-то более фундаментальных принципах
    3) абсолютная кросс-платформенность. В этом равных Си нет (из компилируемых языков конечно)
    4) какие-то новые механизмы по повторному использованию кода (ООП в этом плане достаточно отстойная вещь)
     
  4. xcode

    xcode Member

    Публикаций:
    0
    Регистрация:
    8 апр 2007
    Сообщения:
    105
    maxdiver все в тему:) особенно ключевое слово auto - это автоматический вывод типов, мощнейшая вещь, и кстати вполне реальная.
    gilg Предлагайте:)
    Я еще смотрю в сторону функционального программирования (ФП). Очень компактные программы, множество возможностей которых нет в императивных языках. Но вот синтаксис сложноват, хочется его сделать более привычным:)
    И еще - я решил, что если что-то получится, это будет обязательно совместимый с С++ язык. Т.е. в проекты можно будет добавлять как файлы на новом языке, так и файлы на С++. Тогда не нужно будет создавать кучу библиотек, а можно будет просто использовать С++-ные.
     
  5. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    C#/.NET?


    еще бы не реальная, Бейсику вон уже сколько лет.. ))
     
  6. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Нее. Компилируемый низкоуровневый быстрый язык, типа (С+=2)

    Add: Еще встроенные стредства для парсинга строк
     
  7. maxdiver

    maxdiver Max

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    308
    Адрес:
    Саратов
    Nouzui
    Да, у меня, если честно, тоже тревога по поводу слова auto. Боюсь, что тогда все забудут, что значит объявлять переменные и будут везде писать auto :dntknw:
    Это ключевое слово пригодилось бы в таких ситуациях:
    Код (Text):
    1. for (map<int,string>::const_iterator i=m.begin()...
    заменить на
    Код (Text):
    1. for (auto i=m.begin()...
    В STL без auto тяжеловато как-то :)
    Но определённые опасения по поводу auto всё равно остаются.
     
  8. maxdiver

    maxdiver Max

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    308
    Адрес:
    Саратов
    gilg
    В стандарте C++ 09 (должен выйти в конце 2008 года) будет (скорее всего ;)
    - стандартная поддержка многопоточности
    - сборщик мусора (опциональный)
    - ключевое слово auto
    - расширение возможностей контейнеров, которое ещё больше упростит замену небезопасных массивов на контейнеры
    - сокращение часто используемых конструкций (например, sort (v) а не sort (v.begin(), v.end())

    А чем ООП плох? И что можно предложить ещё, кроме процедурного и объектно-ориентированного программирования?
     
  9. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    maxdiver
    Звучит неплохо. А описание его можно где-нить посмотреть?
    В ООП по-большому счету интересен только для написания крупных гуёвых приложений (на мой взгляд идеал - борландовская модель VCL); для более низкоуровневых задач он слишком тяжел и неповоротлив. Как можно повторно использовать ООПшный код не понятно - ведь в каждой решаемой задаче свои сущности со своими атрибутами, поведением и т.д.
    Чтобы не переписывать код, думаю, нужно что-то типа интеллектуальной базы готового кода, симбиоз между IntelliSence и Google code search :)
     
  10. maxdiver

    maxdiver Max

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    308
    Адрес:
    Саратов
    Ну вот например:
    http://www.artima.com/cppsource/cpp0x.html
    Это статья Страуструпа "A Brief Look at C++0x".
    На его сайте есть кажется ещё парочка статей по C++0x (пока еще официально не принят 2009 год):
    http://www.research.att.com/~bs
    Комитет по стандартизации C++:
    http://www.open-std.org/jtc1/sc22/wg21/
    C++0x Standard Library wishlist (revision 6):
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2034.htm
    Замечания по C++0x
    http://www.research.att.com/~bs/C++0x_keynote.pdf
     
  11. maxdiver

    maxdiver Max

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    308
    Адрес:
    Саратов
    А вот и рабочая версия Стандарта:
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2009.pdf
    (апрель 2006 года)
    Уже начал изучать. Интересно. Например, такие вещи:
    Код (Text):
    1. auto x = new auto ('a')
    Переменная x будет char* со значением 'a'.
     
  12. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    мешать интерфейсы библиотечных классов с языковыми конструкциями, конечно, плохой стиль, но в идее с оператором foreach все же что-то есть..
     
  13. maxdiver

    maxdiver Max

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    308
    Адрес:
    Саратов
    Nouzui
    Вообще-то в STL есть функция for_each, но её применение, к сожалению, весьма ограничено: ей нужно передавать функтор, т.е. в общем случае нужно создавать новую функцию для обработки каждого элемента.
    А если уж настолько лень написать итераторы, то можно сделать так:
    Код (Text):
    1. #define foreach(container_type,container,loop_iter) \
    2.    for (container_type::iterator loop_iter=container.begin(); loop_iter!=container.end(); ++loop_iter)
    Понятно, что в C++09 у макроса будет на один параметр меньше.
     
  14. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    maxdiver
    я это к тому, что предполагаемый foreach может не требовать указания типа loop_iter
    а что касается auto.. большой беды от него не будет, но запутаться с ним можно
     
  15. St

    St New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2006
    Сообщения:
    72
    Долго думал чегож не хватает в С++. Вроде бы все есть.
    НО!
    1. Виртуальные конструкторы(редкая вещь)
    2. Регулярные выражения в STL.
    3. К макросам- рекурию(извращение, но все же)))
    4. И потоки!!! Чтобы компилятор находил типичные ошибки при работе с потоками в классах(наболевшее)
     
  16. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Я немного опущусь на землю. По памяти всего что мне не хватает, перечислить не могу.
    Есть одна мелочь. Когда я писал на z80 в любом маломальски приличном асме, была директива incbin (inlcudebin), которая позволяла пихать в код двоичный файл, таким какой он есть. А вот когда я пересел на Intel, то там даже в данный момент почти ни одна зараза до такого удобства не додумалась. Все как последние садомазахисты гонят бинарник и текст и затем суют в программу (особенно бесило, когда файл этот часто меняешь). Я понимаю что можно грузить данные сразу из файла или совать в ресурсы, но не всегда.
     
  17. maxdiver

    maxdiver Max

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    308
    Адрес:
    Саратов
    St
    Нельзя ли поподробнее, зачем?
    Не понял, какие потоки? Ввода-вывода?
     
  18. St

    St New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2006
    Сообщения:
    72
    Виртуальный конструктор кажется идиотзмом. НО если возниктнет ситуация когда не знаем какого типа объект, он просто есть. И приходится извращаться с виртуальными функциями.
    Допустим имется класс документ и его производные документГрафический, документПечати, документДинамический/Связанный, документСовмещенный. Все они разного типо и являются наследниками класса документ и хранятся в виде связанного списка указателей на базовай тип. Вскоре если захотим скопировать документГрафический например на печать или модифицировать в отдельном потоке. В итоге я знаю только то что он наследник класса документ. ВСе это решается виртуальными функциями. Мое мнение удобнее если бы С++ поддерживал бы виртуальные конструкторы, решение выглядело бы элегантнее.
    Виртуальный конструктор нужен будет в случае определения типа объекта из контекста.
    Для многопоточных приложений
     
  19. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.090
    Вообще, с++ можно назвать большим другом эксплойтов:), ведь для того, чтобы этого безобразия не было нужно: контроливать размер буфера и данных, кои в него хотят в пихнуть, и чтобы все страницы данных были помечены как NO_EXEC.
     
  20. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Одна из немногих вещей которые не умеет отладчик VS2005 - это контроль за критическими секциями. Т.е. хоробы компилятор следил за тем чтобы на каждую EnterCriticalSection был соотвествующий LeaveCriticalSection и чтобы запуск последнего не терялся в тругих ветках управления (например кто-то сделал return между ними, или сделал goto или после try catch последний не вызвается). В принципе нормальные люди так не промахиваются, но по опыту знаю что когда их слишком много, то одну лажу в программе можно не заметить. Придумать например какие-нибудь атрибуты, которыми помечают две функции как парные. Думаю применений можно найти много, и не только для критических секций......