Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Инициализация массива указателей на функции, возвращающих ссылку на массив указателей на функции принимающие указатель на функцию, принимающую массив указателей на функции, возвращающих указатель на функцию ничего не принимающую и ничего не возвращающую.
по идее компилятор должен самостоятельно выводить возвращаемый лямбдой тип исходя из её return
отдельно надо будет указывать, если компилятор не смог разобраться
...If a lambda-expression does not include a trailing-return-type, it is as if the trailing-return-type denotes the following type:
— if the compound-statement is of the form
{ attribute-specifier-seq-opt return expression; }
the type of the returned expression after lvalue-to-rvalue conversion (4.1), array-to-pointer conversion (4.2), and function-to-pointer conversion (4.3);
— otherwise, void.
т.е. компилятор вправе считать, что лямбда возвращает void, если написано if (foo) return a; else return b; - что приведет к ошибке компиляции
... Дефекейт не спеша подошел к стеллажу и снял с полки толстый старинный том. Окинув книгу взглядом и стряхнув с нее пылинку, Дефекейт аккуратно положил ее на стол. На черной как смоль обложке тома виднелась загадочная надпись ISO/IEC 14882:2011.
Дефекейт бережно открыл книгу, опытным взглядом пробежал по содержанию...
-> auto надо писать обязательно, если хочешь, чтобы вывод типов сработал. По дефолту компилятор считает, что:
[] () { эквивалентна [] () -> void {
также если выражений в лямбде больше чем одно, он опять же вывод типов в крестах пошлет кодописателя на ху
В результате у нас в отделе появились некоторые дейтели, дейтельность которых стоит отправить как нибудь на говнокод, а именно:
они начинают записывать if как "?:" , а выражения через ",".
например как-то так (код не проверял):
auto fac = [](int a) -> auto
{
return (cerr<<"\n fac debug " << a), a<=1 ? 1 : a*fac(a-1);
};
что же этим деятелям неймется?
компиляторы еще не поддерживают новый стандарт - значит не production ready
как они бедные страдали предыдущие 15 лет то, без лямбд
я вот например не собираюсь ловить тонны лулзов, если у заказчика по причине беты компилятора что-нибудь наебнется в новогоднюю ночь, а ты виноват
ну и чисто меркантильная причина - работы на D в москве еще многие годы будет ровно 0 вакансий, а и у с++ последние пару лет явный ренессанс, плюс в упор не вижу что такого киллер-фичного может мне предложить D, чтобы я его терпел и переводил на него свои миллионы строк (и кто мне буст на D подарит?)
>Тихо сам с собою я веду беседу.
Так я надеюсь, что меня умные люди услышат.
>Ну да, как это потом вызывать?
Получается такую лямбду не удастся передать в функцию. То есть фактически не возможна функция высшего порядка, в которую передали лямбду с автовыводом типов. Поэтому я не знаю, на что рассчитывают создатели стандарта. Игрушка какая-то. Не примут наверное опять. Так у крестов и не появится нормальных лямбд.
Инициализация массива указателей на функции, возвращающих ссылку на массив указателей на функции принимающие указатель на функцию, принимающую массив указателей на функции, возвращающих указатель на функцию ничего не принимающую и ничего не возвращающую.
К счастью, ничего даже близкого к этому в реальной жизни практически не встречается (я видел миллионы строк сишного кода). Если очень хочется астрала - тайпдефы и структуры в помощь (можно использовать структуры, содержащие коллбэки с хорошими именами, как в юниксовой vfs, а список обработчиков событий один фиг лучше делать связным списком).
Но в целом - да, с декларацией типа в сишке перемудрили. Мне лично очень нравятся декларации типа в Haskell.
Вот поэтому я и минуснул. О кстати, я уже не один такой.
Человеческий мозг падок на безумные конструкции, можно городить и усложнять косвенность адресации до бесконечности.
В чем провинился С++ осталось непонятным. @Steve_Brown выше выразил ту же мысль чуть иначе.
> Где здесь C++?!
Компилируется, выводит результат, с++ тут на месте.
> В чем провинился С++ осталось непонятным.
Ну не зря же я подсветил фразу зеленым 😉 Steve_Brown понял сарказм в этой фразе и написал прекрасный ответ.
> Вот поэтому я и минуснул.
Все правильно сделал. Оценки для того и сделаны, чтобы сообщить автору интересен ли его пост, и что ему стоит делать\не делать в будущем. Я за честные, объективные оценки, пусть даже это будет "да ты ебанулся что-ли?".
P.S. Писал пост под впечатлением вчерашнего обсуждения сишных деклараций. Если же посмотреть трезвым взглядом - да, в реальном коде на с++ такие конструкции никто не пишет, а если пишут, то все завернуто в тайпдефы...
HQ9 устарел, его используют только бородатые старпёры, не осилившие ООП. Нормальные люди пишут на HQ9+.
Впрочем, в HQ9-коде есть некоторый старомодный шарм, да.
Да ты просто не писал большие проекты. Ты хоть раз видел многомегабайтный код на HQ9? Ты хоть понимаешь, какой это пиздец - каждый раз на HQ9 вручную делать то, что на HQ9+ встроено в язык?
> Hinuq - отслыка на Linux. HNU - GNU. Соответственно HQ9 - сишка.
И зачемнахуя это копетанство? Я вот заметил этот текст только после коммента Тараса, но и так догадался до всех этих "случайных совпадения". И более чем уверен, что любой посетитель говнокодика бы догадался.
Изучай, с мозгом ничего не станет. Почти все, что мы тут рассматриваем о крестах на ГК - это тонкости с которыми рядовой программист столкнется раз в жизни.
В чем преимущество плюсов и их главный недостаток - множество парадигм, правил и фич языка.
Можно писать практически в любом стиле, в т.ч. мешать всё подряд и получать новые уникальные говностили.
Но лучший аргумент "за" в любом споре - на крестах пишет даже Тарас.
Да никто тебя не заставляет, брат ты наш меньший, нам сишникам часто деньги платят, чтоб мы для вас писали скриптовые интрепритаторы, джава машины, и даже те уютненькие айдие в которых вы набираете свой код.
> сишникам часто деньги платят ... (за) скриптовые интрепритаторы
Особенно много бабла отбашляли Гвидо за Python, ещё больше хапнул Мацумото за Ruby а Борн просто стал миллиардером
> уютненькие айдие самая лучшая IDE написана на жабе
Emacs не годиться для серьёзной разработки на Java или Scala (я, конечно, могу в нём писать код, даже в больших проектах, но продуктивность, конечно, гораздо ниже, да и рефакторинг мучительней, Ensime безбожно тормозит, жрёт память и крэшится).
Eclipse убог и ненавидим мной всей душой.
Единственная IDE, которая мне понравилась - Idea. Если отключить неиспользуемые плагины, она потребляет весьма вменяемое количество памяти, и работает достаточно быстро даже на моём далеко не топовом ноуте. fuzzy-search у меня тоже работает очень быстро, качество рефакторинга тоже очень радует. Ребята из JetBrains молодцы. Ещё бы шрифты в линупсе починили... Но там вроде бы жабопроблемы.
Смотря на чем писать...
Последние серьезные попытки что-то делать для Явы в Эмаксе закончились, судя по всему с появлением Эклипса, т.е. судя по дефолтным настройкам в JDEE, они писались в эпоху когда JDK был то ли 1.1, то ли 1.3 но не позже.
Эмакс долгое время морально отставал от других редакторов потому, что распознавание синтаксиса было построено на регулярных выражениях. Не совсем, конечно, но чего-то такого как MPS в Эмаксе не было. Одна из причин - в нем очень просто слепить подсветку синтаксиса пользуяс font-lock + regexp. Но в итоге, она будет иногда неправильной.
В 23-й версии решили интегрировать CEDET, а главное, его модуль Semantic. Это полноценный парсер + лексер, на базе которых можно строить и рефакторинг и кодогенерацию и т.п. В 24-й версии начали подтягиваться остальные, и переписывать под использование Семантика, но это долгий процесс.
Что хорошо работает, на мой неискушенный взгляд - cc-mode. Что интересно, Ява, очевидно, получит новое развитие, т.как в CEDET над этим работают, чего-то добавляют и т.д.
Что, конечно, нехорошо, так это то, что, над CEDETом работают полтора инвалида, в сравнении с тем же Эклипсом / Идеей, которых поддерживают монстры типа IBM, Adobe и т.п.
И тем не менее, даже при таком раскладе, есть много вещей, которые таки получилось сделать лучше 🙂 Я немного знаком с MPS, и как бы могу изнутри сравнить даже... MPS - идеологически недоразвитое существо. Как бы и сколько бы человек над ним не работало, там изначальные задумки херовые. MPS по отношению к Semantic, примерно как XSD по отношению к RELAX NC.
Еще, объективный недостаток, к сожалению, для продуктивной работы нужно хорошо знать как редактор работает, и, практически, программировать редактор - необходимость. Новичку гораздо лучше дать Эклипс, да даже не обязательно новичку, если человеку влом заморачиваться, то Эмакс ему будет только мешать.
Да, и еще интересный момент: жабоскрипт в Эмаксе просто офигеть на каком уровне, даже по сравнению с MSVS / Aptana и т.п.
Проблемы скорее потому, что нужно хорошо знать из чего он состоит, и как использовать так, чтобы проблем не возникало... Т.е. просто еще нет инфраструктуры вокруг, которая сделает все эти настройки вместо пользователей, которые не знают, как это сделать. На это нужно время и люди, которые бы этим занялись. По-сути кроме Эрика над ним никто и не работает. За исключением случайных патчей от других людей, там практически все написано одним человеком.
Я скоро доберусь до того, чтобы разбираться с wisent'ом, тогда и тесты буду делать. Пока я точно не знаю, но в любом случае, на принципиальном уровне, система задумана лучше. Если она сейчас работает медленно, то это дело времени и оптимизаций.
Я не написал ни одной джава машины, а вот в написание скриптовых интерпритаторов в комерческих продуктах иногда встречается - так что ирония тут несовсем в кассу.
P.S. Самая лутшая IDE - наверное только в мечтах существует.
если потребности не было - значит не обломает писать и без подсветки и автоотступов
а раз не обломает - значит не обломает и без мультитабов
отсюда вывод - достаточно блокнота
компилировать - набирать руками каждый раз полные команды со всеми ключами
Лет 7 назад, когда я писал свою первую программу под J2ME (отправлялку халявных смс через Mail Agent), я для начала поставил эклипс. Потыкался, попытался понять как создать проект... Забил и сделал все в блокноте, запуская компиляцию руками, набирая каждый раз полные команды со всеми ключами через батник.
Так что когда проект маленький, а свободного времени много - блокнота достаточно.
Зато возможность безболезненно переименовывать сущности позволяет легко исправлять свои и чужие ошибки...
Я не спорю, что-то в этом есть, сам когда-то был против IDE и писал даже жабокод в vim. А теперь обленился 🙁
Мне тоже нравится ST2, я к нему уже больше полугода присматриваюсь, но переехать решился только недавно (видел как-то в коммитах Линуса к uemacs сообщение "My fingers can not be retrained"). Скорость работы, кроссплатформенность и очень простая и удобная поддержка работы с проектами порадовали.
Пока не знаю, станет ли он моим ежедневным инструментом или нет.
Я сделал себе небольшую фичу. Меню по ctrl+shift+p перебиндил на alt+e ( очень удобно нажимать ) и загнал туда оочень много фич, на которые сложно запомнить горячие клавиши.
И теперь к примеру так решаются все проблемы:
1. Проблема - в текстовом файле все отступы набраны табами, хочу заменить их на пробелы.
2. УНИВЕРСАЛЬНОЕ ДЕЙСТВИЕ - нажимаю alt+e.
3. Набираю to spa(ces).
4. Выполняю команду "Convert Identation To Spaces"
Всё!
Также есть клавиша alt+q - для навигации по файлам, alt+w - для перехода в режим "distraction free".
Всё остальное делаю через универсаьное меню "alt+e".
Также со временем вырабатываются очень эффективные акронимы. Например:
alt+e + "nf" => New File
alt+e + "cf" => Close File
alt+e + "op" => Open Project
alt+e + "rea" => Reindent All
alt+e + "pain" => Package Control: Install Package
Да такую самоделку можно запилить из любого текстового редактора, умеющего запускать скрипты, хоть Notepad++, а вот удобная навигация по дереву исходников, добавление новых ресурсов проект, гибкий поск по листингам и пректу, высокая производительность (шоб интерфейс не лагал когда вес проекта 10-15 гб), простое управление конфигурациями сборки, поддержка многих языков программирования (не на уровне подсветки синтаксиса, а чтоб к примеру могла показать откуда импортирован этот обьект) и чтоб можно было добавлять свои, еще желательна втроенная клиенска сторона систем контроля версия, просмотровщик репозиториев на серваке, ах да оперативное отслеживание всех модификаций, чтоб у прогера не вырабатывался рефлекс при появлении неясных глюков проводить стопроцентный перебилд проекта - потому что редактор гдето забыл какой-то файл модифиированый в обьектник пересобрать. Да и былобы не плохо - функциональный встроенный отладчик, чтоб там кто про него не думал
>шоб интерфейс не лагал когда вес проекта 10-15 гб
Чего?
10 гигабайт исходников? Вы в своём уме?
Если же 9.9 Гб занимают ресурсы, то при правильных настройках лагать не должна ни одна из известных науке IDE.
Больше убило
> ах да оперативное отслеживание всех модификаций, чтоб у прогера не вырабатывался рефлекс при появлении неясных глюков проводить стопроцентный перебилд проекта - потому что редактор гдето забыл какой-то файл модифиированый в обьектник пересобрать
Это в IDE. IDE следят за всеми файлами, а в редакторах проще написать простенький Makefile и это будет уже его забота (есть например tup, который очень умно и быстро собирает проекты с минимальными изменениями). http://gittup.org/tup/
Геймдевовский, вот лежат у вас к примеру файлы-текстуры скажем в Тарга, файлы модели из 3ДС, любой файл особенно текстурный у нас считается маленьким если весит меньше 100 мегабайт, плюс скрипты написаные на перле/питоне/руби, иногда на всем сразу (для нармальной часто требуют пихания сторонних библиотек к себе), которые конвертируют текстуры/модели в форматы понятные игровому движку, пакуют все это добро сперва в зип, но потом могут модифицировать архив, генерят соответствующие ресурсам настройки конфигурационых файлов игры, корректируют .h файлы (добавляют новые енамы и макросы с айдишниками тех или иных ресурсов).
Да хоть 50 гигабайт исходников текстур. Максимум на что это повлияет - на скорость их перегонки в конечный формат, ну и на время генерации ашек, описывающих эти ресурсы. На IDE это никак не скажется.
Поэтому исходники текстур и моделей к исходникам не относим. Вы ведь правите их соответствующими редакторами, а не текстовым редактором с подсветкой, верно?
P.S. Если все это добавлено в проект, то тут уже важнее не размер ресурсов, а их количество - т.к. от количества файлов в проекте IDE действительно может начать тупить.
>>>На IDE это никак не скажется.
Скажется, я неоднократно наблюдал как студия к примеру не могла кореектно отловить модификации ашки из вне и при сборке пересобрать все файлы к которым этот файл подключен. Кроме того я же еще и утверждал что при больших обьемах исходников (ресурсы, ладно отбросим, но ведь 100 мб тоже не мало), производительность IDE падает, если студия просто полагивает то икскод (особенно после 4 версии) еще и начинает безбожно жрать оперативку.
Ну, имхо, тут сказывается большое число ресурсов, которые приходится контролировать IDE, а не их размер.
100Мб исходников, которые нужно парсить + тысячи файлов с ресурсами в одном проекте это серьезная нагрузка на IDE, не спорю. И эти циферки пореальнее чем 10 гиг исходников, поэтому я склонен им верить 😉
Не 10гиг исходников, а вес всего проекта игры (может быть куда больше), а вес солюшена для IDE как части проекта куда меньше, но развеж это значит что мало.
1600 MiB самое большое что я видел. И это просто ГИГАНТСКИЙ проект, и я не думаю, что Psionic работает над одним из таких при этом не зная про больших и маленьких индейцев и заходя на говнокод, чтобы запостить говнореализацию преобразования из BE в LE.
Я видел похожего поциента в реале.
Рассказывал про 8 гиг софта написанного своими руками в том числе своя ОС. Причем тут Денис Попов?
При этом не понимал разницу между javaScript и Java.
А всё что я видел из его софта - какое-то говно на Дельфях и мускуле.
Ну как же. Долг кажого уважающего себя хелоувордщика рассказать всем какой он крутой.
Я например написал (в одиночку и на голом ассемблере):
1. ОС - Ubuntu (500 ГБ исходников)
2. Компилятор - GCC (250 ГБ исходников)
3. Сайт - Google (320 ГБ исходников)
Заметьте, всё на голом ассемблере и без единого jmp'а!
Да-да-да, парень, мы не любим изобретать велосипеды - есть готовые решения, поэтому в солюшен мы пихаем 100500 фраймворков, правда пох что в текущей конфигруции сборки половина тамошних исходников нах-нах не нужна, а еще неиспользуемые исходники предназначенные для компиляции проекта под другие платформы, а еще куча скриптов обеспечивающих генерацию ресурсов/криптование, с которыми тоже нужно работать.
Вот как будет на самом деле:
1. Half Life
2. Half Life 2
3. Half Life 2: Episode 1
4. Half Life 2: Episode 2
5. Half Life 2: Episode 2: Something 1
6. Half Life 2: Episode 2: Something 2
5. Half Life 2: Episode 2: Something 2: Part 1
6. Half Life 2: Episode 2: Something 2: Part 2
> удобная навигация по дереву исходников
+ Есть киллер фича. Fuzzy-files-search и дерево проекта сбоку
> добавление новых ресурсов проект
- Вот это ручками
> гибкий поск по листингам и пректу
+ Поиск в ST2 лучше чем во всех IDE и редакторах вместе взятых
> высокая производительность
+ Открывается за пол секунды, вместо 20-30 (NetBeans)
+ Работал через него с kernel и искал объявление функции (300 мб исходников)
> простое управление конфигурациями сборки
+ Очень простое и очень гибкое.
+ Конфигурируется ST2 вообще очень хорошо.
> поддержка многих языков программирования
+ Подсветка, снипеты, готовые системы сборки есть для +40 языков.
> а чтоб к примеру могла показать откуда импортирован этот обьект
- Нету ни для одного, сторонними плагинами возможно установить для 10-15 популярных языков.
> и чтоб можно было добавлять свои
+ Можно добавить ВСЁ, от снипетов, до систем сборки и снипетов.
> втроенная клиенска сторона систем контроля версия
+ git, svn, hg устанавливаются за 3 клика (из самой проги, не из браузера)
> просмотровщик репозиториев на серваке
- Нету, возможно добавляется плагинцами (в стандартном GUI git'a такое уже есть, нахрен такое в редакторе - не знаю), но такого нет - так что минус
> потому что редактор гдето забыл какой-то файл модифиированый в обьектник пересобрать
ОЛОЛО! Таким редакторы не занимаются. Этим занимается система make.
> функциональный встроенный отладчик
- Нету. Отладчик нужен опять же для обезьян, которые сначала говнокод пишут, а потом головой думать не хотят.
Плюсов 10/14. (из тех критериев, что ты смог придумать, неспецифичных для редакторов)
Помимо этого есть просто куча киллер-фич, для быстрого и удобного редактирования, никакой рутины в наборе кода.
> ОЛОЛО! Таким редакторы не занимаются. Этим занимается система make.
т.е. когда ты модифицируешь файл, но не сохраняешь его, а нажимаешь build - мейк заставит редактор сохранить файл принудительно и соберет его?
ну вот видишь - значит редактор участвует в сборке не только банальным запуском мейка
это нормальное поведение любого редактора-ide, об этом речь и идёт, на то она и ide
IDE отслеживает файлы и затавляет компилятор по-одному их собирать в объектные модули. Неизменённые файлы не собирает (использует старые версии .o-файлов).
Редактор же этим не занимается, а всего-лишь запускает make (или лучше tup), а уж он делает всю работу.
А IDE типа как не умеет сохранять изменённые файлы при сборке?
Проблема автора в том, что часто изменив h-файл (например с шаблоном) IDE не пересобирает другие модули. И в итоге, изменения не вносятся в бинарник.
Таким образом иногда в некоторых IDE нужно делать полную пересборку проекта, даже если была изменена одна строчка.
минусатор
IDE - integrated development environment
среда, позволяющая не выходя из нее редактировать, собирать и отлаживать код (а некоторые - еще и деплоить, собирать инсталляторы и тестировать)
на то и integrated
например, вижуал студия ничего не отслеживает - её дело сохранить все модифицированные файлы перед сборкой и запустить msbuild (или её более древний аналог), который как и make по датам изменения/отсутствию файлов построит дерево зависимостей и пересоберет всё чего не хватает/было промодифицировано
т.е. как конкретно будет происходить процесс сборки - не важно, главное, что она запускается прямо в среде, и в среде же есть результаты компиляции - список ошибок, навигация в конкретное место в файле и т.д.
если этого всего нет - а есть просто недоскрипт, запускающий внешнюю сборку, значит это нихрена не integrated
ну судя по скриншотам, работа выполнена немалая
но умеет ли он в то, что умеет вижуал ассист?
как у него с gdb?
как у него с ведением файлов "проекта" и "солюшена" - писать систему сборки руками? хочу мышкой
просто признай, что ты воруешь результат его труда, прикрываясь тем, что у тебя evaluation затянулся на несколько месяцев
на неограниченное число машин - 50+ licenses: USD $40 / license
> ты воруешь результат его труда
Не буду оправдывать пиратов (хотя именно это я всегда и делаю), но есть только один способ сделать так, чтобы произведение не украли.
Именно - запереть единственный экземпляр в сейфе и построить над ним ещё один форт нокс.
>а вот в написание скриптовых интерпритаторов в комерческих продуктах иногда встречается
Вместо того чтобы взять готовый интерпретатор некоторые умудряются захапать время и деньги у заказчика на изготовления своего.
Тарас, сколько в отступе нужно пробелов, чтобы код стал читаем на крестах?
PS: За корректностью не следил.
По стандарту лямбда без списка захвата кастится до функции.
отдельно надо будет указывать, если компилятор не смог разобраться
5.1.2/4 т.е. компилятор вправе считать, что лямбда возвращает void, если написано if (foo) return a; else return b; - что приведет к ошибке компиляции
... Дефекейт не спеша подошел к стеллажу и снял с полки толстый старинный том. Окинув книгу взглядом и стряхнув с нее пылинку, Дефекейт аккуратно положил ее на стол. На черной как смоль обложке тома виднелась загадочная надпись ISO/IEC 14882:2011.
Дефекейт бережно открыл книгу, опытным взглядом пробежал по содержанию...
на моей копии написано draft Replica, а у страус трупа - Desert Eagle .50
[] () { эквивалентна [] () -> void {
также если выражений в лямбде больше чем одно, он опять же вывод типов в крестах пошлет кодописателя на ху
В результате у нас в отделе появились некоторые дейтели, дейтельность которых стоит отправить как нибудь на говнокод, а именно:
они начинают записывать if как "?:" , а выражения через ",".
например как-то так (код не проверял):
Ну и конечно у этих дейтелей код подлинее.
компиляторы еще не поддерживают новый стандарт - значит не production ready
как они бедные страдали предыдущие 15 лет то, без лямбд
я вот например не собираюсь ловить тонны лулзов, если у заказчика по причине беты компилятора что-нибудь наебнется в новогоднюю ночь, а ты виноват
а кем ты себя видишь, анон, через 5 лет?
успел сменить целое поколение, объявив все старое deprecated
обречен на провал, т.к. гугл по запросу D находит всё что угодно, но не помощь по языку (не сравнить с тегом c++)
все это обжевывалось бесплатными тестерами на гамедев (как они кололись и плакали - см тут http://www.gamedev.ru/flame/forum/?id=164293, http://www.gamedev.ru/flame/forum/?id=167199) - так что пробовать что-то лично и тратить время - вовсе нет желания
ну и чисто меркантильная причина - работы на D в москве еще многие годы будет ровно 0 вакансий, а и у с++ последние пару лет явный ренессанс, плюс в упор не вижу что такого киллер-фичного может мне предложить D, чтобы я его терпел и переводил на него свои миллионы строк (и кто мне буст на D подарит?)
Нет, не догнал, даже через 11 лет. Аналога "mixin" в крестопараше как не было, так и нет.
Хуексин
не возможна.
> std::function<auto(auto)>
Ну да, как это потом вызывать? Все auto должны разрулиться во время компиляции.
Так я надеюсь, что меня умные люди услышат.
>Ну да, как это потом вызывать?
Получается такую лямбду не удастся передать в функцию. То есть фактически не возможна функция высшего порядка, в которую передали лямбду с автовыводом типов. Поэтому я не знаю, на что рассчитывают создатели стандарта. Игрушка какая-то. Не примут наверное опять. Так у крестов и не появится нормальных лямбд.
Так и есть, указывал его только в неочевидных местах.
То есть очевидные места только здесь: 😀
Русский это простой и понятный язык.
Но в целом - да, с декларацией типа в сишке перемудрили. Мне лично очень нравятся декларации типа в Haskell.
в одном месте, где pointer to array (cdecl не понимает reference, а с++decl они не запилили) надо поменять с * на &
ну и задача, кстати, в условии поставлена не полностью - слово "функция" употреблено 4 раза, а слова "принимающая" и "возвращающая" - по три
Судя по обилию скобок это помесь пёрла и лиспа, вперемешку с ключевым словом void, которое обозначает пустоту.
Человеческий мозг падок на безумные конструкции, можно городить и усложнять косвенность адресации до бесконечности.
В чем провинился С++ осталось непонятным.
@Steve_Brown выше выразил ту же мысль чуть иначе.
Компилируется, выводит результат, с++ тут на месте.
> В чем провинился С++ осталось непонятным.
Ну не зря же я подсветил фразу зеленым 😉 Steve_Brown понял сарказм в этой фразе и написал прекрасный ответ.
> Вот поэтому я и минуснул.
Все правильно сделал. Оценки для того и сделаны, чтобы сообщить автору интересен ли его пост, и что ему стоит делать\не делать в будущем. Я за честные, объективные оценки, пусть даже это будет "да ты ебанулся что-ли?".
P.S. Писал пост под впечатлением вчерашнего обсуждения сишных деклараций. Если же посмотреть трезвым взглядом - да, в реальном коде на с++ такие конструкции никто не пишет, а если пишут, то все завернуто в тайпдефы...
Впрочем, в HQ9-коде есть некоторый старомодный шарм, да.
Между прочим ядро Hinuq написано на HQ9, а его исходники занимают 300 мб.
Также на HQ9 написано большинство приложений проекта HNU. А это значит, что HQ9 отлично подходит для больших проектов.
А язык HQ9+ слишком сложен, из-за этого до сих пор не существует компилятора, поддерживающего все возможности, описанные в стандарте.
Hinuq - отслыка на Linux. HNU - GNU. Соответственно HQ9 - сишка.
А ещё неплохой есть Objective-HQ9.
И зачемнахуя это копетанство? Я вот заметил этот текст только после коммента Тараса, но и так догадался до всех этих "случайных совпадения". И более чем уверен, что любой посетитель говнокодика бы догадался.
Стоит быть объективным:
на плюсах написано гораздо больше хорошего софта, чем на дэ, обжективе, дельфях, бейсике и аде вместе взятых.
Можно писать практически в любом стиле, в т.ч. мешать всё подряд и получать новые уникальные говностили.
Но лучший аргумент "за" в любом споре - на крестах пишет даже Тарас.
но что поделать, детская паскалетравма
А ты много жабамашин написал?
> сишникам часто деньги платят ... (за) скриптовые интрепритаторы
Особенно много бабла отбашляли Гвидо за Python, ещё больше хапнул Мацумото за Ruby а Борн просто стал миллиардером
> уютненькие айдие
самая лучшая IDE написана на жабе
если это был наброс про idea, так лично у меня она безбожно тормозила
впрочем, как и эклипс
удалил без сожаления
то ли дело ide, писанные на lisp
Eclipse убог и ненавидим мной всей душой.
Единственная IDE, которая мне понравилась - Idea. Если отключить неиспользуемые плагины, она потребляет весьма вменяемое количество памяти, и работает достаточно быстро даже на моём далеко не топовом ноуте. fuzzy-search у меня тоже работает очень быстро, качество рефакторинга тоже очень радует. Ребята из JetBrains молодцы. Ещё бы шрифты в линупсе починили... Но там вроде бы жабопроблемы.
Последние серьезные попытки что-то делать для Явы в Эмаксе закончились, судя по всему с появлением Эклипса, т.е. судя по дефолтным настройкам в JDEE, они писались в эпоху когда JDK был то ли 1.1, то ли 1.3 но не позже.
Эмакс долгое время морально отставал от других редакторов потому, что распознавание синтаксиса было построено на регулярных выражениях. Не совсем, конечно, но чего-то такого как MPS в Эмаксе не было. Одна из причин - в нем очень просто слепить подсветку синтаксиса пользуяс font-lock + regexp. Но в итоге, она будет иногда неправильной.
В 23-й версии решили интегрировать CEDET, а главное, его модуль Semantic. Это полноценный парсер + лексер, на базе которых можно строить и рефакторинг и кодогенерацию и т.п. В 24-й версии начали подтягиваться остальные, и переписывать под использование Семантика, но это долгий процесс.
Что хорошо работает, на мой неискушенный взгляд - cc-mode. Что интересно, Ява, очевидно, получит новое развитие, т.как в CEDET над этим работают, чего-то добавляют и т.д.
Что, конечно, нехорошо, так это то, что, над CEDETом работают полтора инвалида, в сравнении с тем же Эклипсом / Идеей, которых поддерживают монстры типа IBM, Adobe и т.п.
И тем не менее, даже при таком раскладе, есть много вещей, которые таки получилось сделать лучше 🙂 Я немного знаком с MPS, и как бы могу изнутри сравнить даже... MPS - идеологически недоразвитое существо. Как бы и сколько бы человек над ним не работало, там изначальные задумки херовые. MPS по отношению к Semantic, примерно как XSD по отношению к RELAX NC.
Еще, объективный недостаток, к сожалению, для продуктивной работы нужно хорошо знать как редактор работает, и, практически, программировать редактор - необходимость. Новичку гораздо лучше дать Эклипс, да даже не обязательно новичку, если человеку влом заморачиваться, то Эмакс ему будет только мешать.
Да, и еще интересный момент: жабоскрипт в Эмаксе просто офигеть на каком уровне, даже по сравнению с MSVS / Aptana и т.п.
Я скоро доберусь до того, чтобы разбираться с wisent'ом, тогда и тесты буду делать. Пока я точно не знаю, но в любом случае, на принципиальном уровне, система задумана лучше. Если она сейчас работает медленно, то это дело времени и оптимизаций.
P.S. Самая лутшая IDE - наверное только в мечтах существует.
У вас все еще впереди.
Сишник должен написать джава машину, разработать скриптовый интрепритатор, и построить уютненькую IDE.
Функциональщик должен посадить зрение, воспитать джуниора и построить динамическую опердень
Я запилил себе лучшую IDE в виде связки Sublime Text 2 (с изменённой конфигурацией) и пачки компиляторов/интерпретаторов.
(GCC, G++, Python2.8/3.2, GHC)
Работает как часы.
Автодополнение - не нужно (ни для С++, ни для С подребности не было, для жабы или сисярпа думаю нужно).
Дебагером пользуются только тупые уроды (с).
В жабе без него вообще никак. В с и с++ тоже не помешает.
>> для жабы или сисярпа думаю нужно
а раз не обломает - значит не обломает и без мультитабов
отсюда вывод - достаточно блокнота
компилировать - набирать руками каждый раз полные команды со всеми ключами
А вот, чтобы IDE считала, что я сотню классов из стандартной библиотеки не могу запомнить - такого не надо.
Со всеми методами, разумеется? Да и приложения не пишутся силами только стандартной библиотеки.
Так что когда проект маленький, а свободного времени много - блокнота достаточно.
Понимаю, что не много, но дошёл же как-то до этих 5к.
Может Вам и не понять, но отсутствие постоянного напоминания как у тебя в проекте что называется заставляет более осмысленно называть сущности.
Я не спорю, что-то в этом есть, сам когда-то был против IDE и писал даже жабокод в vim. А теперь обленился 🙁
Я сам не против умного автодополнения и дебагера, просто для себя считаю это ненужным.
А наличие одной "IDE" для +5 языков для меня - киллер-фича.
Плюс конечно, благодаря некоторым изменениям конфигурации у меня есть возможность осществлять любые действия по одной универсальной горячей клавише.
Пока не знаю, станет ли он моим ежедневным инструментом или нет.
И теперь к примеру так решаются все проблемы:
1. Проблема - в текстовом файле все отступы набраны табами, хочу заменить их на пробелы.
2. УНИВЕРСАЛЬНОЕ ДЕЙСТВИЕ - нажимаю alt+e.
3. Набираю to spa(ces).
4. Выполняю команду "Convert Identation To Spaces"
Всё!
Также есть клавиша alt+q - для навигации по файлам, alt+w - для перехода в режим "distraction free".
Всё остальное делаю через универсаьное меню "alt+e".
Также со временем вырабатываются очень эффективные акронимы. Например:
alt+e + "nf" => New File
alt+e + "cf" => Close File
alt+e + "op" => Open Project
alt+e + "rea" => Reindent All
alt+e + "pain" => Package Control: Install Package
Нарадоваться не могу.
Чего?
10 гигабайт исходников? Вы в своём уме?
Если же 9.9 Гб занимают ресурсы, то при правильных настройках лагать не должна ни одна из известных науке IDE.
Я даже не представляю сколько человеко-лет нужно потратить, чтобы написать столько говнокода.
> ах да оперативное отслеживание всех модификаций, чтоб у прогера не вырабатывался рефлекс при появлении неясных глюков проводить стопроцентный перебилд проекта - потому что редактор гдето забыл какой-то файл модифиированый в обьектник пересобрать
P.S. Тарас тут одно время жаловался, что у него иногда протухают файлы, и приходится пересобирать.
http://gittup.org/tup/
Проект коммерческий?
Поэтому исходники текстур и моделей к исходникам не относим. Вы ведь правите их соответствующими редакторами, а не текстовым редактором с подсветкой, верно?
P.S. Если все это добавлено в проект, то тут уже важнее не размер ресурсов, а их количество - т.к. от количества файлов в проекте IDE действительно может начать тупить.
Скажется, я неоднократно наблюдал как студия к примеру не могла кореектно отловить модификации ашки из вне и при сборке пересобрать все файлы к которым этот файл подключен. Кроме того я же еще и утверждал что при больших обьемах исходников (ресурсы, ладно отбросим, но ведь 100 мб тоже не мало), производительность IDE падает, если студия просто полагивает то икскод (особенно после 4 версии) еще и начинает безбожно жрать оперативку.
100Мб исходников, которые нужно парсить + тысячи файлов с ресурсами в одном проекте это серьезная нагрузка на IDE, не спорю. И эти циферки пореальнее чем 10 гиг исходников, поэтому я склонен им верить 😉
А вот в это я верю. 100-200 мегабайт это вполне реальная цифра для большого проекта.
Рассказывал про 8 гиг софта написанного своими руками в том числе своя ОС. Причем тут Денис Попов?
При этом не понимал разницу между javaScript и Java.
А всё что я видел из его софта - какое-то говно на Дельфях и мускуле.
Я например написал (в одиночку и на голом ассемблере):
1. ОС - Ubuntu (500 ГБ исходников)
2. Компилятор - GCC (250 ГБ исходников)
3. Сайт - Google (320 ГБ исходников)
Заметьте, всё на голом ассемблере и без единого jmp'а!
https://govnokod.ru/16055#comment233434
есть ли связь
Типа чувак гордится тем, что написал 8 гигабайт текста?
Вот эта либа не поможет в работе?
Генерированный код! Вдвойне страшней.
> куча скриптов
Этак гигабайт-два.
> а еще неиспользуемые исходники предназначенные для компиляции проекта под другие платформы
Наверняка там еще Луникс с кучей пакетов, дабы работало на платформах без установленной ОС.
Ну чтобы велосипеды не изобретать.
LiveCD чтобы быстро можно было запилить с супер-прогой.
Они ведь не умеют считать до трёх!
1. Half Life
2. Half Life 2
3. Half Life 2: Episode 1
4. Half Life 2: Episode 2
5. Half Life 2: Episode 2: Something 1
6. Half Life 2: Episode 2: Something 2
5. Half Life 2: Episode 2: Something 2: Part 1
6. Half Life 2: Episode 2: Something 2: Part 2
2. Half Life 2
2.1. Half Life 2: Episode 1
2.2. Half Life 2: Episode 2
2.2.1. Half Life 2: Episode 2: Something 1
2.2.2. Half Life 2: Episode 2: Something 2
2.2.2.1. Half Life 2: Episode 2: Something 2: Part 1
2.2.2.2. Half Life 2: Episode 2: Something 2: Part 2
fxd
+ Есть киллер фича. Fuzzy-files-search и дерево проекта сбоку
> добавление новых ресурсов проект
- Вот это ручками
> гибкий поск по листингам и пректу
+ Поиск в ST2 лучше чем во всех IDE и редакторах вместе взятых
> высокая производительность
+ Открывается за пол секунды, вместо 20-30 (NetBeans)
+ Работал через него с kernel и искал объявление функции (300 мб исходников)
> простое управление конфигурациями сборки
+ Очень простое и очень гибкое.
+ Конфигурируется ST2 вообще очень хорошо.
> поддержка многих языков программирования
+ Подсветка, снипеты, готовые системы сборки есть для +40 языков.
> а чтоб к примеру могла показать откуда импортирован этот обьект
- Нету ни для одного, сторонними плагинами возможно установить для 10-15 популярных языков.
> и чтоб можно было добавлять свои
+ Можно добавить ВСЁ, от снипетов, до систем сборки и снипетов.
> втроенная клиенска сторона систем контроля версия
+ git, svn, hg устанавливаются за 3 клика (из самой проги, не из браузера)
> просмотровщик репозиториев на серваке
- Нету, возможно добавляется плагинцами (в стандартном GUI git'a такое уже есть, нахрен такое в редакторе - не знаю), но такого нет - так что минус
> потому что редактор гдето забыл какой-то файл модифиированый в обьектник пересобрать
ОЛОЛО! Таким редакторы не занимаются. Этим занимается система make.
> функциональный встроенный отладчик
- Нету. Отладчик нужен опять же для обезьян, которые сначала говнокод пишут, а потом головой думать не хотят.
Плюсов 10/14. (из тех критериев, что ты смог придумать, неспецифичных для редакторов)
Помимо этого есть просто куча киллер-фич, для быстрого и удобного редактирования, никакой рутины в наборе кода.
т.е. когда ты модифицируешь файл, но не сохраняешь его, а нажимаешь build - мейк заставит редактор сохранить файл принудительно и соберет его?
При нажатии Ctrl+B - все изменённые файлы перед сборкой автоматом сохраняются.
это нормальное поведение любого редактора-ide, об этом речь и идёт, на то она и ide
Редактор же этим не занимается, а всего-лишь запускает make (или лучше tup), а уж он делает всю работу.
А IDE типа как не умеет сохранять изменённые файлы при сборке?
Проблема автора в том, что часто изменив h-файл (например с шаблоном) IDE не пересобирает другие модули. И в итоге, изменения не вносятся в бинарник.
Таким образом иногда в некоторых IDE нужно делать полную пересборку проекта, даже если была изменена одна строчка.
IDE - integrated development environment
среда, позволяющая не выходя из нее редактировать, собирать и отлаживать код (а некоторые - еще и деплоить, собирать инсталляторы и тестировать)
на то и integrated
например, вижуал студия ничего не отслеживает - её дело сохранить все модифицированные файлы перед сборкой и запустить msbuild (или её более древний аналог), который как и make по датам изменения/отсутствию файлов построит дерево зависимостей и пересоберет всё чего не хватает/было промодифицировано
т.е. как конкретно будет происходить процесс сборки - не важно, главное, что она запускается прямо в среде, и в среде же есть результаты компиляции - список ошибок, навигация в конкретное место в файле и т.д.
если этого всего нет - а есть просто недоскрипт, запускающий внешнюю сборку, значит это нихрена не integrated
P.S. Плюсану обратно из-под виртуала.
Это есть в сублайм тексте. И даже внутренний терминал для интерпретируемых прог.
Но я не хочу больше доказывать что мне нравится редактор.
ОН МНЕ НРАВИТСЯ БЛЖАД! ОН ЗАЕБИСЬ!
За остальными вопросами идите в википедию, на офф сайт редактора или обращайтесь к roman-kashitsyn
но умеет ли он в то, что умеет вижуал ассист?
как у него с gdb?
как у него с ведением файлов "проекта" и "солюшена" - писать систему сборки руками? хочу мышкой
на неограниченное число машин - 50+ licenses: USD $40 / license
Не буду оправдывать пиратов (хотя именно это я всегда и делаю), но есть только один способ сделать так, чтобы произведение не украли.
Именно - запереть единственный экземпляр в сейфе и построить над ним ещё один форт нокс.
Вместо того чтобы взять готовый интерпретатор некоторые умудряются захапать время и деньги у заказчика на изготовления своего.
> Да-да-да, парень, мы не любим изобретать велосипеды
ДВЕ лучшие IDE написаны на жабе. Остальные либо на чистой сишке, либо на C#.
Это всё крестоблядствопринципы.
нахуй так делать?
меня больше интересует как он их скомпилировал
http://govnokod.ru/22545#comment377458