Компания Red Hat инициировала (https://projects.eclipse.org/proposals/eclipse-ceylon) процесс передачи управления над разработкой языка программирования Ceylon (http://ceylon-lang.org/) некоммерческой организации Eclipse Foundation (https://www.eclipse.org), курирующей развитие платформы для создания интегрированных сред разработки и различных проектов на языке Java. Основной целью передачи проекта является воплощение в жизнь независимой от конкретного производителя модели управления, которая позволит привлечь к разработке новых участников и повысить популярность платформы среди пользователей.
Организация Eclipse Foundation утвердила (https://projects.eclipse.org/projects/technology.ceylon)&nbs...приём Ceylon в число проектов
Eclipse и начала процесс интеграции в инкубаторе (http://wiki.eclipse.org/Development_Resources/Process_Guidel.... Кроме дистрибутива Ceylon, включающего компиляторы, утилиты, базовые библиотеки и стандартный набор модулей, в руки Eclipse также перейдут SDK, транслятор Java2Ceylon, сервер Ceylon Herd (https://herd.ceylon-lang.org/) для распространения модулей, интегрированная среда разработки Web IDE, а также плагины для Eclipse IDE и IntelliJ IDE. После перехода под крыло Eclipse Foundation код Ceylon будет распространяться под лицензиями Apache 2.0 и Eclipse Public License 1.0. (ранее, некоторые компоненты поставлялись под AGPL).
Из планов по дальнейшему развитию Ceylon в составе сообщества Eclipse отмечается перевод JVM-бэкенда на ECJ (Eclipse Compiler for Java), завершение реализации средств для обобщённого программирования высшего порядка (higher-order generics), добавление поддержки async/await, обеспечение переносимости с языком TypeScript, реализация в плагине для Eclipse техники отложенной генерации бинарных файлов, интеграция поддержки среды разработки Eclipse Che (https://www.opennet.me/opennews/art.shtml?num=44014).Напомним, что язык Ceylon был создан (https://www.opennet.me/opennews/art.shtml?num=30225) компанией Red Hat в 2011 году с целью избавить Java от устаревших концепций и подходов, которые мешают дальнейшей эволюции языка и достижению более высокого уровня эффективности. Кроме реализации лучших возможностей Java, в Ceylon были заимствованы некоторые дополнительные конструкции из языков Smalltalk, Python и ML. Написанные на языке Ceylon программы и модули могут выполняться в стандартной виртуальной машине Java (JVM) или компилироваться в JavaScript для выполнения в web-браузере или под управлением Node.js. Поддерживается бесшовная интеграция с другими языками, базирующимися на JVM, например, модули на языке Ceylon можно использовать в программах на Java и наоборот.
Язык использует статическую типизацию и спроектирован с оглядкой на простоту изучения, лёгкость восприятия кода и разработку больших проектов, в которых участвует большое число программистов. Синтаксис Ceylon во многом напоминает Си, Java и C#. При помощи Ceylon значительно проще создавать фреймворки и библиотеки классов, а также естественно описывать древовидные структуры (в частности, формировать пользовательский интерфейс). В язык добавлены элементы, упрощающие написание кода, который можно использовать повторно в других проектах.Модули на языке Ceylon упаковываются в архивы .car и помещаются в специальные репозитории. В процессе выполнения приложения нужные модули загружаются сразу из внешнего или локального репозитория, не требуя предварительной установки. Язык поддерживает архитектуру модульной "peer-to-peer" загрузки классов, обладающую такими возможностями как учет требований приложения к версиям модулей и поддержку работы сразу с несколькими репозиториями модулей, как локальными, так и внешними (http://modules.ceylon-lang.org/).
Некоторые (http://ceylon-lang.org/features/) особенности (http://ceylon-lang.org/documentation/1.3/introduction/) Ceylon:
- Статическая типизация (тип любого значения любого выражения может быть определён без исполнения программы), позволяющая выявлять ошибки на этапе компиляции, а не в процессе исполнения;- Отсутствие специальных типов, всё реализовано в виде объектов;
- Именованные и опциональные параметры;
- Nullable-типы (http://en.wikipedia.org/wiki/Nullable_type) (кроме значений базового типа, допускается использование состояний NULL);
- Отсутствие необходимости явного указания геттеров/сеттеров (getter/setters);
- Определение типов для локальных блоков (через ключевое слово "local");
- Удобная организация работы с последовательностями (массивами);
- Реализация функций высшего порядка, аргументом или возвращаемым результатом в которых выступают другие функции;
- Использование для присвоения первоначальных значений (инициализации переменных) оператора ":=";
- Новый синтаксис интерполяции строк;
- Новые типы: Natural, Numeric и т.п.
- Классы, методы и атрибуты выглядят одинаково;
- Использование для определения существующих языковых концепций новых ключевых слов: shared, satisfies, assign, variable, local;
- Упрощение уровней public, protected, private access, visibility;
- Определение inline-функций в стиле Smalltalk.
URL: https://linux.slashdot.org/story/17/08/20/1822257/red-hat-gi...
Новость: http://www.opennet.me/opennews/art.shtml?num=47059
Чем интересны эти тысячу и один jvm-языки?
Авторам интересны. Они играют с ними и JVM. А так все в целом использую обычные компилируемые языки или интерпретируемый.
Полагаю, ЛЮБОЙ язык будет куда интереснее протухшей Ж_а_б_ы. Это фактически "работа над ошибками", создание И РАЗВИТИЕ языка так, как это должна была делать сама Sun/Oracle.
Беда в том, что буквально каждый год, когда разрабы сидят на *опе и не развивают язык - это КОВШ земли на могилу языка. Тот, кто ушёл на другую платформу, это не просто "уехал к маме", а вложил ресурсы в новую платформу и ... таких людей уже не вернёшь новостью "смотрите, мы прикрутили ещё десяток синтаксических сахаринок!" - это потерянные для платформы люди. Оставшиеся консервативные "интыпрайзники" - сплошь УГ и слоупоки, не раскусившие сразу тухляк платформы - на этих бедолагах всё и держится.С ужасом вспоминаю наш кровавый "сервер приложений", который "2+2" решал сотнями строк жабобинсов. Ушёл с него... на Дельфи! О чём не жалел ни разу. Сейчас вот .NET (не Core!) - рабочая лошадка, под которую впервые в жизни ПРИЯТНО ПИСАТЬ!
А лошадке приятно?
Не ссы под лошадь.
.NET действительно хорош, но я бы побоялся так выражаться. Не зря Java является промышленным стандартом. Можно долго и упорно брюзжать слюною с пеною у рта "О достоинствах и недостатках различных языков" - Java токовый язык. Если вы что-то на нем не смогли - это скорее проявление недостаточно квалификации программиста, а не изъян языка.
> Кроме реализации лучших возможностей Java, в Ceylon были заимствованы некоторые дополнительные конструкции из языков Smalltalk, Python и ML.Ну да, ну да. "Некоторые дополнительные Конструкции". Конструкции, понимаешь, Карл? Возьмём из ML что угодно, но только не вывод типов. Вывод типов -- это же фу! :)
Любой явист и ПХПшник знают, что программисту нельзя давать возможность контроля за типами и управление памятью. Если так сделать, то мир схлопнется и наступит всемирный Си.
судя по тому, что во вселенной не бывают стэк оверфлоу и разыменований нулевых указателей, вселенная написана на управляемом языке.
А Черные Дыры?
а что с ними? Это такой /dev/null, нужно же куда-то сливать всяких хлам?
Зато во Вселенной бывает, например, гравитационный коллапс.
Кстати, неоднократно наблюдал жабопрограммы, падающие из-за разыменования нулевых указателей. Как так?
> Кстати, неоднократно наблюдал жабопрограммы, падающие из-за разыменования нулевых указателей.Элементарная безграмотность бывших прогеров на Бейсике. :) ОБЪЯВИТЬ переменную - ещё не значит ИНИЦИАЛИЗИРОВАТЬ. В любом случае, подобные вещи на раз-два отлавливает компилятор (я про C#).
:)Чем-то напоминает подводную лодку на педальном приводе...
На ерланге -- let it crash!
> нулевых указателей, вселенная написана на управляемом языке.Внимание, знатоки! А теперь правильный ответ: https://xkcd.com/224/ https://xkcd.ru/224/
> на управляемом языке
>> на управляемом языке
> https://ru.wikipedia.org/wiki/%D0%A3%D0%...Да! Микрософт-то без дела не сидит и по форумам не ср*т... .. ..... ...... ....или нет?!71
мозги себе не вывернул пока это писал? или только кодом управлять умеешь?
> что программисту нельзя давать возможность контроля за типами и управление памятьюСтранно. Насколько я помню, как минимум управление памятью "явистам" в целом доступно, если под "явистами" понимать не только Sun/Oracle Java.
> мир схлопнется и наступит всемирный Си.Ну, не Си единым. Есть же еще Pascal/Object Pascal/Modula/Oberon... Ada, в конце концов ;)
>Pascal/Object Pascal/Modula/Oberon... AdaЭто мифы древних ITшников. Что-то вроде: "И посмотрел Вирт на Паскаль и ужаснулся. Три ночи и три дня создавал он Оберон. И помогали ему в этом Шекспир, фон Вебер и Вагнер. На четвёртый день получилось гoвно, которое было оставлено Виртом сушиться на безжалостном солнце."
Как будто в сабже нет вывода типов.
что-то я запутался. Kotlin или Ceylon круче? scala и кложура, понятное дело, круче, но сабж
> Kotlin или Ceylon круче?Это в зависимости от того, где задают такой вопрос. Если на собеседовании в JetBrains -- Kotlin однозначно лучше.
Kotlin перспективен для андроид-приложений. Может взлететь для ML. Ceylon в чём-то проработан лучше, может взлететь для бизнес-приложений (таки RedHat). scala - академики заигрались, в промышленных задачах уже точно не взлетит (переусложнённый язык, дорого искать программистов, проблемы с поддержкой, скала надоела ломанием совместимости при переходе с версии на версию) и кложура - интересная концепция, но уже тоже наигрались....
Сколько платят сейчас в джет брайнс?
два килограмма еды в день.
Kotlin во всю применяется для бизнес приложений. О цейлон только слышали, и то не все.Редхет и так порядно нагадила в мире джавы. Хибернейт травмировал (а кого-то — погубил), целое поколение разработчиков. Хватит.
> Kotlin перспективен для андроид-приложенийЭто чем жe?
> что-то я запутался. Kotlin или Ceylon круче?По степени продвигаемости языка - конечно Kotlin. ЖытБрынзы - это не "всего понемногу", а конкретно программерски-ориентированная контора, потому и Котлин - очень даже клёвый язык, причём даже в сравнении с C#.
> scala и кложура, понятное дело, круче
Дилетанта видно за версту. :)
Шо котлин, шо цейлон кривые поделки
Количество языков программирования напоминает мне про притчу о вавилонской башне. Столько их развелось, что пора уже языки массово уничтожать. Нет, всё плодят этих уродцев.
> Количество языков программирования напоминает мне про притчу о вавилонской башне. Столько
> их развелось, что пора уже языки массово уничтожать. Нет, всё плодят
> этих уродцев.Подбери из существующих языков такой, на котором можно было бы писать и ядра/драйвера, и свистелки на веб-страницах. Придумывать собственный язык нельзя, т. к. будет именно что "очередной язык".
Делать предметно-ориентированные языки на языке для создания таких языков программирования.
> Делать предметно-ориентированные языки на языке для создания таких языков программирования.языки на языке для языков
Да.
> языки на языке для языковДля этих целей есть Ruby
На фиг. Мало того, что язык будет состоять из дыр (создание языка - штука далеко не тривиальная, и на каждый чих тратить кучу ресурсов не будешь), так ещё останешься с кодом на какой-то хрени, которую никто не знает и уж точно без наработанных best practices.
Конкатенативные языки вполне подходят для этого.
Один для драйверов, один для свистелок, зачем сотню языков для свистелок? Такое впечатление, что каждый свистун только и думает - "возьму и напишу свой язык для свистелок с синтаксисом лёгкого поведения".
>Один для драйверов, один для свистелокМогучие сишники готовы самовыпилиться из всех задач кроме написания ОС? гы-гы...
Во-первых, потому что разных "свистелок" с разнообразными требованиями раз в миллион больше, чем драйверов.Во-вторых, потому что люди - сюрприз - несовершенны и пытаются находить лучшие подходы к решению своих задач. При этом критерии "лучшего" - разные.
Си же(свистелки через emscripten).
> Подбери из существующих языков такой, на котором можно было бы писать и
> ядра/драйвера, и свистелки на веб-страницах.C#
Если ввести в него указатели (это месяц работы), можно вообще что-угодно писать! А сам язык хорош тем, что прост, легко понимаем, конструкции - привычные, это практически "причёсаный C++".
Не нравится мелкософт - пожалуйста, есть D! (он даже лучше C#) Там вообще можно GC отключить!
На Rust пишут и ядро и веб-свистелки (через компиляцию в JS).
Почему Eclipse Foundation?... Почему не Apache? Или Eclipse теперь тоже захоронениями занимается?
> Почему Eclipse Foundation?... Почему не Apache? Или Eclipse теперь тоже захоронениями занимается?Они против проприертарщиков не борзеют, ведут себя правильно, берут кровавый нал у микрософта. Подстилка должна знать свой место.
http://www.opennet.me/openforum/vsluhforumID3/112025.html#54
http://techrights.org/2016/03/08/microsoft-eee-eclipse/
А какая в принципе разница? (аксиома_Эскобара.огг)
Шапка хорошая давно в ней работаю
Даже летом? Я вот летом головной убор не ношу...
кстати, временами заметно
Красношляп - классический баблососный бизнес, не будь их - ВООБЩЕ НИЧЕГО не изменилось бы в мире Линукс! А так что с ними 1%, что без них. :)
>среди жава-кладбищ тоже появилась конкуренцияВ жабе как раз допилили бесплатный pauseless GC Shenandoah (платные уже 100 лет в обед есть). Теперь на жабке можно ещё больше софта написать (хотя она и так на первом месте ;)))))
пруфы предъявите по пунктам, пожалуйста
1. шенанда без пауз
2. платные, которые 100 лет без пауз
>платные, которые 100 лет без пауз1. в прямых руках без пауз, у сишников конечно всё будет тормозить
2. Azul C4 напримерВот хорошее чтиво в тему http://lex-kravetski.livejournal.com/301063.html
А, ещё ж бесплатный и совершенно pauseless Epsilon гы-гы-гы
Доо, прямо второй Кнут, бгг.
Ещё суровая правда жизни: http://pic.maxiol.com/images/java.jpg
От пустоты этих слов раздаётся эхо. "Удобство", "Корректность", "Безопасность"...Среди всего списка слово "производительность" - единственное, что можно более-менее просто измерить. Именно поэтому оно на последнем месте.
> Среди всего списка слово "производительность" - единственное, что можно более-менее просто измерить.И поэтому сишные поделки обычно умеют 10-30% функционала от жабового оригинала, т.к. сишники мастурбраузят на скорость, а остальное в их мирке не существует.
Тут уже сишные гуру накидали примеров: sphynx vs lucene, scylla vs cassandra.
Продолжать можно до бесконечности...
Ты будешь удивлён, но я лично остановился на си не из-за скорости программ, а из-за удобства чтения кода. В нём не бывает неоднозначностей (например перегруженных операторов), программист всегда имеет возможность СОВЕРШЕННО ТОЧНО сказать, что происходит. На любом уровне.Ещё потому что нету лишних ключевых слов типа class или new. Зато есть уникальные ключевые слова типа restrict и union.
О скорости не беспокойся, т.к. скорость вообще от языка мало зависит.
> И поэтому сишные поделки обычно умеют 10-30% функционала от жабового оригинала
блабла, основанные на теории и размышлениях. Сишные программы имеют абсолютно любую ширину функционала. Зависит от задачи. Тот же git, или браузеры. На такое вообще есть "жабовые оригиналы"?
П.С. если ты запустил однострочник - это просто значит, что ты запустил другую уже написанную кем-то программу. То же самое, что подключил библиотеку.
>программист всегда имеет возможность СОВЕРШЕННО ТОЧНО сказать, что происходитСразу видно какой ты сишник. Гугли c++ undefined behaviour. Про -O3 тебе бисер метать не буду.
>Тот же git
Я понимаю, синдром утёнка не лечится. Ты думаешь, что git лучший из VCS? Хи-хи...
>браузеры
Движков есть несколько, из того я плотно использовал для web scraping - htmlunit.
А вот у вас чё-то стагнация, кроме блинка ничего путнего нет. Мазилла на rust пошла.
Готов спорить на глаз, что через 5 лет гугл не стартанёт переход на go? :)
> Готов спорить на глаз, что через 5 лет гугл не стартанёт переход на go? :)Сишники не спорят на части тела. Поэтому их так много. Я не сомневаюсь, что гугл перейдут на go, потому же почему IBM перешли на джаву. Это их внутренняя проблема, которая немного их подвинет со временем.
А ты не в курсе НАСКОЛЬКО мозилла перешла на раст? Прямо так они теперь без GTK, GStreamer и всего остального?
> Ты думаешь, что git лучший из VCS?
Не назвал, слив засчитан. Мне лично SVN больше нравится. Это просто пример.
> Гугли c++ undefined behaviour. Про -O3 тебе бисер метать не буду.
Ты не знаешь о чём пишешь. Undefined behaviour происходит в результате ошибки программиста на любом языке. Это как словить NPE. Если твоя программа имеет ошибку в логике - не надо ждать, что она будет работать правильно.
Если ты должен был записать число в одну ячейку массива, а записал в другую в результате ошибки - это будет undefined behaviour на любом языке. Любители "управляемых языков" скажут, что у них что-то отловится. Только ЧТО-ТО. Проверится указатель на 0. Класс.
Примерно то же касается и -O3. Нужно просто понимать, что компилятор имеет право делать, а что нет. Проблема с -O3 может возникнуть ТОЛЬКО если ты написал программу неправильно.
Например не указал volatile. Нужно просто знать стандарт, причём он очень коротенький (возможно даже самый короткий).
>> Гугли c++ undefined behaviour. Про -O3 тебе бисер метать не буду.
> Ты не знаешь о чём пишешь. Undefined behaviour происходит в результате ошибки
> программиста на любом языке.Ты так и не погуглил. Чему равно (++i)++ , братишка? 8)))
> Чему равно (++i)++ , братишка?А нормальные примеры есть? В данном случае i + 2. Если чему-то другому - значит это баг компилятора.
> Если чему-то другому - значит это баг компилятора.Это я пожалуй ерунду написал, на -О3 действительно может компиляться по-разному.
Но пример меня не убеждает совсем потому, что он бессмысленный. Никто никогда так не напишет.Вот такой пример осмыслен:
a[++b]++и он на -О3 будет полностью определён.
> Это я пожалуй ерунду написал, на -О3 действительно может компиляться по-разному.
> Но пример меня не убеждает совсем потому, что он бессмысленный. Никто никогда
> a[++b]++
> и он на -О3 будет полностью определён.Ладно, я погуглил для тебя. Изучай! 8)
http://blog.llvm.org/2011/05/what-every-c-programmer-should-...
Потом вот это:
https://wiki.theory.org/index.php/YourLanguageSucks#C_sucks_...
Самое эпическое:
-Variable length arrays are usually placed on the stack, meaning that passing in too large of a size is unsafe; it will just stack overflow the moment you use it, made worse by the fact there is no way to tell your allocation is too big.
С этим и сам сталкивался
-Debugging optimised code can sometimes make no sense due to aggressive compiler optimisation.
-Data safety in multi-threaded programs is not really guaranteed by the language; things you think are atomic aren't necessarily without using (C11, but see above) atomics. Getting torn reads and writes is extremely easy, and no tools will ever warn you it's happening.
так что не надо ляля. се по предсказуемости результата до жабы педалить и педалить. ;)
> it will just stack overflow the moment you use it
> -Debugging optimised code can sometimes make no senseТо, что ОНИ выдают за "преимущества" на самом деле просто отсутствие возможностей.
Нет выделения на стеке - нет stack overflow. Не выделяй.
Захочешь выделить 1 kb - выделишь.Нет оптимизаций - нет проблем с отладкой. -О0 -g и наслаждайся.
> -Data safety in multi-threaded programs is not really guaranteed by the language;
сразу понятно, кто это писал
(++ hip[100]->r) ++
> things you think are atomic aren't necessarily without using (C11, but
> see above) atomics.Ну это вообще. В рамочку.
> Getting torn reads and writes is extremely easy,
> and no tools will ever warn you it's happening.Бред. Не умеешь обращаться с атомиками - используй мьютексы, кто мешает-то.
Тулзы есть. Тот же clang.> так что не надо ляля. се по предсказуемости результата до жабы педалить
> и педалить. ;)А что если я изначально хвалил си не за предсказуемость результата, а за лёгкую читаемость кода? Ну и про жабовую предсказуемость не надо. Её просто нет. Попробуй не на той версии jvm свою программу запустить для начала.
>>платные, которые 100 лет без пауз
> 1. в прямых руках без пауз, у сишников конечно всё будет тормозитьНеужели та самая хваленая прямизна рук жабистов, позволяющая им запускать grep таким образом, чтобы он падал через час с OOM на сервачке 96 ГБ ОЗУ, но почему-то спокойно обрабатывал ту же задачу, максимум за минуту, на древних ноутбуках не-жабистов? :)
"Я же тебе говорил — место заколдованное. А ты все: 'руки из жопы, руки из жопы'"
> Неужели та самая хваленая прямизна рук жабистов, позволяющая им запускать grep таким
> образом, чтобы он падал через час с OOM на сервачке 96 ГБ ОЗУВсё не можешь забыть как си слил жабе? :)
> но почему-то спокойно обрабатывал ту же задачу, максимум за минуту
Не ври, ты решил другую задачу, используя совершенно другие ключи (я даже не читал что именно).
>> Неужели та самая хваленая прямизна рук жабистов, позволяющая им запускать grep таким
>> образом, чтобы он падал через час с OOM на сервачке 96 ГБ ОЗУ
> Всё не можешь забыть как си слил жабе? :)О, так там теперь была замешана жаба? Это такая травматическая амнезия? :)
>> но почему-то спокойно обрабатывал ту же задачу, максимум за минуту
> Не ври, ты решил другую задачу, используя совершенно другие ключи (я даже
> не читал что именно).Ты даже не читал, но точно знаешь? Да ну:
https://www.opennet.me/openforum/vsluhforumID3/111658.html#29
> лютый жабист__
> дано два файла с ОГРН (число 13 символов), в одном 4.5m, в другом 800k строчек. Надо сделать третий файл с содержимым f1 которого нет в f2.
> grep -v -x -f f2 f1 >f3
> съел 2.5ГБ рамы и задумался уже на много минут. Сервак с 12 ядрами, 100ГБ ОЗУ....
> grep сишный через час выпал в OOM на сервере с 96ГБ ОЗУ.
> не_жабисты$ time awk 'ARGIND==1{x[$0]=1}ARGIND==2&&!($0 in x)' <(seq 1000000000000 1000005000000|shuf) <(seq 1000003000000 1000009000000|shuf) |wc -l
4000000real 0m17.431s
user 0m10.712s
sys 0m0.232s
$ _$ time grep -vFf <(seq 1000000000000 1000005000000|shuf) <(seq 1000003000000 1000009000000|shuf) |wc -l
4000000real 0m55.920s
user 0m50.092s
sys 0m0.860s
$ _
> есть старенький ноут с i5 (первым еще) и "слегка" поменьше рамы.% time grep -v -c -F -f f2 f1
3000000
grep -v -c -F -f f2 f1 15,42s user 0,57s system 99% cpu 16,015 total # ~700MB озу% time awk 'NR==FNR {a[$0];next} !($0 in a){print $0}' f2 f1|wc -l
3000000
awk 'NR==FNR {a[$0];next} !($0 in a){print $0}' f2 f1 11,76s user 0,65s system 99% cpu 12,411 total
wc -l 0,40s user 0,05s system 3% cpu 12,334 total #~1ГБ
Просто кое-кто пупырчатый увидел в мане (или скорее нашел и скопипастил в хипстобложике) пример загрузки с ключем "-f" для загрузки файла образцов. А про то, что образцы будут читаться как регулярки (ага, все 4 мульена) то ли не дочитал, то ли не понял.
И до следующего ключа "-F, --fixed-strings" указывающего грепу, что из файла мы загружаем простые строки, а не регулярки - не дочитал. Или не знал, а потом ещи и забыл.
В итоге (как обычно у жабистов) - фейл на ровном месте, но виноваты или злая сишка с плюсами или окружение, не осилившее предугадать желания и чаяния джаваистов :)
Читаю что было написано раньше про греп:
>съел 2.5ГБ рамы и задумался уже на много минут. Сервак с 12 ядрами, 100ГБ ОЗУ.накидал за 3 минуты прожку на жабе на РЕГЕКСАХ
http://pic.maxiol.com/images/ll.jpg
(тут ищутся 700k в 4.5м без инверсии, но сам понимаешь, разницы для производительности ноль)запускаю, ест 2.496g и да, тоже задумалось. Но оснований есть ещё ОЗУ НЕТ.
Итого выводы:
-у сишечки с регексами плохо
-блабла про потребление памяти жабы - это блабла
-либо у grep кривая архитектура, что он сначала сьел 2.5 гига, а через некоторое время ушёл в OOM, либо там сидит баг и grep течёт. Вот тебе бабушка и ... "Бедолага не осилил связку new/delete". Удачи с багрепортами или патчами, если познаний хватит. :)
Кстати, 2.49ГБ это top говорит.А жаба
System.out.println("used memory: " + ((Runtime.getRuntime().totalMemory()-(Runtime.getRuntime().freeMemory())) / 1048576) + " MB");
System.out.println("allocated memory: " + (Runtime.getRuntime().totalMemory() / 1048576) + " MB");
used memory: 619 MB
allocated memory: 1825 MBхихи
Последний гвоздик. Пошёл в изначальную ветку, создал точно такие же файлы как у тебяseq 1000000000000 1000005000000|shuf>f1
seq 1000003000000 1000009000000|shuf>f2потом однострочник на жабе
f1.removeAll(f2);
в одну сторону
found 3000000 in 4525 ms
used memory: 1070 MBв обратную
found 4000000 in 5024 ms
used memory: 1059 MBсервак, кстати, по процу намного слабее твоего i5 (для однопоточной проги)
Кстати, ты жёстко наврал про потребление ОЗУ у grep-а.
запускаем date && grep -v -x -F -f f2 f1 | wc -l && date
Thu Aug 24 11:48:18 MSK 2017
3000000
Thu Aug 24 11:48:56 MSK 201740 сек, Карл.
И 4 гига ОЗУ.ps axu | grep grep
root 23826 98.5 4.7 4860268 4741684 pts/4 R+ 11:48 0:26 grep --color=auto -v -x -F -f f2 f1
CentOS7 64bit. Видимо, у меня не только grep неправославный, но и весь CentOS.
Без ключа -x grep выдаёт не 3000000, а 1 запись. Ты бы тестил, что предлагаешь.
> Без ключа -x grep выдаёт не 3000000, а 1 запись.Патамучта ты даже не осилил правильно скопипастить и не заметил ключ "-с"?
> Ты бы тестил, что предлагаешь.Ты бы уже осилил ман грепа, что ли.
> -x, --line-regexp
> Select only those matches that exactly match the whole line
>> Без ключа -x grep выдаёт не 3000000, а 1 запись.
> Патамучта ты даже не осилил правильно скопипастить и не заметил ключ "-с"?Жаль что модератор удалил результат очередного "героического преодолевания жабистами трудностей, ими самими же созданными".
Можно было бы тыкать еще долго - прям-таки классический фейл из области "почему следует или осилить точную копипасту или же научится смотреть в ман":"grep -c -Ffoobarf f1 f2|wc -l"
и такая искренняя и не прикрытая обида, что оно выдает в результате 1 запись :)
> и такая искренняя и не прикрытая обида, что оно выдает в результатеНаверное это опеннет глючит, анонимус всё пишет-пишет волшебную команду с которой grep не тормозит, а она всё не пишется 8))))) В общем, я слив уже засчитал, выдыхай!
Я так понял, ты не программист, свой код прислать не можешь. Бывает...
>> и такая искренняя и не прикрытая обида, что оно выдает в результате
> Наверное это опеннет глючит, анонимус всё пишет-пишет волшебную команду с которой grep
> не тормозит, а она всё не пишется 8)))))Т.е. ты забыл, о чем был твой же комментарий, удаленный из-за нецензурщины? Бывает. Травматическая амнезия, она такая!
> потом однострочник на жабе
> f1.removeAll(f2);Отличный однострочник! Как и весь код в виде скриншота!
Кстати, не подскажите словарь "жабистский айтишный - нормальный айтишный"?
А то вне тусовки Джа-джа-вы "однострочник" означает немножечко другое.> в одну сторону
> found 3000000 in 4525 ms
> used memory: 1070 MB
> в обратную
> found 4000000 in 5024 ms
> used memory: 1059 MBОтличное достижение - аж в два раза быстрее питона! Питон ведь обогнать так тяжело, он же такой шустрый! :)
> сервак, кстати, по процу намного слабее твоего i5 (для однопоточной проги)Самый первый из линейки i, ноутбучно-мобильный Arrandale? Ну да, ну да.
> Кстати, ты жёстко наврал про потребление ОЗУ у grep-а.
> И 4 гига ОЗУ.Конечно вру. И все остальные врут, потому как у всех запостивших выходят заметно меньше даже двух гигов ОЗУ.
Ну или руки у нас иной кривизны, чем у жабистов - кто знает :)
> Отличное достижение - аж в два раза быстрее питона! Питон ведь обогнать
> так тяжело, он же такой шустрый! :)Не факт, что быстрее. Код ведь не зря в виде картинки.
Используют собственный таймер и очень элегантно «забывает» зачесть чтение первого файла и компиляцию регексов )
> Используют собственный таймер и очень элегантно «забывает» зачесть чтение первого
> файла и компиляцию регексов )сишники такие сишники. возьми да скомпиляй.
>> Код ведь не зря в виде картинки.
>> Используют собственный таймер и очень элегантно «забывает» зачесть чтение первого
>> файла и компиляцию регексов )
> сишники такие сишники. возьми да скомпиляй.
>> code.jpg
> возьми да скомпиляй.Если бы я не видел вашу братию вживую, решил бы, что ты так троллишь )
> Отличное достижение - аж в два раза быстрее питона! Питон ведь обогнать
> так тяжело, он же такой шустрый! :)В 10 раз быстрее, чем сишный греп. Что подтвержает мой первоначальный тезис, что coreutils писали во времена "640k хватит всем" и по современным меркам это УГ.
>> Отличное достижение - аж в два раза быстрее питона! Питон ведь обогнать
>> так тяжело, он же такой шустрый! :)
> В 10 раз быстрее, чем сишный греп. Что подтвержает мой первоначальный тезис,
> что coreutils писали во времена "640k хватит всем" и по современным
> меркам это УГ.А, ну раз так говорит спицеолист, не осиливший скопипастить пример запуска грепа, нормальный замер времени выполнения в своем коде и разобраться с потреблением памяти приложением, то все наверное так и есть :)
> Кстати, 2.49ГБ это top говорит.
> А жаба
> used memory: 619 MB
> allocated memory: 1825 MB
> хихиПросто пор(a)жающие воображение и вызывающие лютейшую зависть познания! :(
И правда, пусть RES и отображает отожранную ОЗУ с точки зрения системы, но если жаба пишет, что использует на самом деле только 619 из отожранных 2500, то сразу прям от сердца отлегает и легче становится )
> И правда, пусть RES и отображает отожранную ОЗУ с точки зрения системы,
> но если жаба пишет, что использует на самом деле только 619
> из отожранных 2500, то сразу прям от сердца отлегает и легче
> становится )Искрометный юмор сишников, чем греп упал с потреблением 100гиг. "УГ"арай дальше...
>> И правда, пусть RES и отображает отожранную ОЗУ с точки зрения системы,
>> но если жаба пишет, что использует на самом деле только 619
>> из отожранных 2500, то сразу прям от сердца отлегает и легче
>> становится )
> Искрометный юмор сишников, чем греп упал с потреблением 100гиг. "УГ"арай дальше...ЧСХ - только у жабиста. Который даже толком скопипастить не может (см #82,#88). Но ты продолжай, продолжай.
> накидал за 3 минуты прожку на жабе на РЕГЕКСАХ
> http://pic.maxiol.com/images/ll.jpg
> code.JPGЭто ... надеюсь, что ОНО не передается форумным путем o_O
> запускаю, ест 2.496g и да, тоже задумалось.
> -блабла про потребление памяти жабы - это блаблаЯснопонятно :D
> Вот хорошее чтиво в тему http://lex-kravetski.livejournal.com/301063.htmlБедолага не осилил связку new/delete, потому что не научился ещё писать структурированный код. Теперь он думает, что этот навык ему заменят сборщик мусора и объектная модель. Готовый жабист, чо.
>> Вот хорошее чтиво в тему http://lex-kravetski.livejournal.com/301063.html
> Бедолага думает, что этот навык ему заменят сборщик мусора и объектная модель.Можно уточнить какую модель вы осилили, коли не объектную, для проектов уровня Фотошоп? Название вашего продукта?
Мне всегда смешно когда сишники в уме делают ООП==java. В жабе никто не мешает хреначить процедурки как в могучем си, только надо ли так делать?
> Можно уточнить какую модель вы осилили, коли не объектную, для проектов уровня Фотошоп? Название вашего продукта?Да, вы правы, не надо о грустном. Давайте лучше обсудим мои личные достижения :)
> Мне всегда смешно когда сишники в уме делают ООП==java. В жабе никто не мешает хреначить процедурки как в могучем си, только надо ли так делать?
"Сишнику" никто не мешает использовать объектно-ориентированный подход даже в Си, не говоря уж о С++ или той же Джаве. А вот жабист, у которого в подкорке прошито "программирование == ООП", при виде программы, написанной без единого класса, впадает в ступор и бормочет: "а зачем надо было так делать?" А уж если он узнает, что в этой программе использовался УКАЗАТЕЛЬ, так он просто падает на пол и начинает биться в конвульсиях...
> "Сишнику" никто не мешает использовать объектно-ориентированный подход даже в Си,Посмеялся.
> А уж если он узнает, что в этой программе использовался УКАЗАТЕЛЬ, так он просто падает на пол и начинает биться в конвульсиях...
Забористо.
>> "Сишнику" никто не мешает использовать объектно-ориентированный подход даже в Си,
> Посмеялся.Сюрприз! Все именно так и пишут!
>>> "Сишнику" никто не мешает использовать объектно-ориентированный подход даже в Си,
>> Посмеялся.
> Сюрприз! Все именно так и пишут!Пример наследования на ansi c не затруднит, благородного дона? 8))))
> Пример наследования на ansi c не затруднит, благородного дона? 8))))FFmpeg. Структура AVPicture внутри AVFrame.
Это если со статической типизацией.Короче, структура внутри структуры.
С динамической - GTK, и всё, что на нём, GSTreamer.
Наследование на struct-ах? Кому-то надо почитать про ООП (не мне)...
> Наследование на struct-ах?Ха-ха. Никто, правда, про наследование не упоминал, но у жабиста шаблон: если есть "объект" значит должно быть "наследование". А то, что в реальном мире бывают объекты, не требующие наследования, у жабиста в голове не укладывается. У него там "объектная модель"-то еле-еле помещается...
> Наследование на struct-ах? Кому-то надо почитать про ООП (не мне)что тебя смущает в наследовании на struct-ах ?
>> Наследование на struct-ах? Кому-то надо почитать про ООП (не мне)
> что тебя смущает в наследовании на struct-ах ?И что у вас инкапсулировано в этот struct? Какие методы? :)))
В противной жабке 4 строчками кода можно получить например HashSet который не ест null-ы или там определенные значения. Это и называется наследованием.
> И что у вас инкапсулировано в этот struct? Какие методы? :)))Какие ты сам туда вставишь. В Си ты имеешь то, что видишь, а не таскаешь за собой с каждым struct-ом по умолчанию кучу методов, которыми ты никогда не воспользуешься, но которые будут всё равно присутствовать и отжирать ресурсы.
> В противной жабке 4 строчками кода можно получить например HashSet который не ест null-ы или там определенные значения. Это и называется наследованием.
Кхм. Вообще-то наследование - это нечто другое...
В вашем понимании наследование - это унаследовать то что вам не нужно? Давно собираю такие перлы от неосиливших. +1
Эксперты опеннета во всей красе...
> И что у вас инкапсулировано в этот struct? Какие методы? :)))Что инкапсулируешь - то и будет инкапсулировано.
Например struct PARENT положил в struct CHILD. Все методы к PARENT (которые принимают указатель на него) можно применить и к CHILD.
> В противной жабке 4 строчками кода можно получить например HashSet который не ест null-ы или там определенные значения. Это и называется наследованием.
Это называется готовая реализация HashSet. При чём тут наследование.
Думаю, смущает именно отсутсвие этого самого наследования в наследовании на struct-ax.
> Думаю, смущает именно отсутсвие этого самого наследования в наследовании на struct-ax.ну, если наследование - это когда class one : public two , то возможно. Действительно, откуда наследование в языке, не поддерживающем ООП?
>> "Сишнику" никто не мешает использовать объектно-ориентированный подход даже в Си,
> Посмеялся.Было бы странно ожидать другой реакции. Смеются над тем, чего не понимают, а жабисту понять внутренее устройство, например, файловая системы в Линкусе просто физиологически невозможно.
https://lwn.net/Articles/444910/
https://lwn.net/Articles/446317/
какая ирония.
еще один язык пытающийся похоронить java сам отправляется на кладбище.
>похоронить javaОни сдались, оракл их в этом уделал.
О чем это вы?
Следующим на свалке окажется Kotlin. Надеюсь, JetBrains вместе с ним.
Как раз после такого шага от редхат Ceylon воспринимается мной более серьезно. Это и есть развитие.