Мне нравится подход языка Nemerle. Там есть «макросы» — специальные функции, начинающиеся с ключевого слова «macro». По сути это функции, выполняющиеся во время компиляции. В них можно обычным императивным способом выполнять код, который имеет доступ к API компилятора. Этим функциям можно передать объекты кода в виде AST-деревьев. С одной стороны, никаких строк — с другой стороны, никакой шаблонной магии.
А что вы имеете в виду под «разделение типов и значений»? Я наверное не знаком с зависимыми типами, интересно что это такое.
И опять магия и трюки. В языке D конечно учтены многие ошибки дизайна C++, но метапрограммирование все так-же натянуто — впечатление, что его прикручивали уже после разработки языка.
А мне нравится Consolas (он правда «несвободный»; шрифт Inconsolata на него очень похож — такое чувство что буквы просто слегка увеличили). И еще Terminus, но не для программирования, а в панелях Total Commander. Желто-зеленым цветом на темном фоне смотрится особенно по-хакерски:)
Компилятор С++ может быть и бесплатный (не в курсе как там у MS делятся части одного продукта на платные и бесплатные), но может подскажете тогда ссылку на инсталлятор компилятора на сайте MS, чтобы он после инсталляции интегрировался в установленную Студию (начиная с 2010 формально возможно подключение других компиляторов) и все заработало. Не «CTP», а именно финальный релиз, тот который поставляется например с 2013 студией.
Visual Studio Shell это несколько не то, это пустая IDE которую можно использовать для каких-то своих целей, например некоторые разработчики языков программирования и альтернативных компиляторов ее используют.
Что касается Roslyn то это .NET, а мне нужен С++.
А я все жду, когда они сделают Студию отдельно а компилятор отдельно. Чтобы можно было к среде vs2010 прикручивать новейшие компиляторы и при этом gui не особо тормозила.
Отсутствие «красивостей» — ИМХО достоинство, и еще какое. Стандартный (или как его назвал автор «олдскульный») интерфейс рулит, именно потому что он стандартный, и не нужно каждый раз адаптироваться к новому интерфейсу для каждой очередной программы.
Так что для меня KeePass однозначно на первом месте (им и пользуюсь), остальные вообще не впечатлили.
Красота для настоящего программиста это тогда, когда эти символы есть на любой клавиатуре мира:) Чтобы можно было собственноручно нажать клавишу и увидеть, как символ появлятся в редакторе…
А так… я даже не уверен что они в основных моноширинных шрифтах присутствуют.
«decorator(int->string f) int ->string» читается еще привычнее (для С/С++/C#/Java программистов конечно же). Но раз теперь пошла мода писать имя переменной перед ее типом, то да, стрелочки и двоеточия. Как по мне, так они все лишние, однозначность синтаксиса без них не пострадает при любом варианте.
Никогда не видел смысла в юникодных идентификаторах в языках программирования. Попадутся вот вам исходники из Китая, что будете делать? Лучше бы уж переносимый набор символов POSIX расширили до 128, назначив на неиспользуемые коды до 0x20 какие-нибудь полезные юникодовские символы типа стрелок и дополнительных скобок, чтобы не мучать парсеры угловыми скобками, которые знаки «больше» и «меньше»:)
Обычный си-подобный синтаксис с традиционными уже улучшениями и корректировками, облегчающими парсинг (типа var/let перед объявлением переменных, func перед функциями и т.д.). По сути си-пободный синтаксис — стандарт де-факто, и это хорошо.
При дизайне нового языка программирования какой способ предпочтительнее?
С одной стороны — универсальность, можно любой тип использовать для исключений.
С другой стороны — зачем? (особенно если достаточно просто реализуется наследование). В языке D, насколько я помню, тоже специальный тип исключения, и там это не просто так, в типе есть какие-то поля, используемые при обработке исключений.
А что касается подключения или неподключения библиотек — ну так специальный тип можно сделать и встроенным в язык.
Кстати, интересный вопрос для обсуждения, связанный с исключениями.
В С++ для создания объектов исключений можно использовать любые классы и типы.
В подавляющем большинстве последующих языков (включая C# и Java) для этой цели можно использовать исключительно специальный класс типа throwable и его потомков.
С чем это связано? И как лучше?
Облегчает ли это (введение специального класса для исключений) каким-то образом жизнь компилятору и программе?
Улучшает ли это читаемость программы?
Какие еще преимущества/недостатки у такого подхода?
Хорошая штука.
Кстати, интересно, какие есть подобные устройства — чтобы абсолютно бесшумные (вообще без движущихся частей — диски SSD, без каких-либо вентиляторов) и чтобы x86, т.е. с возможностью поставить обычную винду, обычные драйвера устройств под нее и обычный виндовый софт. Вычислительная мощность не нужна, от периферии по идее нужен только ethernet и usb. Ну и минимальная цена разумеется.
Честно скажу — ФБ почти не пользуюсь, в основном ВК. Аккаунт на ФБ есть, чисто внешне вроде похожи, а внутрь я особо не залезал. Так что про простоту ФБ вполне могу ошибаться:) Но организация ВК меня вполне устраивает, будем считать что именно ее я и имел в виду.
Не понимаю я такого — говорить что работа над целым проектом была ошибкой, вместо того чтобы признавать конкретные ошибки внутри проекта и исправлять их.
Все что нужно — это навести порядок в фичах и интерфейсе. Неужели в Гугле нет ни одного человека, который был бы в состоянии просто на бумаге нарисовать все что у них есть и привести это к единому понятному виду?
Такое чувство будто у них там какой-то разброд и внутренняя конкуренция, когда каждый начальник держится за свой кусочек и крайне неохотно идет на взаимодействие с другими.
А по мне так Г+ слишком сложный. ВК и ФБ интуитивно простые, меню справа (фотки, видео, друзья, новости и т.п.). И все. В Г+, особенно после недоинтеграции с аккаунтами гугла, ютуба и прочих гуглосервисов — куча разнородных страниц настроек, все страницы с соврешенно разным дизайном, непонятно что с чем связано, в общем полнейшая путаница. Должна быть какая-то система и какое-то единообразие, а его нет. Ну и от этого непонятно как совершить простейшие действия — например, поиск друзей по интересам.
А что вы имеете в виду под «разделение типов и значений»? Я наверное не знаком с зависимыми типами, интересно что это такое.
Visual Studio Shell это несколько не то, это пустая IDE которую можно использовать для каких-то своих целей, например некоторые разработчики языков программирования и альтернативных компиляторов ее используют.
Что касается Roslyn то это .NET, а мне нужен С++.
Так что для меня KeePass однозначно на первом месте (им и пользуюсь), остальные вообще не впечатлили.
А так… я даже не уверен что они в основных моноширинных шрифтах присутствуют.
С одной стороны — универсальность, можно любой тип использовать для исключений.
С другой стороны — зачем? (особенно если достаточно просто реализуется наследование). В языке D, насколько я помню, тоже специальный тип исключения, и там это не просто так, в типе есть какие-то поля, используемые при обработке исключений.
А что касается подключения или неподключения библиотек — ну так специальный тип можно сделать и встроенным в язык.
В С++ для создания объектов исключений можно использовать любые классы и типы.
В подавляющем большинстве последующих языков (включая C# и Java) для этой цели можно использовать исключительно специальный класс типа throwable и его потомков.
С чем это связано? И как лучше?
Облегчает ли это (введение специального класса для исключений) каким-то образом жизнь компилятору и программе?
Улучшает ли это читаемость программы?
Какие еще преимущества/недостатки у такого подхода?
Кстати, интересно, какие есть подобные устройства — чтобы абсолютно бесшумные (вообще без движущихся частей — диски SSD, без каких-либо вентиляторов) и чтобы x86, т.е. с возможностью поставить обычную винду, обычные драйвера устройств под нее и обычный виндовый софт. Вычислительная мощность не нужна, от периферии по идее нужен только ethernet и usb. Ну и минимальная цена разумеется.
Все что нужно — это навести порядок в фичах и интерфейсе. Неужели в Гугле нет ни одного человека, который был бы в состоянии просто на бумаге нарисовать все что у них есть и привести это к единому понятному виду?
Такое чувство будто у них там какой-то разброд и внутренняя конкуренция, когда каждый начальник держится за свой кусочек и крайне неохотно идет на взаимодействие с другими.
недоинтеграции с аккаунтами гугла, ютуба и прочих гуглосервисов — куча разнородных страниц настроек, все страницы с соврешенно разным дизайном, непонятно что с чем связано, в общем полнейшая путаница. Должна быть какая-то система и какое-то единообразие, а его нет. Ну и от этого непонятно как совершить простейшие действия — например, поиск друзей по интересам.