Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Языки и технологии дают вам конкурентное преимущество, а если вы сидите на тех же самых языках и технологиях, что и половина программистов вокруг — о каком технологическом преимуществе может идти речь?
Во всем интернете нет ни строчки его кода, разве что портированные чужие либы с чего-нибудь на Haskell, или с PHP на Perl.
А если вдруг, у вас есть дурацкая привычка комментировать методы с указанием типов принимаемых/возвращаемых аргументов и ваша любимая ИДЕ подсказывает
void test(dynamic a)
{
Run(a);
}
void Run(int z) { ... }
void Run(string s) { ... }а программисту приходится помнить гораздо больше вещей, типа объекты какого типа принимает тот или иной метод.Это домыслы разработчиков статической типизации, на практике (конкретно в Питоне) проблем обычно не возникает, даже если залезть в чужой проект.

А еще это называется свобода.
Но очевидно же, что GC всегда и во всех языках будет гораздо дороже, чем refcounting
управляющий блок shared_ptr'а потокобезопасен, основан на атомиках
[const] T*T&& (если в шаблонную).Ну а сборка мусора у GC вынуждает обходить практически всю аллоцированную память, и?Давно не так. Есть поколения, есть dirty checking.
еще и создает поистине эпические проблемы при попытке задействования своп-файлов. На плюсах при необходимости можно эффективно работать с десятками гигабайт памяти через memory-mapped файлы при небольших объемах физической тогда как та же Java практически вынуждена довольствоваться только доступной физической памятью.В тех задачах, где хочется использовать mmap в java используется nio (FileChannel, ByteBuffer etc) и off-heap storage (который может быть написан с использованием nio или native расширений).
Давно не так. Есть поколения, есть dirty checking.
В тех задачах, где хочется использовать mmap в java используется nio (FileChannel, ByteBuffer etc) и off-heap storage (который может быть написан с использованием nio или native расширений).
Если не прогонять программу через что-то типа ngen, то как минимум будет замедление, потому что сначало нужно скомпилировать промежуточный код в ассемблер....
Тут умные дядьки придумали делать оптимизации сначала на компиляторе Java/C# -> промежуточный код. А потом на компиляторе промежуточный код -> ASM. Вы уверены, что при двойной компиляции мы не теряем часть полезной информации, которую можно было заюзать для оптимизации?
Правильно, оверхеда нет — есть единовременные затраты на jit компиляцию ;)
Вот интересный вопрос: а сколько компилится код с помощью JIT? Не должен слишком долго, а поэтому часть оптимизаций отсекается. Не может быть почти моментальным, иначе не будет никаких оптимизаций.Если говорить за JVM, то она JITит методы только если они вызываются достаточно много раз (10к в server mode, если правильно помню), с учётом набранной статистики вызовов. И может переключить в интерпретируемый режим обратно (разJITить), если ей что-то не понравится.
На c++ разработчик потратит 3 дня на компонент, вручную освобождая память сразу, как только она не нужна, размещая короткоживущие объекты на стеке, не используя string, когда достаточно char* и т.д. На java всё это напишется за день, но без обдумывания низкоуровневых деталей, всё на автомате и по дефолту.
Не смущает что VS написано с использование с#, где тоже есть gc1. Вы уверены, что VS вся написана на C#?
Не смущает, что у Java есть Jit, который в теории может дать пифоманс горячего кода даже лучше, чем у c++«пифоманс», блять. Java и C# еще не доросли до такого уровня, чтобы выдавать подобные характеристики. Я имею в виду не в теории теории, а в реальной теории.
Улыбнуло насчет тормозит вообщеТак тормозит же. Холодный запуск очень медленный, gc stops the world.
Ничего что люди на Java пишут почти real-time приложения?Пруфы, пожалуйста.
2. Не знаю как это может помочь уменьшить нагрузку на GC
3. Возможно и доросли. Ведь для Java есть и AOT компиляторы
> Ничего что люди на Java пишут почти real-time приложения?Вроде да, пишут. Но ЕМНИП там довольно жесткие ограничения на использование памяти, в том числе запрет на создание объектов в куче и, соответственно, никакого GC.
Пруфы, пожалуйста.
Пруфы, пожалуйста.Скорее тут стоит говорить про NRT, т. к. на обычной JRE жесткий RT невозможен. Из забавных NRT-проектов есть Apache Storm (ранее Twitter Storm), игрища вокруг Apache Spark, всякие Apache Zookeeper, Apache Kafka, асинхронка на Akka.
Ничего что люди на Java пишут почти real-time приложения? ))
Для тех 0.001% приложений, для которых этот «жосткийрилтайм» нужен, используют С++, все верно.Хороший пример на тему — народ в какой-то момент, накурившись статей про bigtable и dynamodb написал Cassandra на Java, но нашлись добрые люди, решившие, что БД писать на Java — это не кошерно, работает медленно и всё такое. И запилили свой Hypertable на C++. К моменту, когда у кассандры был опыт боевой эксплуатации, большое количество пользователей, нормальный набор фич, у Hypertable была сырая пре-альфа в течении кучи времени, в которую залить пару сотен Гб без сегфолта было сложно. Зато на C++. В итоге, у кассандры уже второй стабильный major релиз, а hypertable ползёт к 1.0, но использовать её пока стрёмно.
Остальные же 99.999% приложений, люди спокойно пишут на Java и иже с ним, за день.
Answer is probably yes. I'm still fixing bugs time to time but nobody else seems to be active here
Заметил одну крутую оптимизацию. Если человек с первого абзаца придирается к бранным словам, то с ним не получится работать дольше 5 минут. Хотя бы потому, что после моего вопроса «чепушило, какой жопой ты писал этот писец?», пойдет не конструктивный диалог об особенностях решения, а какой-то бред про бранные слова.
чепушило, жопой писал этот писец
Спорим на что-нибудь бесполезное
и чем же данные языки так хороши, что они окажутся популярней джавы? И почему за них будут платить в 3-5 раз больше, если они настолько популярны?
P.S. Выделяете цитаты символом ">" — привычка RedMine?)Почувствовал себя старым пердуном, до сих пор пользующимся plain text email.
Шикарная вводная, второй раз уже перечитываю этот сериал, спустя год. Расскажите за Nim, пожалуйста!
Как я нашел лучший в мире язык программирования. Часть Йо (2.72)