- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
#include <iostream>
int main() {
// Инициализируй меня... полностью.
void (*(&(*omg[])())[1]) (void (*)(void (*(*[])())())) = { [] () ->
void (*(&)[1]) (void (*)(void (*(*[])())())) { static void (*f[])
(void (*)(void (*(*[])())())) = { [] (void (*f)(void (*(*[])())())) {
static void (*(*ff[])())() = { [] () -> void (*)() { return [] () {
std::cout << "Test OK" << std::endl; }; } }; f(ff); } }; return f; } };
// Вызывай, вызывай меня... полностью.
omg[0]()[0]([] (void (*(*f[])())()) { f[0]()(); });
return 0;
}
Тарас, сколько в отступе нужно пробелов, чтобы код стал читаем на крестах?
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 должны разрулиться во время компиляции.
Так я надеюсь, что меня умные люди услышат.
>Ну да, как это потом вызывать?
Получается такую лямбду не удастся передать в функцию. То есть фактически не возможна функция высшего порядка, в которую передали лямбду с автовыводом типов. Поэтому я не знаю, на что рассчитывают создатели стандарта. Игрушка какая-то. Не примут наверное опять. Так у крестов и не появится нормальных лямбд.
Так и есть, указывал его только в неочевидных местах.
То есть очевидные места только здесь: :D
Русский это простой и понятный язык.
Но в целом - да, с декларацией типа в сишке перемудрили. Мне лично очень нравятся декларации типа в 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