LINUX.ORG.RU

Управляемый код - большой обман или неизбежно необходимая технология настоящего/будущего?

 , , , ,


1

4

В сей момент в моей душе противоборствуют две сущности: оффтопикораст и линуксоид. Можете считать меня немного поехавшим, я не обижусь.
Мне нравится удобство последних версий десктопного и мобильного оффтопика, а их сервисы: облако, записная книжка, веб-версия офиса, все это в разы удобнее альтернатив других корпораций, на мой взгляд. С другой стороны, я ясно понимаю, что пользуясь всеми этими «благами» я продаю себя Майкрософту, де факто у них есть возможность изучать данные каждого пользователя, конечно в автоматическом режиме, оставим подробности, все мы знаем как это работает. Не так давно стал интересоваться жизненной позицией и личностью Ричарда Столлмана, некоторые его статьи/рассказы(«Право читать»), описывают будущее к которому вполне вероятно ведут текущие тенденции. Отсюда и навеян сабж топика. Может быть многие из нас продались за мнимое удобство?
Я понимаю концепцию управляемого кода на необходимом уровне, чтобы рассуждать о ней. Я не понимаю, зачем его всюду насаждают? Многие скажут: «C/C++ был, да и сейчас кое где есть, языками для мейнстрима, но их использование приводило к ошибкам и утечкам памяти.». Я бы согласился с этими людьми, если бы не знал о наличии инструментов, позволяющих проводить анализ кода в автоматическом режиме, причем если не пожалеть денег на не бесплатные продукты, то в таком случае в чем преимущество управляемого кода в данном, конкретном аспекте?
Еще один довод в пользу управляемого кода: «Пишем код один раз, запускаем на любой платформе где есть виртуальная машина.». Ок, начнем с того, что это почти миф, не считая Java, без пересборки с помощью спец. тулчейна под конкретную платформу (Android, Windows Phone), мы не можем просто вот так запулить на нее собранный код и запустить его. Почему, в таком случае, не иметь просто компилятор, который будет уметь собирать код под нужную платформу, сразу в инструкциях требуемой архитектуры?
Возможно я ошибаюсь и мой пост - это фееричный вброс моей глупости, но меня не оставляет ощущение, что здесь что - то не так. Я не понимаю, зачем нужно посредничество между кодом и процессором? Как яркий пример, того, что я бы хотел видеть - это FreePascal. Хотя Pascal - уже благополучно похоронен, кстати, я считаю, что явно не без участия лоббистов концепции управляемого кода, но именно FreePascal - либо более продвинутый Delphi, мог бы стать лучшей заменой управляемому коду.
А что уважаемые сэры скажут по данному поводу? Все плохо или все правильно? Прошу обоснований Вашего мнения.

Почему, в таком случае, не иметь просто компилятор, который будет уметь собирать код под нужную платформу, сразу в инструкциях требуемой архитектуры?

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

А так - имеем N портов рантайма, K приложений собираем 1м (для пользователя) тулчейном, K >> N, все счастливы.

yoghurt ★★★★★ ()

Разные технические подходы под разные задачи. И не надо так серьёзно воспринимать фанатиков.

crutch_master ★★★★★ ()

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

А я вот кстати так и не понял, зачем мс пришлось вводить специальный термин (и что за ним стоит), поэтому просвети

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

Почему не собрать приложение под все возможные архитектуры процессоров? Почему не дать разработчику сборщик/компилятор или надстройку над gcc, которая бы делала все автоматически? О каком зоопарке кстати речь? Там либо ARM, либо x86, про остальные архитектуры я не в курсе.

ychuperka ()
Ответ на: комментарий от yoghurt

За термином «Управляемый код» стоит следующее:

  • Код собирается один раз под все платформы (не совсем так).
  • Под все платформы разрабатывается программа, виртуальная машина, которая запускает байт-код (JIT компиляция в инструкции конкретного процессора).
  • Контролируются ошибки типа переполнения буфера и т.п., все это выбрасывает исключения, но не приводит к передаче управления на внедренный код либо к падению системы.
  • Сборка мусора.


Вроде это основное и ввели термин не MS, а Sun, т.к. первопроходец, коммерчески успешный - Java.

ychuperka ()
Ответ на: комментарий от crutch_master

Почему Столлмана считают фанатиком? Я часто вижу подобные заявления в его адрес, а также в адрес FSF, но чем это обосновано? В мире где все сначала думают о наживе, а только после о последствиях, на мой взгляд, он лишь мыслит не так как все, не в основном потоке, но фанатик ли?

ychuperka ()
Ответ на: комментарий от mono

Да, нет той пули из серебра, я знаю. Но ведь и управляемый код не панацея. Мне нужно хорошо разбираться во внутреннем устройстве виртуальной машины, чтобы большое ПО не жрало ресурсы системы, собственно отсюда большинство проблем с жором памяти и процессорного времени. Так чем же, в таком случае это лучше чем просто следить за теми же, возможными утечками, в нативном коде? Тем более, тот же последний стандарт плюсов, насколько я знаю, привнес довольно богатые возможности в этом плане.
P.S.: Насколько я могу судить, иногда почитывая соотв. хабы на известном ресурсе, существуют весьма хорошие средства для анализа кода, не буду делать рекламу называя коммерческие продукты.

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

Ну вот ты сам себе всё и объяснил, не? :)

А так, всё это было в Смолтоке ещё в начале 80х. Образ был машинно-независим, байткод в книжке расписан, и потому он легко передавался/портировался туда-сюда.

yoghurt ★★★★★ ()

Как яркий пример, того, что я бы хотел видеть - это FreePascal. Хотя Pascal - уже благополучно похоронен

то есть когда ты на него смотрел, его как раз хоронили ? :-)

Посмотри ещё раз, паскаль хоронят даже чаще чем win, и сдаётся что он ещё не одну технологию (ЯП) переживёт

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

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

Во многих случаях (почти любые игры) так нужно делать и сейчас. :)

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

Там либо ARM, либо x86

ARM - это не одна архитектура, а общее название для целого ряда наборов инструкций.

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

Но ведь и управляемый код не панацея. Мне нужно хорошо разбираться во внутреннем устройстве виртуальной машины, чтобы большое ПО не жрало ресурсы системы, собственно отсюда большинство проблем с жором памяти и процессорного времени.

Тебе нужно знать что такое GC и как он работает. В большинстве случаев этого достаточно, а быдлокод на любом языке будет жрать много.

Плюс к этому разработка на джаве быстрее, проще и дешевле. А это немаловажный факт в нашем коммерческом мире.

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

То что я расписал, хоть и выглядит прилично, но не является 100% истиной. По факту мы имеем две, а может и больше, среды в которых крутятся разработчики, которые уже никуда не уйдут и обеспечат корпорации доход и спокойствие, потому что когда завтра корпорация отберет у разработчиков дебаггер или урежет его функционал, такие разработчики уже не смогут обойти «защиту», которую куда нибудь встроят другие разработчики, заплатившие за специальную библиотеку, которая не дебажится публичным дебаггером.
Сейчас это не столь очевидно, т.к. большинство еще умеют писать вне виртуальных машин, но подрастающее поколение, в большинстве, не знает ничего лучше Java/.NET и считают, что это убер технологии будущего, а нативный код - это уже пережиток, для старичков.

ychuperka ()
Ответ на: комментарий от MKuznetsov

Честно, я играюсь с Pascal ради удовольствия. Не видел конкретных предложений разрабатывать на нем, если бы нашел, оставил бы все текущее. Сегодня всем подавай Java, C#, C/C++, Qt.

ychuperka ()
Ответ на: комментарий от mono

Пожалуй насчет скорости разработки тут не поспоришь. Это пока единственный фактор в пользу управляемого кода. Хотя, не понимаю, чем тот же Pascal уступает? Если отбросить вопросы синтаксиса и представить, что есть такой же набор библиотек.

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

Там 2 вида армия и мипс. Если собратьпод все, то пакет будет жирненький.

vurdalak ★★★★★ ()

Почему, в таком случае, не иметь просто компилятор, который будет уметь собирать код под нужную платформу, сразу в инструкциях требуемой архитектуры?

gcc?

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

У нас полинкиника автоматизированна и использованием софта на дельфях, на работе гуй для счётчика посетителей. Работает все, конечно, дерьмово. Делфи вообще часто встречается, т.к. у нас тут в шарагах ни на чём нормальном писать не учат. Только пиратский дельфи 7.

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

Пока не могу согласиться, не видел его выступлений, ограничился лишь чтением. Пока что RMS выступает в моём сознании человеком, который пытается кричать в толпе, его не слышат. Знаете, история полна подобных примеров, хорошо лишь, что RMS еще не сожгли на костре. Некоторые утверждали, что Земля не центр вселенной, а толпа их не слышала, а теперь их считают великими людьми.

ychuperka ()
Ответ на: комментарий от mbivanyuk

Даже не знаю как нему в контексте топика отнестись. Он делает ровно то, о чем я написал, но вопрос был скорее про то, что нафиг нам нужен управляемый код, если есть gcc и подобные ему.

ychuperka ()
Ответ на: комментарий от crutch_master

А что не нормального в Delphi? Я видел очень сложные программы, которые стабильно работают и внедряют нужную логику в настолько огороженные процессы оффтопика, что далеко не каждый так сумеет. Все дело в разработчике, язык/компилятор дело десятое. То что не учат писать софт - это да, соглашусь. Учат только зарабатывать поощрение у господина, в виде оценок труда.

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

вопрос был скорее про то, что нафиг нам нужен управляемый код, если есть gcc и подобные ему

Кому нам? Мне не нужен, тебе тоже.

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

Пропиретарщина, глюки, плохая переносимость. Хотя первое - вопрос религии, второе - вопрос версии компилятора, а для третьего есть православный лазарус.
Лично я сейчас использую яву для десктопных поделок. Путь был таков: Delphi->C#->Java. Бинарник собранный на дельфе мог не переноситься с одной винды на другую, нужно было то извращаться с либами, то пихать их в бинарник на разных машинах не работало то одно, то другое. C# попрощался быстро из-за несовместимости разных версий дотнетов друг с другом. Ну, я ява бы меня устраивала, но, я нахожу, что для десктопа с нашими задачами она не сильно целесообразна. Буду перетаскивать все на веб потихоньку. Через браузер клиенты к базам делать и сопровождать проще, хотя, возможно они будут получаться не такими удобными.

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

Краткий ответ и похоже в тему. Даже как то руки опускаются от того, что «моя хата скраю», а завтра наши дети будут участниками всяких антиутопических рассказов про корпорации.

ychuperka ()
Ответ на: комментарий от crutch_master

Ну насчет бинарника и либ, то это т.н. DLL-Hell во всей красе. Можно делать установщик, апдейтер для своей софтины, который будет разруливать эти проблемы. Собственно, очередной плюс в пользу управляемого кода - это DLL-Hell, который должен отсутствовать, в .NET например обещали следить за совместимостью, но видимо MS в своем репертуаре, но все же это для очень ленивых, т.к. разрулить это не составляет большого труда.

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

Ну, с этим надо ковыряться, а с явой все оказалость проще - поставил JVM, скинул jar'ку и все. С вебом еще проще - открыл браузер, открыл ресурс. Но веб может не подойти для некоторых задач.

crutch_master ★★★★★ ()

Управляемый код в своё время был отличным способом создать безопасные программы на небезопасном языке. Современные языки программирования (Rust, Go) способны создавать весьма безопасные программы, не жертвуя  производительностью. Поэтому постепенно концепция безопасной среды будет отходить в прошлое.

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

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

ychuperka ()

Управляемый код - большой обман или неизбежно необходимая технология настоящего/будущего?

Второе.

Возможно я ошибаюсь и мой пост - это фееричный вброс моей глупости

Это. Хочешь FreePascal — двигай FreePascal, а не загоняй простыни шизофазичных ассоциаций.

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

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

всё остальное — твои больные фантазии.

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

Может Вы еще и диагноз поставите?

Паранойя. И вот почему...

Я не понимаю, зачем его всюду насаждают?
здесь что - то не так.

Популярность aka маркетинг != насаждение

Толстый троллинг. И вот почему...

в данном, конкретном аспекте?

А другие аспекты - не судьба?

озможно я ошибаюсь и мой пост - это фееричный вброс моей глупости

Таки да!

PS

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

Хех, этого слишком мало :)

d_Artagnan ★★ ()

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

Хотя Pascal - уже благополучно похоронен, кстати, я считаю, что явно не без участия лоббистов концепции управляемого кода

Ну феерические же ололошечки!!! Ты про P-код вообще слышал, или где? Вся эта концепция пошла как раз из Паскаля.

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

Там либо ARM

Ты вообще осознаешь, сколько совершенно между собой несовместимых вариантов ARM?

либо x86

Ты вообще осознаешь, сколько вариаций x86?

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

у него на локалхосте работает, и ладно...

anonymous ()

Управляемый код - большой обман

/topic

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

Чистая правда. Более того, есть llvm bytecode, по сути портабельный ассемблер - write/compile once run everywhere без абсурдных недотехнологий типа VM в рантайме и JIT. Хотя вообще это write/compile once run everywhere - огромная ловушка и повод зажимать исходники. В то же время открытые исходники решают оригинальную задачу на ура.

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

О каком зоопарке кстати речь? Там либо ARM, либо x86,

Согласно твоей фразе и обладая знаниями об эффекте Даннинга-Крюгера я делаю вывод, что ты просто феерически некомпетентен в вопросе, который поднял.

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

Столмман это такой «Кассандр».

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

есть llvm bytecode, по сути портабельный ассемблер - write/compile once run everywhere

1) Ты идиот

2) LLVM IR не портабельный, он зависит от платформы (alignments, размерности типов данных, интринсики, ABI).

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

Ты идиот.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.