LINUX.ORG.RU

Какое же говнище этот ваш С++

 


11

7

Решил намедни углубить свои знания по плюсам, чувствуя, что скоро нехило так потребуются по работе. Теперь сижу, обмазываюсь тут всякими трупами страусов, Скоттом Майерсом и другими. Г-пди, как же можно на этом писать, особенно после знания божественных лиспов, хаскелей и прочих матанских агд (sic!). Это какая-то пытка, честное слово, мне натурально мерзко и противно читать как люди пытаются вырезать гланды через задний проход да ещё и хвалятся этим, поглядите, мол, как это круто. Такое ощущение, будто плюсисты все поголовно латентные мазохисты.

template <typename T>
class Rational
{
    public:
    ...
    friend const Rational operator*(const Rational& lhs, const Rational& rhs)
    {
        return Rational(lhs.numerator() * rhs.numerator(), // same impl
            lhs.denominator() * rhs.denominator()); // as in Item 24
    }
}

An interesting observation about this technique is that the use of friendship has nothing to do with a need to access non-public parts of the class. In order to make type conversions possible on all arguments, we need a non-member function (Item 24 still applies); and in order to have the proper function automatically instantiated, we need to declare the function inside the class. The only way to declare a non-member function inside a class is to make it a friend. So that's what we do. Unconventional? Yes. Effective? Without a doubt.

Нафиг так жить, почему нельзя всё было сделать по-человечески, как в нормальных языках? Ненавижу страуса, ненавижу плюсы, ненавижу тех идиотов, которые упорно продолжают куда ни попадя совать этот мёртвородженный язычок. И ниасилил, да.

Перемещено mono из talks

★★★★★

Последнее исправление: mono (всего исправлений: 1)
Ответ на: комментарий от r

Ты все находишься в возрасте когда думают что большую сложную программу можно оптимизировать руками лучше чем это сделают инструменты вроде компилятора?

Точно. O(n^2) компілятор не переделает в O(n).

dzidzitop ★★
()
Ответ на: комментарий от shty

ссылка на кодестайл принятый в одной отдельно взятой компании

То есть с++ пушист и мягок- а гугл гонит?

r ★★★★★
()
Ответ на: комментарий от r

я не занимался поиском узких мест LibreOffice - не могу сказаць. В своём коде почти всегда алгоритмическая оптимизация даёт больше прибавки от смены компилятора или режима компиляции.

dzidzitop ★★
()
Ответ на: комментарий от r

напрімер, в 2010 мне вот этот классец на 50 строк помог уменьшіть потребленіе памяті в десяткі раз :) Просто потому что в массіве данных было много повтореній одінаковых string labels.

https://github.com/dzidzitop/libafc/blob/master/src/afc/Repository.h

dzidzitop ★★
()
Ответ на: комментарий от r

Всегда.

Я проапдейтил свою БЗ. Спасибо.

Параметрический полиморфизм с полнотой по тьюрингу не особо и нужен.

Я умею с помощью метапрограммирования добиваться декларативности довольно сложных вещей. Я хочу инструмент, соответствующий моим потребностям и способностям.

Если метапрограммирование достаточно выразительное, то метапрограмма может не только подставлять параметры в шаблон, но еще и производить, например, поиск в пространстве альтернатив и оптимизацию.

Зачем ты хочешь метапрограммирвоать _шаблонами_?

Я не хочу метапрограммировать именно шаблонами. Я хочу, чтобы программа и метапрограмма были интегрированы на уровне типов, как шаблоны в С++. BCI именно этого сделать не позволяет. Там программа - отдельно, а метапрограмма - отдельно. И результат работы метапрограммы вообще не виден. Пробовал отлаживать стабы Hibernate?

Не предлагай мне, пожалуйста, Скалу. Я знаю, что она может почти то, что мне именно здесь нужно, только делается по другому. Но это совсем другой язык. Мы о Java сейчас говорим.

Я бы предпочел, чтобы в С++ были макросы Лиспа или Скалы. Но их нет. Есть шаблоны.

aist1 ★★★
()
Ответ на: комментарий от shty

и вдогонку - а когда исчезнут книги Джошуа Блоха, например?

:D

alienclaster ★★★
()
Ответ на: комментарий от r

Повторюсь, выстелила потому что: 1) бабло 2) хайп 3) набежавшая биомасса

А почему она туда набежала по твоему?

Потому что как ты сказал (2) модно, (1) хайп и (4) - просто на рынке программирования стало больше фрешмита - программистов стало больше и нужды в них стало еще больше, чем их стало. Ты в курсе например о статистике по количеству претендентов на одну ойти-должность в украине?

Ну, часть ее набежало в джаву, часть (я считаю большая) это фреш мит

Ничего подобного. Ее дизайнили именно для плюсовых программистов. Потому она так и выглядит

Дизайнили для плюсовых, так как это стало трендом - туда набежало мясцо не задумываясь. Ты программистов на пхп много видел? Они осознанно делают свой выбор погромировать на пхп, какой процент? :)

Что ты в данном случае подразумеваешь под платформой?

Стандартный набор библиотек - JRE.

Его написали волонтеры? :) Это профинансированная акция за бабло, еще раз - так же могли и для лиспа написать LRE.

В джаву вложили бабла и написали, вот и весь сказ. С таким же успехом могли вложить в CL и написать.

Нет не могли. Что - для C++ IDE не было или что?

Была. И не одна.

Java позволила благодаря своим фичам сделать качественный рывок на рынке IDE как доступными фичами так и скоростью разработки самих IDE.

Бред. При чем странно слышать это от тебя, обычно о подобном верещат всякие ебанашки с промытым мозгом на тему ооп и гуф^W гоф решит все наши проблемы. Какие нахер IDE ты их видел вообще? Сравни ту же студию *2003* года и eclipse того времени, ты о чем вообще дядя?

Java понизила планку софта которые могут написать твои любимые одиночки из корпоратива

Нет, джава как и пхп планку порога вхождения для быдла - кадров не хватало (и щас тоже не хватает - посмотри статистику, еще раз тебя прошу) - поэтому нужен был _примитивный_ язык для тупы ебланов. Его и придумали. Кто такиие «одиночки из корпоратива» оставим на твоей совести.

IDE уже начали писать не корпорации типа Борланд и Микрософт - а люди в гаражах при чем делали это лучше чем корпорации

До-до-до-до! Улю-лю-лю. Eclipse был написан в гараже, да :) и из гаража спонсировался с выручки на замене биксеноновых линз для ланосов :) Не смеши.

Together - в конце концов куплен борландом вместо своих продуктов

Борланд со своим JBuikder и прочим говном типа Delphi.net с самого начала смотрелся неуместно тупорыло, в итоге с рынка он и слился. Вся разработка на джаве была в нетбинсе и эклипсе на протяжении _всей_ истории джавы, JBuikder это для любителей дельфин из постсовка, маргинальная поделочка.

Orion - писало двое гиков - самый удобный AppServer - куплен ораклом вместо своего. JBoss - писал тип обидевшийся на апач - куплен редхатом. Так что не расказывай про вложенное бабло. Появление

Давай, позадвигай про крутость джавы для стартапов, я поржу.

Так что не расказывай про вложенное бабло

Мне об этом рассказывать нет необходимости - все и так известно. Просто ты не осведомлен, видимо.

Появление Java дало реальный импульс в SE показав что «энтерпрайз платформу»

Ты ж сказал что никакого интерпрайза нет, теперь оказывается появился?

или огромные программы типа IDE можно разрабатывать чуть ли не в одиночку

Eclipse, Netbeans, Idea разработаны в одиночку в гараже? Просто да / нет?

при чем часто эффективнее чем делют это монстры типа оракла и микрософта вкладывающие в это дело миллионы

Ты ты рассказываешь о крутой ынтепрайз джаве в несущестсвующем по твоему же определению ынтерпрайзе, то вещаешь про одиночек сносящих корпоративный сектор - ох уж эти сказочники.

IDE можно разрабатывать чуть ли не в одиночку - при чем часто эффективнее чем делют это монстры типа оракла и микрософта вкладывающие в это дело миллионы.

Давай пример такой IDE, ну шоб не быть голословным, да?

Qbasic, C, C++, Perl, Php, Python, Ruby, Scala, Clojure - это все пример таких языков.

Где ты взял такую траву?

Т.е. это не авторские языки, да? Рассказывай, мы послушаем.

C, C++ - AT&T Bell Labs.

Они сделаны не по заказу AT&T, просто существовали чувачки в AT&T, которые запилили язык - это обычная история, как с тем же маккартневским лиспом. Или это по-твоему было язык комитета? Давай, жги. Комитетский язык - это когда в нуждах коллективных платежеспособных интересов на чьи-то конкретные баблосы (корпорации, налоги) создается технология под _заказ_. Java, CL, Erlang, Fortran, ABAP, 1С это именно оно.

Perl - Unisys - многомиллиардный мегакорп занимавшийся майнфреймами.

Не неси херни.

Scala - дочка generic java и университетских грантов - одерский ее начал после того как поработал над ненавистной тебе жабой

Еще раз, при чем тут комитет, scala - это язык Одерского на попиле грантов, а дальше понеслась. Никаких комитетов тут и рядом не стояло.

Не считая кложи - все остальное - унылое говно с точки зрения тех же самых претензий которые ты приводишь к жаве.

Да ты что ты. Haskell - унылое говно, Racket, Python? Ждем от тебя еще откровений.

Именно «что хит сезона» - т.е. модно.

Фак. Ну у тебя и мозг.

Это неумелый переход на личности?

А надо было целенаправленно изобретать никому нахрен не нужную фигню чтоле?

Изобретать ничего не нужно было - все и так присутствовало, хотя скомпилировать докучи.

И не значит, что на тот момент нельзя было взять за основу один из ML-языков хотя бы.

И родить очередной Self. Ключевая фраза «никому не нужно».

Какой нахер self? Уже был OCaml.

Это и сейчас не проблема для многих динамически типизированных языков например. То же не «проблема».

Ты серьезно полагаешь что какой нить питон лучше жабы?!

В определенных областях - значительно, существенно лучше.

gc был во многих языках. Найди разницу почему жаба стала популярной а тот же Self нет.

Я уже об этих причинах рассказал: хайп, бабло, С-стайл, пиар, инерция мышления

Т.е. нет никакой промышленности? Ok, поправил.

Нет никакого «энтерпрайза» в том смысле что ты упоминаеш ьпо отношению к джаве.

Интерпрайз это промышленность и есть, просыпайся нео.

И требования у нее сильно другие чем для языков исследовательских и прототипных.

И к чему ты это сказал?

К тому, что существует несколько классов языков, интерпрайзом не ограниченных.

alienclaster ★★★
()
Ответ на: комментарий от r

Любые попытки представить ее как нечто революционное выглядят смешными.

Покажи мне _более_ успешные попытки того же периода.

При чем здесь вообще бл.ть успешные? Php тоже был успешен (и сейчас дофига массово распространен) что дальше? Это не делает его говном с рождения?

alienclaster ★★★
()
Ответ на: комментарий от r

И почему плюсовые темлплейты не подходят тоже не видишь?

Не подходят для чего и по сравнению с чем?

alienclaster ★★★
()
Ответ на: комментарий от aist1

Java
JVM
Только и всего. Никакого метапрограммирования тут не развернёшь. А нужно.

Ненужно. У них уже какая-никакая убогая срала есть.

alienclaster ★★★
()
Ответ на: комментарий от shty

голословные заявления всё ещё в ходу на лоре - это факт

для тех, кто не в теме:

http://msdn.microsoft.com/en-us/library/c6cyy67b.aspx

это еще против старой версии плюсов, в 11 шаблоны улучшили, в 14 еще добавят

плюс:

http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java#Generics

итого C++ > C# > Java

wota ★★
()
Ответ на: комментарий от r

То есть с++ пушист и мягок

С++ лыс и жестковат, а в гугл знают как его использовать... но у меня вопрос - что это доказывает?

shty ★★★★★
()
Ответ на: комментарий от wota

не-не-не, браза, ты вперёд сильно забегаешь, для начала хотелось бы услышать, что ты имел в виду когда сказал «хуже»

shty ★★★★★
()
Ответ на: комментарий от r

Отличия незначительные

ага, первое же - «each Oak compilation unit can contain multiple classes or interfaces», просто мелочь для дизайна ЯП

Что «а зато в с++ было» - не подходит

речь не шла о «подходит, не подходит», речь, шла о том, что за основу взяли С++ и урезали, в том числе шаблоны

Угу. Догадайся почему реализация скалы для .NET делает.... type erasure!

вероятно наследие JVM и так меньше накладных расходов

На практике темплейтые либы вроде буста или стла - это штука от которой хочется повесится даже

конкретные претензии к STL? а насчет буста - я и сам его никому б не рекомендовал, но тут не плюсы виноваты, ты ж не будешь ругать Java за то на ней пишут такое:

private Map<Class<?>, Map<String, String[]>> compressDependencies(
      Map<Class<?>, Map<String, List<String>>> dependencies) {
    final Map<Class<?>, Map<String, String[]>> result =
        new FastMap<Class<?>, Map<String, String[]>>(dependencies.size());
    final Set<Entry<Class<?>, Map<String, List<String>>>> entrySet = dependencies.entrySet();
    for (Entry<Class<?>, Map<String, List<String>>> entry : entrySet) {
      final Map<String, List<String>> value = entry.getValue();
      final Map<String, String[]> desc = new FastMap<String, String[]>(value.size());
      final Set<Entry<String, List<String>>> subEntries = value.entrySet();
      for (Entry<String, List<String>> valueEntry : subEntries) {
        final List<String> list = valueEntry.getValue();
        if (list != null && !list.isEmpty()) {
          desc.put(valueEntry.getKey(), list.toArray(new String[list.size()]));
        }
      }
      result.put(entry.getKey(), desc);
    }
    return result;
  }

Убогая дефаултная семантика копирования, проблему которой решают кое-как в последних стандартах, а конструкторы копирования - вообще мрачняковый костыль, деструкторы и конструкторы кооторые хреново ддружат с исключениями, сами исключения которыё допилили до рабочего состояния не так давно и т.п.

наша песня хороша... С++ далеко не идеален, но я б ругал его за совершенно другое, может как-нибудь создам топик об этом

wota ★★
()
Ответ на: комментарий от shty

не-не-не, браза, ты вперёд сильно забегаешь, для начала хотелось бы услышать, что ты имел в виду когда сказал «хуже»

тоже забеги вперед и почитай

wota ★★
()
Ответ на: комментарий от wota

тоже забеги вперед и почитай

да я прочитал, ты не беспокойся, только для начала мне всё равно хотелось бы понять что ты имел ввиду под словом «хуже», а в тех ссылках, которые ты привёл, к сожалению, об этом ничего не говорится

shty ★★★★★
()
Ответ на: комментарий от shty

что ты имел ввиду под словом «хуже»,

не умеет чего-либо, либо умеет с дополнительными ограничениями, у тебя есть другие варианты в данном контексте?

wota ★★
()
Ответ на: комментарий от wota

не умеет чего-либо, либо умеет с дополнительными ограничениями,

ну вот смотри: porsche 911 не умеет ездить по болотам, porsche - говно? возможно, но уж точно не потому, что не умеет ездить по болотам

у тебя есть другие варианты в данном контексте?

у меня есть вариант - не заниматься сравнениями что лучше linux или assembler

shty ★★★★★
()
Ответ на: комментарий от shty

ну вот смотри: porsche 911 не умеет ездить по болотам, porsche - говно?

притянутые за уши примеры такие притянутые, ну и если сравнивать C# и Java - кто из них porsche 911, а кто болотоход?

у меня есть вариант - не заниматься сравнениями что лучше linux или assembler

окай, на всякий случай, если ты не заметил - тут вообще-то только про ЯП разговор

wota ★★
()
Ответ на: комментарий от shty

рановато тебе пока ещё в рассуждения, изучай логику

ты так и не ответил про C# vs Java, намекну еще больше, используя твой же пример, - автомобили могут отличаться и качественно, и на уровне комплектации, и только дурак не будет их сравнивать при покупке

П.С. на сегодня мой лимит обучения школьников окончен - в игнор

wota ★★
()
Ответ на: комментарий от aist1

Я умею с помощью метапрограммирования добиваться декларативности довольно сложных вещей. Я хочу инструмент, соответствующий моим потребностям и способностям.

Почему это должен быть _параметрический полиморфизм_? В той же жабке/c# теми же аннотациями.

Пробовал отлаживать стабы Hibernate?

Я гибернейтами всякими не пользуюсь с 2003 года.

Мы о Java сейчас говорим.

Нет - мы говорим о Java в 90х и была ли она прорывом или говном. Никаких гибернейтов до Java не было.

r ★★★★★
()
Ответ на: комментарий от r

Почему это должен быть _параметрический полиморфизм_? В той же жабке/c# теми же аннотациями.

Потому что типы — это структуры данных с фиксированной операционной семантикой. Работая с типами, как с данными, я могу получать новую операционную семантику, не присутствующую ни в одном базовом типе по отдельности. Системный эффект.

Например, реализация частичных классов посредством генератора линейной иерархии Александреску. В С++ с помощью частичных классов можно реализовать вычисляемые контексты имен. Но не только их.

template <typename Base>
struct Derived: Base {
  // здесь я могу рассматривать Base как контекст имен
  // уровня объекта. Очень удобно, учитывая, что я могу 
  // использовать свой this для доступа к элементам этого
  // контекста.
};

Я сильно сомневаюсь, что такая функциональность, даже если её можено сделать аннотациями в Java, будет удобна в использовании.

Нет - мы говорим о Java в 90х и была ли она прорывом или говном.

Я уже начал забывать. Напомни, плиз. Ты говорил, что Java была говном? Или прорывом?

aist1 ★★★
()
Ответ на: комментарий от r

Нет - мы говорим о Java в 90х и была ли она прорывом или говном.

А почему сразу «или»? Одно другому не мешает.

anonymous
()
Ответ на: комментарий от wota
private Map<Class<?>, Map<String, String[]>> compressDependencies(
      Map<Class<?>, Map<String, List<String>>> dependencies) {
    final Map<Class<?>, Map<String, String[]>> result =
        new FastMap<Class<?>, Map<String, String[]>>(dependencies.size());
    final Set<Entry<Class<?>, Map<String, List<String>>>> entrySet = dependencies.entrySet();
    for (Entry<Class<?>, Map<String, List<String>>> entry : entrySet) {
      final Map<String, List<String>> value = entry.getValue();
      final Map<String, String[]> desc = new FastMap<String, String[]>(value.size());
      final Set<Entry<String, List<String>>> subEntries = value.entrySet();
      for (Entry<String, List<String>> valueEntry : subEntries) {
        final List<String> list = valueEntry.getValue();
        if (list != null && !list.isEmpty()) {
          desc.put(valueEntry.getKey(), list.toArray(new String[list.size()]));
        }
      }
      result.put(entry.getKey(), desc);
    }
    return result;
  }

кстати, LOL, сразу не посмотрел, что оно делает, вот аналог на плюсах:

copy_if(
    depends.begin(), depends.end(), 
    inserter( result, result.begin() ),
    []( auto entry ) { return entry.second.size(); } ) );

и да, тут сразу видно то, за что действительно стоит покритиковать стандартную библиотеку - есть универсальные варианты, но нет упрощенных, можно было и так сделать:

copy_if(
    depends, result,
    []( auto entry ) { return entry.second.size(); } ) );
wota ★★
()
Последнее исправление: wota (всего исправлений: 2)
Ответ на: комментарий от wota

Я вот всё думаю, почему люди не делают горизонтальную разрядку. Как ты там в этом коде что-то понял, для меня остается загадкой :)

Справедливости ради, auto в лямбдах С++ пока еще нет) Оч полезная вещь будет для всяких визиторов.

aist1 ★★★
()
Ответ на: комментарий от aist1

Как ты там в этом коде что-то понял, для меня остается загадкой

кстати чуть ошибся, там удаление во вложенной мапе, а я сделал для внешней

Справедливости ради, auto в лямбдах С++ пока еще нет

да, только в С++14

wota ★★
()
Ответ на: комментарий от wota

Жду, когда кто-нибудь достанет какую-нибудь функциональную либу на Java, чтобы показать, как почти так же просто можно это сделать. :)

aist1 ★★★
()
Ответ на: комментарий от anonymous

ОМГ. И кто-то еще ругает С++.

кстати можно как раз сравнить на этом примере, он хоть и небольшой, но кое-что из него видно:

private Map<Class<?>, Map<String, String[]>> compressDependencies(
      Map<Class<?>, Map<String, List<String>>> dependencies) {
    final Map<Class<?>, Map<String, String[]>> result =
        new FastMap<Class<?>, Map<String, String[]>>

тут явно не хватает type aliases из С++11, чтоб сделать код читабельным, хотя что это я, в Java и typedef то нет, извращаются через наследование, идем дальше:

Map<Class<?>, Map<String, String[]>> result =
        new FastMap<Class<?>, Map<String, String[]>>

опять копипаста, в С++ это просто

Dependencies result;

а вот перебор значений в мапе:

final Set<Entry<Class<?>, Map<String, List<String>>>> entrySet = dependencies.entrySet();
    for (Entry<Class<?>, Map<String, List<String>>> entry : entrySet) {

в С++ делается гораздо проще:

for( auto entry : dependencies )

и еще немного копипасты (зато не ручное управление памятью!)

final Map<String, String[]> desc = new FastMap<String, String[]>

и еще немного (ну нет в Java copy_if):

      final Set<Entry<String, List<String>>> subEntries = value.entrySet();
      for (Entry<String, List<String>> valueEntry : subEntries) {
        final List<String> list = valueEntry.getValue();

перегруженные операторы? не слышали

result.put(entry.getKey(), desc);

вот из этого и получилось то, что получилось, хотя в умелых руках конечно могло выглядеть и посимпатичнее

wota ★★
()
Ответ на: комментарий от alienclaster

Ты в курсе например о статистике по количеству претендентов на одну ойти-должность в украине?

< 1. Почему твой фрешмит не занялся ++?

Ты программистов на пхп много видел? Они осознанно делают свой выбор погромировать на пхп, какой процент? :)

На PHP кроме одних самоубийц больших систем не разрабатывают. Но таки да - пыхпых выполняет вполне успешно задачу в своей области. А на жабке пишут весьма сложный софт. Не надо путать квалификацию в области CS с желанием трахаться с инструментом.

Его написали волонтеры? :)

При чем тут волонтерство? Что рождал в это время микроссофт - унылый MFC? DCOM? Борланд родил VCL и все? Qt до сих пор архитектурно слабое подобие свинга? И таки да - JRE сейчас это сборка кучи всего, а платформа уже JRE+maven rep. При чем это все - совместимо друг с другом, а не как boost с qt.

Какие нахер IDE ты их видел вообще? Сравни ту же студию *2003* года и eclipse того времени, ты о чем вообще дядя?

Какой к черту эклипс того времени акстись дядя? Сравни свою студию например JBuilder+RefactorIt или Together Control Center. До жавосвских IDE никому и в голову такое слово как рефакторинг (содранный из смолтолковских) aka автоматические преобразования кода в голову не приходило. Что там студия умела - унылый сенс? Все?

Нет, джава как и пхп планку порога вхождения для быдла - кадров не хватало (и щас тоже не хватает - посмотри статистику, еще раз тебя прошу) - поэтому нужен был _примитивный_ язык для тупы ебланов.

facepalm.pas. Ты понимаешь что необходимость ебаться с проблемами плюсов - это _совсем_ не признак ума и квалификации? Эти твои %&ланы с места в карьер разработали самые продвинутые IDE, jvm дал толчек разработчика компиляторов, прошла мегаэволюция различных тулзов типа ORB/App Servers/различные RPC и т.д. До появления жабы такие либы осиливали только корпорации, а программисты на плюсах только прикладную сборку осуществляли - им траха с языком было достаточно, чтобы еще какие-то платформы придумывать.

Eclipse был написан в гараже, да

Я где-то упоминал эклипс? Я говорил о Together, Idea, RefactorIt4JBuilder.

Борланд со своим JBuikder и прочим говном типа Delphi.net с самого начала смотрелся неуместно тупорыло, в итоге с рынка он и слился.

Он с рынка слился потому что был корпорацией которая мегабаксы вкладывала в то что вскякие Дмитриевы пилили в гаражах. А кормежки типа Оффиса у них не было. А потом пришли бимеры и раздали эклипс бесплатно - тут с борландом и попрощались.

. Вся разработка на джаве была в нетбинсе и эклипсе на протяжении _всей_ истории джавы,

Ты чем занимался пока обезьяна превразалась в человека? Когда проджект эклипс появился знаешь? Пока эклипс еще плюсовик Гамма одержимый идеей биндингов к гтк еще только пилил - на жабе уже все работали в JBuilder и TogetherCC и к первой версии Eclipse которую можно было хотя бы пользовать (про рефакторинги там говорить вообще смешно было) уже все прогрессивное человечество сидело в IDEA 2.5 емнип.

Давай, позадвигай про крутость джавы для стартапов, я поржу.

Я жду от тебя примеров аля Orion на плюсах - поржем вместе.

Eclipse, Netbeans, Idea разработаны в одиночку в гараже? Просто да / нет?
Давай пример такой IDE, ну шоб не быть голословным, да?

Eclipse и NetBeans продукты корпораций а IDEA делали трое типов дома после успешного такого же гаражного TogetherCC.

Ты ж сказал что никакого интерпрайза нет, теперь оказывается появился?

Я сказал что его нет в том смысле в котором ты его используешь.

Т.е. это не авторские языки, да?

У _всех_ языков есть автор.

Они сделаны не по заказу AT&T, просто существовали чувачки в AT&T, которые запилили язык

facepalm.транзистор. По какому в задницу заказу? Это все работники AT&T которые их пилили на работе за зарплату.

Не неси херни.

Ты этого не знал - что перл сделали в многомиллиардной корпорации?

Никаких комитетов тут и рядом не стояло.

Херню про комитеты ты вообще придумал. Java язык Гослинга.

Да ты что ты. Haskell - унылое говно, Racket, Python? Ждем от тебя еще откровений.

А что ты на хаскель прыгнул? Ты там привел питоны и пхп. Ну расскажи как питон не унылое говно по сравнению с жабой.

Это неумелый переход на личности?

Это коментарий по поводу твоеих выводов вроде - если конфеты любят - то это не потому что они вкусные а потому что «бабло, мода, реклама и корпоарации».

Изобретать ничего не нужно было - все и так присутствовало

я думаю что чуваки разработавшие транзистор начали с изобретения фундаментальной физики....

Какой нахер self? Уже был OCaml.

Ты про окамл кроме названи что-то знаешь? Или нахрена ты его в пример приводишь?

В определенных областях - значительно, существенно лучше.

Этот такой способ не признавать что сказал херню полную?

Я уже об этих причинах рассказал: хайп, бабло, С-стайл, пиар, инерция мышления

И конфеты люди жрут потому что реклама. Дада.

К тому, что существует несколько классов языков, интерпрайзом не ограниченных.

Языки имеющие специальную заточку - это гребаный 1С или R или Математика. Пролог еще имеет узкую нишу и ассемблеры отдельная тема. Все остальное - универсальные.

r ★★★★★
()
Ответ на: комментарий от alienclaster

Это не делает его говном с рождения?

Говном для чего? Для клепания вебстраничек малограмотныеми кодерами - идеально. Вон некоторые фейсбук наклепали. На жабе пишут охрененно сложные системы весьма квалифицированные люди. Покажи мне замену - на чем их писать для этих людей (в те времена - ~2000-2005) ?

r ★★★★★
()
Ответ на: комментарий от shty

С++ лыс и жестковат, а в гугл знают как его использовать... но у меня вопрос - что это доказывает?

Что он лыс и жестковат. И нуждается в замене на что-то мягкое и пушистое.

r ★★★★★
()
Ответ на: комментарий от wota

ага, первое же - «each Oak compilation unit can contain multiple classes or interfaces», просто мелочь для дизайна ЯП

А жаба по твоему не может?

что за основу взяли С++ и урезали, в том числе шаблоны

Шаблоны никто не обрезал. Сделали язык с с++ синтаксисом.

вероятно наследие JVM и так меньше накладных расходов

Нет не вероятно. А то что ограничения CTS такие ядерные что скальную систему типов поверх нее тупо не реализуешь - не влезает она туда.

конкретные претензии к STL?

См начало треда.

ты ж не будешь ругать Java за то на ней пишут такое

Меня не глубина генериков беспокоит а невменяемые ошибки развернутых темплейтов которые резолвить - отдельный двинутый скилл. А почему по твоему Qt всякие не юзают stl?

r ★★★★★
()
Ответ на: комментарий от aist1

Я уже начал забывать. Напомни, плиз. Ты говорил, что Java была говном? Или прорывом?

Я говорил что на момент своего изобретения и ~10 следующих лет жаба(как платформа со всеми фичами) была нехилым прорывом.

r ★★★★★
()
Ответ на: комментарий от wota

кстати, LOL, сразу не посмотрел, что оно делает, вот аналог на плюсах:

Это не аналог на плюсах раз, это на весьм последних плюсах два - сравни с последней жабой, и это наркоманство не надо так писать как написано на жабе три.

r ★★★★★
()
Ответ на: комментарий от r

А жаба по твоему не может?

не в том виде

Шаблоны никто не обрезал. Сделали язык с с++ синтаксисом.

ага, а дженерики значит с каким-то в корне другим синтаксисом потом вернулись ;)

Нет не вероятно. А то что ограничения CTS такие ядерные что скальную систему типов поверх нее тупо не реализуешь - не влезает она туда.

проблемы негров, как говорится, вон в CL, например, никто не жалуется, что им что-то мешает

См начало треда.

лень

Меня не глубина генериков беспокоит а невменяемые ошибки развернутых темплейтов которые резолвить

слава Джобсу clang, разработчики компиляторов уже озаботились вменяемым выводом ошибок от шаблонов, ну и в той же скале можно и поневменяемее ошибки встретить

А почему по твоему Qt всякие не юзают stl?

всякие Qt вполне себе дружат с STL, а почему имеют свои классы - разные причины, от того, что QHash, например, раньше просто не имел аналогов, и до того, что std::string весьма примитивен (но зато не тянет ICU в зависимостях)

wota ★★
()
Ответ на: комментарий от wota

хватит уже крутость обсуждать, давай немного практики в топик добавим, вот тут было предложение:

Да легко. Только полный compilation unit аналогичного кода. Это все равно ниочем - потому что речь идет о жабе в 2000 году но интересно.

r ★★★★★
()
Ответ на: комментарий от wota

не в том виде

А в каком? Она просто говорит что public должен быть один. Все.

а дженерики значит с каким-то в корне другим синтаксисом потом вернулись ;)

Еще раз - медленно. Не было никаких генериков в c++ когда с нее делали жаву.

r ★★★★★
()
Ответ на: комментарий от r

Это не аналог на плюсах раз, это на весьм последних плюсах два - сравни с последней жабой, и это наркоманство не надо так писать как написано на жабе три.

Какое же говнище этот ваш С++ (комментарий)

жду, а насчет версии плюсов - ну так не стоит жить прошлым днем, у меня просто замечательные впечатления от С++11, хотя не так давно я был близок к тому, чтоб перебраться на какой-нибудь D или C# как основной ЯП

wota ★★
()
Ответ на: комментарий от r

Еще раз - медленно. Не было никаких генериков в c++ когда с нее делали жаву.

тебе еще раз даты привести? они были в том же году, в котором только начали думать над Oak

wota ★★
()
Ответ на: комментарий от wota

проблемы негров, как говорится, вон в CL

Да - в CL система типов - сильная.

а почему имеют свои классы - разные причины,

Угу. И они всегда есть.

r ★★★★★
()
Ответ на: комментарий от wota

тебе еще раз даты привести?

Ты в 91 под какой стол ходил? Ты понмиаешь что нельзя біло в 91 году зайти качнуть компилятор так же легко как сейчас, обен знаний был более медленным, гослинг наверняка пилил свой Oak нехило времени и играться с компилятором которы только только вышел не было возможности? У Гослинга был рабочий стабильный с++ без шаблонов.

r ★★★★★
()
Ответ на: комментарий от wota

.begin(), entry.second.end() и inserter забыл.

private:

    using SubMap = std::map<std::string, std::vector<std::string>>;
    template <typename T> using Map = std::map<T, SubMap>;

    template <typename T>
    static Map<T> compressDependencies(Map<T> const& dependencies) {
        Map<T> result;
        for (auto & entry : dependencies) {
            //    ^ less allocations
            auto & subMap = entry.second;
            auto & coMap = result[entry.first];
            std::copy_if(
                subMap.begin(), subMap.end(), std::inserter(coMap, coMap.end()),
                [](SubMap::value_type const& subEntry) { return subEntry.second.size(); }
            );
        }
        return result;
    }
quasimoto ★★★★
()
Последнее исправление: quasimoto (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.