Потому что в США отличники идут руководить, четверошники к станку, а троишники либо пытаются в бизнес либо никуда. Так же в вузах. Схема «2 недели на сдачу лабы или не зачет по предмету». Попросить у одногруппника списать — маленький суицид. В такой схеме результат работы это что-то типа (5 + 4) / 2 = 4.5.
У нас в СНГ же всё совсем иначе. Если ты не помог кому-то пробиться за счет себя, своего труда, своих лаб и прочего или просто не дал списать, то ты последняя мразь и предатель. На руководящие должности ставят троишников, т.к. четверошников ставят к станку, а отличники либо валят, либо идут в ТОП-3 компаний и в регионах не задерживаются. Итого ярко выражен «синдром хорошиста». В такой схеме результат работы это что-то типа (3 + 4) / 2. В итоге ненужные рынку 3.5, но на которые, в целом, можно жить/существовать. Да и в СНГ-вузах ты не можешь сказать, что такой-то тунеядец мешает тебе учиться и получать знания. СНГшные вузы и школы больше похожи на тюрьмы. Где руководство не может ничего и всем заправляют жлобы-троишники-понаехи. Конечно, есть исключения, но это 2-3 кафедры на 1 ВУЗ и узнать именно о них заранее сложно, если ты явно не знаешь. Например Парфеновский ИТИП в ИТМО.
Извините конечно, но я вас не понимаю. Никто (в том числе и я) не спорит, что США может нанести разгромный удар по России, конечно перехватить 1000 КР нереально и они могут уничтожить большинство стратегических объектов. Но если подходить реально, то я сомневаюсь, что можно подвести АУГ (авианосные ударные группы) или даже подводные лодки с КР к России со всех сторон и остаться незамеченным. Тем более когда ситуация располагает и все навострили ушки :)
Не говоря уже о том, что КР не могут стрелять по мобильным целям и нету гарантии 100% поражения БР шахтного базирования, даже со стратегическими БЧ. И дальность их ограничена.
А статью можно разбить в пух и прах по многим аспектам. Я немного расскажу про реальный прогресс в перехвате МБР, а точнее в реальном его отсутствии. И остального по немногу.
Во первых, ихние утверждения про то, что КР могут наносить удары по мобильным установкам «ТОПОЛЬ-М» полный бред, нет никаких реальных (а не из фильмов) средств по полному слежению за мобильными установками.
Спутники очень ограничены, как по погоде, так и по времени прохода. Во вторых, нельзя ударить по установке с помощью КР, потому-что она может работать по стационарным целям, не говоря о том, что наводиться она с помощью GPS который можно успешно глушить, а инерциальная система недостаточно точна, глушение GPS еще доставит проблем и авиаударам (если даже допустить, что самолеты смогут долететь на достаточное расстояние и успеть открыть огонь до пуска МБР). Посмотрите на статистику пусков-попаданий КР в Югославии, их эффективность переоценена авторами статьи. Я даже не стану говорить, про то что МиГ-31 или ЗРК средней и большой дальности (ТОР, КУБ, БУК, С-300, С-400 и т.д.) которые прикрывают стратегические объекты — могут эффективно сбивать КР. Закидать тапками конечно можно, но все же.
Далее, по перехвату МБР.
Программы KEI (Kinetic Energy Interceptor) и MKV (Multiple Kill Vehicle) — разрабатываемые заатмосферные кинетические перехватчики, которые в перспективе могли бы перехватывать БЧ МБР. Они по ТЗ должны были перехватывать объекты со скоростью до 10км/сек. Обе программы закрыты в 2009 году.
RIM-161 (SM-3) входит в состав системы AEGIS (Иджис), сейчас их количество на кораблях очень ограничено. И поставлены они далеко не на сотни кораблей.
Да, они перехватили спутник, но до этого две недели суперкомпьютер просчитывал траектории, а корабль стоял прямо под траектории ракеты и в её перигее и траектория была известна с точностью до миллиметра, в итоге спутник был перехвачен на высоте 247 км. ТТХ системы таковы, что они позволяют обнаружить цели на высоте до 320км, когда в апогее МБР летит на высоте более 1000км!
Так что, реально для перехвата МБР система AEGIS не готова, как на уровне целеуказания, так и на уровне энергетики ракеты, о реальном перехвате РГЧ (разделяющаяся головная часть) МБР в боевых условиях — тут даже близко речи нету. Даже если будет целеуказание из вне, за то время пока ракета летит — корабль под её траекторию не поставишь.
То же самое и с системой THAAD, там еще более скромные характеристики, по итогам — обе системы AEGIS и THAAD могут эффективно перехватывать только БРСД (Баллистические ракеты средней дальности). Или в крайнем случае одиночную МБР на начальном участке, но вокруг России таких кораблей не наставишь, да и есть варианты по начальному участку не над водой.
Угрозу представляет только разрабатываемая система GMD с перехватчиком GBI (Ground Based Interseptor), но во первых — их собираются разместить только 50 штук, а в Польше их отказались размещать (это было бы конечно не приятно), а во вторых — опять же, против массированного ядерного удара никакое их количество не поможет, в третьих — для наших ракет сейчас разрабатываются маневрирующие блоки МБР (Есть ли они сейчас — мне не известно), которые делают кинетический перехват просто невозможным. По совокупности, можно сказать, что данная система разрабатывается с оглядкой на страны изгои, вроде Ирана или Северной Кореи, потому-что небольшое количество МБР с моноблочными и не маневрирующими БЧ — они будут вполне в состоянии эффективно перехватывать.
Airborne Laser и лазеры вообще. По воздушным лазерам, тот боинг летающий с лазером, это концепт, до реального боевого перехвата ему далеко, по многим причинам. Время подготовки его велико, выстрелы он может делать с большим перерывом и ОЧЕНЬ ограниченное количество (сейчас там все плавится после первого), а вот системы защиты (На Р-36 они уже есть) придумать не сложно, начиная от вращения ракеты по оси, заканчивая зеркальным покрытием, укороченным взлетом. Про Россию — тут вообще даже речи нет, максимальное теоретическое расстояние перехвата этого боинга 600км, этого явно не достаточно. В статье сказано, что он сможет перехватывать ракеты запущенные с ПЛ, ха! даже если предположить, что сможет… то беспрерывно стрелять он не сможет из за перегрева, что тогда — над каждой ПЛ будет по 20-30 боингов кружить? :)
Про наземные лазеры — это еще более фантастично, не говоря уже про их зависимость от погоды углероду-углеродные композиты из который сделан ББ могут выдержать более 40 МВт на кв. м к тому же такие УУКМ переизлучают тепло, резко уменьшая радиационную( тепловое излучение) составляющую, так что лазером сбить такую ББ можно разве, что с ядерной накачкой… да и то не факт. Тем более, что БЧ МБР входит в атмосферу на скорости более 7 км/с (!) она окружена плазмой, которая не может не влиять не преломление лазера.
В космосе же размещения оружия запрещено, но там теплоотвод еще более сложен… разве что утыкать десятками тысячами лазеров все там.
Так что, подведя итог, перехват МБР — до сих пор крайне сложная задача, а гарантированный перехват массированного ракетно-ядерного удара это фантастика, её на многие годы вперед и ею и останется.
Это конечно не значит, что не нужно строить и разрабатывать, но и паниковать тоже не следует.
В моем комментарии, конечно есть не точности, но в целом все именно так. по МБР вообще много чего интересного есть, были модификации Р-36ОРБ с теоретически неограниченной дальностью, которые увы сняли с вооружения по договору с США о неразмещении оружия в космосе.
Всё описанное ниже касается любых языков (разумеется, кроме тех, где нет поддержки исключений).
Большая часть проблем связанных с обработкой исключений вызвана тем, что ошибки и исключения смешивают в одну кучу. Необходимо отличать одно от другого, причём ошибки нужно возвращать.
Изначально всё пошло от того, что когда появились исключения их начали использовать вместо возвращения ошибок. Основных причин было две: во-первых возврат ошибок в языках где нет удобной поддержи кортежей приводил к необходимости смешивать в возвращаемом значении два типа данных (результат и ошибку) что всегда воспринималось как не элегантный подход от которого с радостью избавились; во-вторых обработка ошибок дело нудное и сложное, а исключения дали возможность с (относительно) чистой совестью избавиться от обработки ошибок здесь и сейчас, и отложить её «на потом».
Суть исключений не в том, что ими можно сигнализировать об ошибках, и не в том, что эти ошибки можно удобно сгруппировать по классам и обрабатывать фильтруя по этим классам, а в том, что исключения раскручивают стек! Поэтому выкидывать исключения нужно только тогда, когда действительно необходима именно раскрутка стека — т.е. при возникновении критической ошибки, т.е. такой, после которой нельзя восстановиться и всё-таки как-то выполнить поставленную задачу. Все остальные, обычные ошибки необходимо обрабатывать как можно ближе к месту, где они возникли — т.е. там, где вызывалась функция в которой произошла ошибка — только в той точке, где мы для чего-то вызвали эту функцию мы можем адекватно обработать все возможные варианты ошибок и принять решение как быть дальше, раз мы не получили от этой функции нужный нам результат.
Тут возникает логичный вопрос: а как мы узнаем, критическая это ошибка или нет — ведь всё зависит от требований высокоуровневой задачи. Например, ошибка DNS для задачи выкачки url — критическая или нет? Вроде бы да… но если у нас задача выкачивать url параллельно тысячами в секунду ошибка с одной из url вряд ли действительно является критической. Правильный ответ на этот вопрос — только сама высокоуровневая задача (т.е. ваше основное приложение) знает, что для неё является критической ошибкой, а что нет.
Следствием из этого является то, что любые модули/библиотеки, по определению, не знают, в каком приложении их используют, и какие ошибки являются критическими, а какие нет. Поэтому они не должны выкидывать исключения (на самом деле это не совсем так — если в них возникают ошибки вроде out of memory или segmentation fault и им подобные — это вполне себе типичные исключения, которые можно и нужно выкидывать как исключения, а не возвращать кодами ошибок — но это типичное «исключение из правила, только подтверждающее это правило»). При этом внутри себя библиотеки вполне могут пользоваться исключениями, когда необходима именно раскрутка стека — например, в задачах рекурсивного парсинга — но все свои внутренние исключения эти библиотеки должны сами и перехватывать, а наружу возвращать обычные ошибки.
При таком подходе всё работает совершенно адекватно: все ошибки, которые можно нормально обработать, обрабатываются в том месте, где они возникли (и без излишних простыней try/catch); исключения возникают крайне редко, их очень немного, и большая их часть просто честно убивает приложение (если в приложении и есть глобальный перехват всех исключений, то он используется для попытки вывода сообщения об исключении в лог перед тем как приложение будет аварийно завершено, а не для молчаливого заглушения исключений), а явно обрабатывается очень небольшое количество вполне конкретных исключений, специфичных для вашего приложения (вроде выше упомянутых примеров, когда из-за ошибки парсинга или выкачки url необходимо прервать с раскруткой стека большой блок логики приложения).
У джавы в основе идеологии минимализм, чистый ООП, уход в абстракции и подход «это не нужно» (язык родился из идеи «возьмём C++ и выкинем всё лишнее»). Шарп — полная противоположность: давайте напихаем всего что можно, побольше, намажем сахаром и сверху положим вишенку (язык родился из идеи «возьмём Java и вернём напрасно выкинутое»).
У джавы много реализаций, комитеты, общества, владелец меняется, договориться сложно. У шарпа один владелец, который творит с языком что душе угодно, а единственная вторая реализация копирует основную.
Для джавы обратная совместимость — это святое. Майкрософт же время от времени позволяет себе ломать совместимость во имя развития (впрочем, от авторов шарпа тоже временами слышно: «Эх, жаль, что сделали так, теперь уже не изменить»). Джава старше, поэтому наследия царского режима больше, поэтому проблем больше и развивать сложнее.
в Java какая-то своя специфика, что ни лямбды, ни атрибуты, ни Linq просто не нужны
А в других мейнстримовых языках есть все перечисленные вами фичи? В JS замыкания есть, но синтаксис длинный; атрибутов нет, да и сами классы ещё не ввели; сторонние реализации LINQ есть, но из-за первого пункта выразительность хромает. В PHP замыкания работают через пень-колоду; атрибуты парсят как текст в комментариях, если вдруг понадобится; LINQ в такой же ситуации, как в JS. В C++ такие же тормоза с новыми фичами, как в джаве. Вот питон и руби ворвались в мейнстрим как раз на подобных фичах в частности и выразительности в общем, это да.
Это когда программируешь на локомотивах прогресса, кажется, что всё вокруг изменилось, расцвела функциональщина, асинхронность поросла сахаром и прочее. Но остальной мир-то не так торопится.
Это не уровень программы Умник, это уровень высшего образования, как ни печально об этом говорить. Каждый год я просматриваю темы дипломов свежезащитившихся выпускников по профильным специальностям, дабы знать, кого при случае на работу приглашать. В последний раз был «красный» диплом на тему «сравнительный анализ современных браузеров», где, натурально, листах на 80 сравнивались браузеры в стиле «а вот в хроме такая менюшка есть, а в огнелисе нету». Когда смотришь онлайн лекции какого-нибудь забугорного университета, банальный computer science какой-нибудь, весьма явно осознаешь, что это недостижимый уровень для 99% отечественных вузов.
Встречаешься ты с барышней, в кафе допустим. Случайно какая-то
милая нелепость заставляет вас заговорить друг с другом — ну там я
не знаю, она уронила платок или ты попросил у нее телефон
позвонить. И вдруг глянулись вы друг другу.
Потом — вечер, лето, даже весна, теплынь, душит черемуха и сатанеют
соловьи. Смех, легкое опьянение, вы стоите на балконе у нее дома,
потом заходите в комнату… Тут клавиатура бессильна. Она богиня, и
даже шестой оргазм не может вас разлучить. Ты засыпаешь, и во сне
формулируешь предложение руки и сердца. УТро. Солнце лупит прямо
в глаза.
Приходится просыпаться. На столе лежит записка.
«Радость моя, солнце мое, свет моей жизни… Я ушла на работу. Это
такая мука — разлучится с то...» СТОП. Что это?!.. Еще раз! «мука — разлучится с тобой!»… о НЕТ! НЕТ! Только не это!
В полседьмого раздается бряканье ключей. Ты видишь мелком из-за
створки двери этот бесконечно милый профиль… Прощай!
Топор в неумелых руках не перерубает шею даже с третьего удара. Ты
стоишь в луже крови над издыхающей богиней и шепчешь
«ться! что сделать! ться!»…
У меня ящерица Апач. Точнее геккон девочка.
А назвал так потому что она мелкая и нагрузки сильной не выдержит. Да и форкаться скоро начнет.
А еще появился геккон Nginx) Он для нее фронтэндом служит)
"… Си хорош тем, что имеет 7-8 операторов, десяток операций — и всё. Его учить — плёвое дело. Однако он не для трусов. Си — это свобода плюс ответственность. Почему многие так и остаются на всю жизнь на Паскале? Потому что готовы пожертвовать свободой, лишь бы ответственности поменьше. А у Паскаля настоящий тоталитаризм: шаг в сторону — расстрел. Си — это настоящая демократия. Разгильдяйство и воровство тут не проходят. Однако для людей, скажем так, с совестью — полная свобода. Ассемблер — это коммунизм. Туда дорога ещё меньшему количеству народа, чем в Си. VB — гнилой капитализм. Вот почему: меньше вложить — больше заработать, пару тыков мышой — и у вас офигенное приложение, медленное — значит солидное; и ещё для его приложений надо иметь крутую тачку, а крутая тачка — это престижно."
(с) какой-то форум.
(с) Крис Касперски, Компьютерные вирусы изнутри и снаружи
У нас в СНГ же всё совсем иначе. Если ты не помог кому-то пробиться за счет себя, своего труда, своих лаб и прочего или просто не дал списать, то ты последняя мразь и предатель. На руководящие должности ставят троишников, т.к. четверошников ставят к станку, а отличники либо валят, либо идут в ТОП-3 компаний и в регионах не задерживаются. Итого ярко выражен «синдром хорошиста». В такой схеме результат работы это что-то типа (3 + 4) / 2. В итоге ненужные рынку 3.5, но на которые, в целом, можно жить/существовать. Да и в СНГ-вузах ты не можешь сказать, что такой-то тунеядец мешает тебе учиться и получать знания. СНГшные вузы и школы больше похожи на тюрьмы. Где руководство не может ничего и всем заправляют жлобы-троишники-понаехи. Конечно, есть исключения, но это 2-3 кафедры на 1 ВУЗ и узнать именно о них заранее сложно, если ты явно не знаешь. Например Парфеновский ИТИП в ИТМО.
Это пока ещё только законодательная инициатива, рано ещё беспокоиться.
Это пока ещё только законопроект, рано ещё беспокоиться.
Закон принят пока ещё только в первом (втором) чтении, рано ещё беспокоиться.
Закон ещё не утверждён Советом Федерации, рано ещё беспокоиться.
Закон ещё не подписан Президентом, рано ещё беспокоиться.
Закон подписан, опубликован и неизбежно вступит в силу, чего уж теперь беспокоиться.
Не говоря уже о том, что КР не могут стрелять по мобильным целям и нету гарантии 100% поражения БР шахтного базирования, даже со стратегическими БЧ. И дальность их ограничена.
А статью можно разбить в пух и прах по многим аспектам. Я немного расскажу про реальный прогресс в перехвате МБР, а точнее в реальном его отсутствии. И остального по немногу.
Во первых, ихние утверждения про то, что КР могут наносить удары по мобильным установкам «ТОПОЛЬ-М» полный бред, нет никаких реальных (а не из фильмов) средств по полному слежению за мобильными установками.
Спутники очень ограничены, как по погоде, так и по времени прохода. Во вторых, нельзя ударить по установке с помощью КР, потому-что она может работать по стационарным целям, не говоря о том, что наводиться она с помощью GPS который можно успешно глушить, а инерциальная система недостаточно точна, глушение GPS еще доставит проблем и авиаударам (если даже допустить, что самолеты смогут долететь на достаточное расстояние и успеть открыть огонь до пуска МБР). Посмотрите на статистику пусков-попаданий КР в Югославии, их эффективность переоценена авторами статьи. Я даже не стану говорить, про то что МиГ-31 или ЗРК средней и большой дальности (ТОР, КУБ, БУК, С-300, С-400 и т.д.) которые прикрывают стратегические объекты — могут эффективно сбивать КР. Закидать тапками конечно можно, но все же.
Далее, по перехвату МБР.
Программы KEI (Kinetic Energy Interceptor) и MKV (Multiple Kill Vehicle) — разрабатываемые заатмосферные кинетические перехватчики, которые в перспективе могли бы перехватывать БЧ МБР. Они по ТЗ должны были перехватывать объекты со скоростью до 10км/сек.
Обе программы закрыты в 2009 году.
RIM-161 (SM-3) входит в состав системы AEGIS (Иджис), сейчас их количество на кораблях очень ограничено. И поставлены они далеко не на сотни кораблей.
Да, они перехватили спутник, но до этого две недели суперкомпьютер просчитывал траектории, а корабль стоял прямо под траектории ракеты и в её перигее и траектория была известна с точностью до миллиметра, в итоге спутник был перехвачен на высоте 247 км. ТТХ системы таковы, что они позволяют обнаружить цели на высоте до 320км, когда в апогее МБР летит на высоте более 1000км!
Так что, реально для перехвата МБР система AEGIS не готова, как на уровне целеуказания, так и на уровне энергетики ракеты, о реальном перехвате РГЧ (разделяющаяся головная часть) МБР в боевых условиях — тут даже близко речи нету. Даже если будет целеуказание из вне, за то время пока ракета летит — корабль под её траекторию не поставишь.
То же самое и с системой THAAD, там еще более скромные характеристики, по итогам — обе системы AEGIS и THAAD могут эффективно перехватывать только БРСД (Баллистические ракеты средней дальности). Или в крайнем случае одиночную МБР на начальном участке, но вокруг России таких кораблей не наставишь, да и есть варианты по начальному участку не над водой.
Угрозу представляет только разрабатываемая система GMD с перехватчиком GBI (Ground Based Interseptor), но во первых — их собираются разместить только 50 штук, а в Польше их отказались размещать (это было бы конечно не приятно), а во вторых — опять же, против массированного ядерного удара никакое их количество не поможет, в третьих — для наших ракет сейчас разрабатываются маневрирующие блоки МБР (Есть ли они сейчас — мне не известно), которые делают кинетический перехват просто невозможным. По совокупности, можно сказать, что данная система разрабатывается с оглядкой на страны изгои, вроде Ирана или Северной Кореи, потому-что небольшое количество МБР с моноблочными и не маневрирующими БЧ — они будут вполне в состоянии эффективно перехватывать.
Airborne Laser и лазеры вообще. По воздушным лазерам, тот боинг летающий с лазером, это концепт, до реального боевого перехвата ему далеко, по многим причинам. Время подготовки его велико, выстрелы он может делать с большим перерывом и ОЧЕНЬ ограниченное количество (сейчас там все плавится после первого), а вот системы защиты (На Р-36 они уже есть) придумать не сложно, начиная от вращения ракеты по оси, заканчивая зеркальным покрытием, укороченным взлетом. Про Россию — тут вообще даже речи нет, максимальное теоретическое расстояние перехвата этого боинга 600км, этого явно не достаточно. В статье сказано, что он сможет перехватывать ракеты запущенные с ПЛ, ха! даже если предположить, что сможет… то беспрерывно стрелять он не сможет из за перегрева, что тогда — над каждой ПЛ будет по 20-30 боингов кружить? :)
Про наземные лазеры — это еще более фантастично, не говоря уже про их зависимость от погоды углероду-углеродные композиты из который сделан ББ могут выдержать более 40 МВт на кв. м к тому же такие УУКМ переизлучают тепло, резко уменьшая радиационную( тепловое излучение) составляющую, так что лазером сбить такую ББ можно разве, что с ядерной накачкой… да и то не факт. Тем более, что БЧ МБР входит в атмосферу на скорости более 7 км/с (!) она окружена плазмой, которая не может не влиять не преломление лазера.
В космосе же размещения оружия запрещено, но там теплоотвод еще более сложен… разве что утыкать десятками тысячами лазеров все там.
Так что, подведя итог, перехват МБР — до сих пор крайне сложная задача, а гарантированный перехват массированного ракетно-ядерного удара это фантастика, её на многие годы вперед и ею и останется.
Это конечно не значит, что не нужно строить и разрабатывать, но и паниковать тоже не следует.
В моем комментарии, конечно есть не точности, но в целом все именно так. по МБР вообще много чего интересного есть, были модификации Р-36ОРБ с теоретически неограниченной дальностью, которые увы сняли с вооружения по договору с США о неразмещении оружия в космосе.
Большая часть проблем связанных с обработкой исключений вызвана тем, что ошибки и исключения смешивают в одну кучу. Необходимо отличать одно от другого, причём ошибки нужно возвращать.
Изначально всё пошло от того, что когда появились исключения их начали использовать вместо возвращения ошибок. Основных причин было две: во-первых возврат ошибок в языках где нет удобной поддержи кортежей приводил к необходимости смешивать в возвращаемом значении два типа данных (результат и ошибку) что всегда воспринималось как не элегантный подход от которого с радостью избавились; во-вторых обработка ошибок дело нудное и сложное, а исключения дали возможность с (относительно) чистой совестью избавиться от обработки ошибок здесь и сейчас, и отложить её «на потом».
Суть исключений не в том, что ими можно сигнализировать об ошибках, и не в том, что эти ошибки можно удобно сгруппировать по классам и обрабатывать фильтруя по этим классам, а в том, что исключения раскручивают стек! Поэтому выкидывать исключения нужно только тогда, когда действительно необходима именно раскрутка стека — т.е. при возникновении критической ошибки, т.е. такой, после которой нельзя восстановиться и всё-таки как-то выполнить поставленную задачу. Все остальные, обычные ошибки необходимо обрабатывать как можно ближе к месту, где они возникли — т.е. там, где вызывалась функция в которой произошла ошибка — только в той точке, где мы для чего-то вызвали эту функцию мы можем адекватно обработать все возможные варианты ошибок и принять решение как быть дальше, раз мы не получили от этой функции нужный нам результат.
Тут возникает логичный вопрос: а как мы узнаем, критическая это ошибка или нет — ведь всё зависит от требований высокоуровневой задачи. Например, ошибка DNS для задачи выкачки url — критическая или нет? Вроде бы да… но если у нас задача выкачивать url параллельно тысячами в секунду ошибка с одной из url вряд ли действительно является критической. Правильный ответ на этот вопрос — только сама высокоуровневая задача (т.е. ваше основное приложение) знает, что для неё является критической ошибкой, а что нет.
Следствием из этого является то, что любые модули/библиотеки, по определению, не знают, в каком приложении их используют, и какие ошибки являются критическими, а какие нет. Поэтому они не должны выкидывать исключения (на самом деле это не совсем так — если в них возникают ошибки вроде out of memory или segmentation fault и им подобные — это вполне себе типичные исключения, которые можно и нужно выкидывать как исключения, а не возвращать кодами ошибок — но это типичное «исключение из правила, только подтверждающее это правило»). При этом внутри себя библиотеки вполне могут пользоваться исключениями, когда необходима именно раскрутка стека — например, в задачах рекурсивного парсинга — но все свои внутренние исключения эти библиотеки должны сами и перехватывать, а наружу возвращать обычные ошибки.
При таком подходе всё работает совершенно адекватно: все ошибки, которые можно нормально обработать, обрабатываются в том месте, где они возникли (и без излишних простыней try/catch); исключения возникают крайне редко, их очень немного, и большая их часть просто честно убивает приложение (если в приложении и есть глобальный перехват всех исключений, то он используется для попытки вывода сообщения об исключении в лог перед тем как приложение будет аварийно завершено, а не для молчаливого заглушения исключений), а явно обрабатывается очень небольшое количество вполне конкретных исключений, специфичных для вашего приложения (вроде выше упомянутых примеров, когда из-за ошибки парсинга или выкачки url необходимо прервать с раскруткой стека большой блок логики приложения).
У джавы много реализаций, комитеты, общества, владелец меняется, договориться сложно. У шарпа один владелец, который творит с языком что душе угодно, а единственная вторая реализация копирует основную.
Для джавы обратная совместимость — это святое. Майкрософт же время от времени позволяет себе ломать совместимость во имя развития (впрочем, от авторов шарпа тоже временами слышно: «Эх, жаль, что сделали так, теперь уже не изменить»). Джава старше, поэтому наследия царского режима больше, поэтому проблем больше и развивать сложнее.
А в других мейнстримовых языках есть все перечисленные вами фичи? В JS замыкания есть, но синтаксис длинный; атрибутов нет, да и сами классы ещё не ввели; сторонние реализации LINQ есть, но из-за первого пункта выразительность хромает. В PHP замыкания работают через пень-колоду; атрибуты парсят как текст в комментариях, если вдруг понадобится; LINQ в такой же ситуации, как в JS. В C++ такие же тормоза с новыми фичами, как в джаве. Вот питон и руби ворвались в мейнстрим как раз на подобных фичах в частности и выразительности в общем, это да.
Это когда программируешь на локомотивах прогресса, кажется, что всё вокруг изменилось, расцвела функциональщина, асинхронность поросла сахаром и прочее. Но остальной мир-то не так торопится.
1.Нет.
2.Пожалуйста
Это ваше личное мнение
Форкайте.
Пишите
Делайте по инструкции. Мне всё равно как вы ко мне относитесь.
Нет.
Платите деньги.
милая нелепость заставляет вас заговорить друг с другом — ну там я
не знаю, она уронила платок или ты попросил у нее телефон
позвонить. И вдруг глянулись вы друг другу.
Потом — вечер, лето, даже весна, теплынь, душит черемуха и сатанеют
соловьи. Смех, легкое опьянение, вы стоите на балконе у нее дома,
потом заходите в комнату… Тут клавиатура бессильна. Она богиня, и
даже шестой оргазм не может вас разлучить. Ты засыпаешь, и во сне
формулируешь предложение руки и сердца. УТро. Солнце лупит прямо
в глаза.
Приходится просыпаться. На столе лежит записка.
«Радость моя, солнце мое, свет моей жизни… Я ушла на работу. Это
такая мука — разлучится с то...» СТОП. Что это?!.. Еще раз! «мука — разлучится с тобой!»… о НЕТ! НЕТ! Только не это!
В полседьмого раздается бряканье ключей. Ты видишь мелком из-за
створки двери этот бесконечно милый профиль… Прощай!
Топор в неумелых руках не перерубает шею даже с третьего удара. Ты
стоишь в луже крови над издыхающей богиней и шепчешь
«ться! что сделать! ться!»…
А назвал так потому что она мелкая и нагрузки сильной не выдержит. Да и форкаться скоро начнет.
А еще появился геккон Nginx) Он для нее фронтэндом служит)
"… Си хорош тем, что имеет 7-8 операторов, десяток операций — и всё. Его учить — плёвое дело. Однако он не для трусов. Си — это свобода плюс ответственность. Почему многие так и остаются на всю жизнь на Паскале? Потому что готовы пожертвовать свободой, лишь бы ответственности поменьше. А у Паскаля настоящий тоталитаризм: шаг в сторону — расстрел. Си — это настоящая демократия. Разгильдяйство и воровство тут не проходят. Однако для людей, скажем так, с совестью — полная свобода. Ассемблер — это коммунизм. Туда дорога ещё меньшему количеству народа, чем в Си. VB — гнилой капитализм. Вот почему: меньше вложить — больше заработать, пару тыков мышой — и у вас офигенное приложение, медленное — значит солидное; и ещё для его приложений надо иметь крутую тачку, а крутая тачка — это престижно."
(с) какой-то форум.
(с) Крис Касперски, Компьютерные вирусы изнутри и снаружи