Самый сложный язык программирования это тот который используется для неподходящих для него задач. Трудно написать на Java Script драйвер видеокарты а на ассемблере — Веб-фронтэнд.
На втором месте редкая экзотика по которой нет не документации не обобщенного опыта работы вроде паттернов. Обычно это языки созданные для одной задачи и встроенные в задолго до тебя разработанную систему. Связь с предыдущими разработчиками которой утрачена.
Если есть желание увидеть конкретные названия — язык кодов процессора и намного чаще применяемая его мнемоническая запись ассемблер. НО. Тут сложность не в самом языке. А в том что для разработки на нем надо знать гораздо больше чем на языке высокого уровня. А именно архитектуру процессора для которого собственно пишем.
Ситуацию также не упрощает то что архитектуры у разных процессоров разные а соответственно разные и ассемблеры. Вообще ассемблер это собирательное название группы языков. Можно знать C++ но нельзя знать «ассемблер вообще». А еще в чрезвычайно большой трудоемкости разработки на нем. Сотни строк для того что в языке высокого уровня записывается одной строкой.
Самая сложная задача из самой сложной олимпиады [3Blue1Brown]
Проще говоря ассемблер рассчитан на то чтобы с максимальной эффективностью выполняться процессором. Удобство программиста здесь в расчет не берется.
А с языками высокого уровня существует «естественный отбор». Сложные неудобные языки просто напросто быстро уходят. Например мне трудно давался Пролог когда его изучали в ВУЗе. Ну так сейчас на нем не то чтобы кто-то пишет. Мало того лично я и не слышал чтобы в профессиональной среде его вспоминали. Как постоянно вспоминают комфортный но проигравший конкуренцию Паскаль.
Или с устаревшей парадигмой тем не менее в свое время удобный для математических расчетов Фортран.
Комментировать ответ… Комментировать…
25 ответов
Высшее, СПбГУ ’86, Спорт всю жизнь. Мое тренировочное приложение для Андроид · 15 февр 2021 · vk.cc/c5RMsB
Канал для бега и похудения 55+ (Игровая Статодинамика)
Комментировать ответ… Комментировать…
Сравниваем 2000+ онлайн-курсов и рассказываем об этом в своём блоге 🙂 · 5 февр 2021 · checkroi.ru
Если мы ищем языки, которые могут изучать даже дети, то подойдут Scratch или Logo. Если речь о взрослых, то, во-первых, вы тоже можете начать с указанных языков — будет полезно и весело! А во-вторых, однозначного рейтинга языков по уровню сложности просто нет, поэтому всё относительно. К условно лёгким можно отнести Pascal, хотя он подходит для решения далеко не всех. Читать далее
Посмотрите актуальные онлайн-курсы в digital 2023 года!
начни с вижл бейск. хоть в экселе будет плюсом.
да и много где.
Показать ещё 2 комментария
Комментировать ответ… Комментировать…
Я — программист, который знает немного о циклах и условиях. · 15 дек 2021
Это в высшей мере субъективно. Например, язык Prolog — довольно лёгкий язык для людей, не имевших до этого опыта с императивными языками программирования. Но он крайне сложно даётся обычно людям с обширным бэкграундом на C, C++, Java и другим подобным языкам. Scheme по идее должен быть одним из самых простых языков, его даже в MIT в качестве единственного принимают, на. Читать далее
Самая СЛОЖНАЯ программа тренировок в бодибилдинге. Не для всех!
4 эксперта согласны
подтверждает
Вообще вопрос неправильно поставлен
Показать ещё 2 комментария
Комментировать ответ… Комментировать…
Разработчик Windows 10, студент · 30 мар 2015
Такого понятия, как самый сложный или легкий язык не существует. Есть такой критерий, как порог вхождения. Он зависит от многих факторов, но в основном это синтаксис. По сути, он определяет, насколько сложно человеку без опыта начать изучать этот язык. Среди языков высокого порога вхождения можно выделить: C++, Assembler и т.д., Среди низкого порога: C#, Java, Python. Читать далее
Ага, жабоскрипт можно понять практически без опыта, ага. 🙂 Хороший вброс, поржал. 🙂
Показать ещё 14 комментариев
Комментировать ответ… Комментировать…
Увлекаюсь физикой и математикой, держу рыбок, программист · 11 окт 2021
Всё зависит от человека — может быть, вам легко даётся какой-то язык, а мне не очень. Но в среднем — самых простых языков два — Python и JavaScript (если не считать Small Basic, который используется только для обучения программированию). Чуть посложнее будет Visual Basic. А самый сложный язык (в среднем) — это C++. Я его сейчас изучаю, и знаете, не очень-то это. Читать далее
Комментировать ответ… Комментировать…
Администрирую и программирую(Java) · 17 мар 2022
Самый лёгкий для нас, пожалуй 1С. Просто потому, что он на нашем языке. Для англоязычных это был бы Visual Basic, который и прозвали языком домохозяек.
Самый сложный, я считаю, brainfuck и подобные экзотические языки. Как и в случае с самыми лёгкими эти языки наоборот, очень трудно читать.
Комментировать ответ… Комментировать…
Дитя компьютерного века · 10 июн 2015
Относительно сложных языков программирования отдельно можно выделить эзотерические, которые зачастую сделаны для усложнения написания программ, хотя многие при этом сохраняют «полноту по Тьюрингу», т.е. могут быть использованы для решения реальных программистских задач. К примеру, достаточно известный Brainfuck, имеющий 8 команд, описываемых различными символами, тьюринг. Читать далее
Комментировать ответ… Комментировать…
Программист , философ · 5 июн 2015
Юсуп, тот факт, что Assembler — низкоуровневый язык программирования не делает его изучение легче (ИМХО, даже наоборот), сложность изучения конкретного языка программирования мало от этого зависит. Изучение скорее зависит от таких факторов, как знание иностранных языков (людям, которые знают английский легче изучать С#, Java), наличия некоторой базы (например, человеку. Читать далее
Комментировать ответ… Комментировать…
Программист · 1 апр 2015
Антон, Вы допустили неточность: ассемблер — язык низкого уровня. И наоборот — все другие перечисленные Вами языки — высокоуровневые. Что касается сложности/простоты — все зависит от человека и задач, которые он собирается решать. До какого-то предела сложности одну задачу можно решить на нескольких языках почти одинаково (если эти языки хоть немного схожи меж собой). Читать далее
Наверное, самый лучший ответ
Комментировать ответ… Комментировать…
Ответы на похожие вопросы
Программирование
программист · 12 нояб 2021
Если не брать эзотерические вроде HQ9+, то есть много учебных языков, которые специально сделаны лёгкими в освоении — Бэйсик, Лого. С их помощью можно легко изучить программирование, но серьёзные программы на них не напишешь. Среди промышленных, на мой взгляд, самые лёгкие — Racket, Python.
1 эксперт согласен
Комментировать ответ… Комментировать…
Программирование
Пишу код и записываю подкаст · 22 янв 2022 · dreamsorder.simplecast.com
Если вы инженер и знаете электронику, то я бы сказал, что Си — один из самых простых языков для начала. Ну или как говорят easy to learn, hard to master (легко выучить, трудно мастерски владеть). Набор ключевых слов так же мал как и в каком-нибудь Python. Вы целиком управляете памятью, так что придётся осознать какие в принципе бывают виды памяти. Переполнения при арифметических вычислениях — про это любой инженер-электронщик и так в курсе.
Но конечно писать на нём очень медленно, зато исполнять быстро!
«Порядок снов» в Телеграме
Комментировать ответ… Комментировать…
Программирование
Программист C++ · 4 нояб 2021
Вообще понятие сложности для всех разное, для кого то и scratch сложный. А вообще, самый сложный язык тот, который ты не понимаешь и не хочешь понять.
Комментировать ответ… Комментировать…
Программирование
Погромист на C# · 20 янв 2022
Если отвечать именно в такой формулировке, то нет «лучшего языка программирования», ибо каждый язык лучший в той задаче, для которой он хорошо подходит.
А самый лёгкий — Scratch. Он специально создавался для обучения детей, и для работы с ним даже не обязательно уметь читать.
Комментировать ответ… Комментировать…
Образование
Специалист по автоматизации. От станка, до государства. Научные заметки о жизни: https:/. · 25 нояб 2021
Очень непростой вопрос. Для разных людей это будут разные языки.
Для людей с математическим складом ума простым окажется Паскаль т.к. он построен по очень четко и компактно сформулированным правилам. Всего 30 синтаксических конструкций.
Для людей не склонных к математике проще могут оказаться интерпретаторы и скриптовые языки вроде Бейсика. Результат можно наблюдать после каждой введенной строчки кода.
Встречал людей, для которых наиболее естественными были функциональные языки. Или декларативные.
Одним из самых простых и наглядных языков был Аналитик, разработанный для ЭВМ МИР-2. Его современными аналогами являются математические пакеты типа Маткад и Матлаб.
2 эксперта согласны
Комментировать ответ… Комментировать…
Администрирую и программирую(Java) · 1 февр 2022
Python.
Возьмите любую из сотен книг по такой довольно сложной теме как машинное обучение. На манер известного анекдота они начинаются примерно так: «возьмите keras, pandas и numpy. Вот этой функцией загрузите данные, этой обработайте, и передайте вон той, что выведет красивый график».
Видите как просто?
Более того, там неимоверная тонна синтаксического сахара. Pyton буквально карамелизирован. Чего стоит только выборка с конца массива в начало, для чего в других языках функции городить приходится, а тут просто взял и написал «arr[-1:]» и всё.
Добавьте к этому ещё отсутствие строгой типизации и вы получите язык мечты. . поколения зуммеров.
1 эксперт согласен
Комментировать ответ… Комментировать…
Разработчик, автор канала «Экстраполяция IT» · 1 окт 2018 · tele.click/itextrapolation
Одним из самых сложных языков программирования считается Malbolge (https://ru.wikipedia.org/wiki/Malbolge).
Язык разработан с целью быть максимально сложным для написания программ. Получил своё название от Malebolge, восьмого круга ада Данте.
Комментировать ответ… Комментировать…
Человек, который на «ты» с миром компьютерных технологий · 11 янв 2019 ·
Довольно трудно выделить один конкретный язык, так как под классификацию «самый сложный» попадают многие языки класса «Эзотерические», которые в большенстве своём являются пародией на другие языки или являются шуткой.
Самый известный язык из этого класса называются Brainfuck, а под самым сложным можно выделить Malbolge, который был создан специально для максимального усложнения написания кода. Такие языки даже имеют свою собственный подкласс с названием «Чёрный ящик»
Комментировать ответ… Комментировать…
Программист · 6 нояб 2021
Самый лёгкий язык программирования, это C. По крайней мере один из самых лёгких. Однако, это не значит, что на нём легко писать программы.
Комментировать ответ… Комментировать…
PhD, senior scientist AI, неандерталец · 8 окт 2017
Самыми сложными с точки зрения того, какие операции они позволяют делать, являются языки высокого уровня. На данный момент их 3: С++, Java и С#. Любители Apple скажут, что есть ещё Objective C, но он есть только для iOS.
Исторически С++ появился раньше всех. Код, написанный на С++, можно скомпилировать в любой операционной системе. Однако С++ не обладает большой частью функциональности, реализованной в Java и C#, плюс, с точки зрения программиста на последних двух языках, его «синтаксис» подчас чересчур громоздок и во многом устарел. Существуют различные расширения С++, типа Qt, которые пытаются устранить этот разрыв, но у этих расширений не очень-то получается.
Одна из причин, по которой С++ сохраняет свою популярность, заключается в том, что в С++ нет так называемого «сборщика мусора» — программы, автоматически чистящей память от неиспользуемых объектов. Это ставят С++ в преимущество, потому что программист получает ручной контроль за памятью. Поэтому С++ любят использовать для тех процессов, где расход памяти кажется настолько критическим, что автоматический сбор мусора не кажется вариантом. На деле, сборщики мусора в Java и С# заметно продвинулись со времён первых версий. Так что преимущество становится всё более сомнительным, особенно на фоне того, что а) для каждого объекта в С++ приходится писать дополнительный код деструктора, освобождающего память, б) не уничтоженные вовремя объекты — постоянные источник трудно отлавливаемых багов, в) в Java и C# есть методы, позволяющие прямо указать, что объект должен быть удалён в конкретном месте.
Java более проста в своём синтаксисе, чем С++, на Java написано куча программ для интернета вещей. Как и С++, Java изначально была многоплатформенной. Тем не менее, большая часть функциональности, которая есть в С#, на Java реализуется внешними пакетами, поддерживаемыми полутора программистами и потенциально рискующими конфликтовать друг с другом. Плюс, синтаксис Java кажется мне всё-таки более громоздким, чем у C#.
Как вы уже поняли, моим фаворитом был, есть, и вот уже 17 лет остаётся C#. Это язык с наиболее чистым синтаксисом, позволяющий изящно писать программы. Вся та функциональность, которая в Java достигается встраиваемыми пакетами, в С# уже есть. Плюс, пакеты туда тоже можно встраивать.
Многие программисты любят не любить C#, и связано это с его историей. C# — детище Microsoft, а Microsoft в целом имел имидж жёсткого копираста. Изначально на C# программы можно было писать только под Windows, что ограничивало его применимость по сравнению с Java. Плюс, единственным редактором, в котором можно было писать на C#, долгое время оставался Visual Studio.
Тем временем, всё это давно уже изменилось. Майкрософт стал распространять многие свои приложения бесплатно — в частности, есть бесплатная версия Visual Studio, по функциональности мало отличающаяся от платной. Xamarin сделал программы, написанные на C#, конвертируемыми в другие операционные системы. Наконец, появились и другие редакторы C# и вообще среды .NET, к примеру Rider.
Кроме того, C# выгодно отличается от Java тем, что прошёл ISO-стандартизацию.
В общем, для большого, сложного проекта, который делает устоявшаяся фирма, я бы всячески рекомендовал С#.
Источник: yandex.ru
Какая САМАЯ СЛОЖНАЯ программа, которую вы написали?
Просто любопытно, мне интересно, что сделали все вы, опытные программисты или новички (такие как я). Итак, какая САМАЯ СЛОЖНАЯ самая сложная программа, которую вы написали?
person Community schedule 18.04.2009 source источник
какой вопрос .. и глядя на ниже есть замечательная тенденция. Молодость против опыта.. 🙂 — person rama-jka toti nbsp schedule 01.02.2013
Ответы (19)
Приложение, которое я создал в 2005-2006 годах, позволяет людям визуализировать свои дома/автомобили и т. д., окрашенные в разные цвета. Теперь это, безусловно, можно сделать в Photoshop, но это было намного больше.
person Community schedule 18.04.2009
Просто оказалось, что это самое сложное, что я когда-либо писал 🙂 Не то чтобы это было слишком сложно, но в основном воссоздание многих возможностей Photoshop было для меня действительно трудным. Я был единственным разработчиком в этой команде, и мне было 19-20 лет. Слои, волшебная палочка, цветовые модели, затенение, текстуры, оптимизация для производительности и то, что вы видите, — это лишь один из 6 модулей конечного продукта. Другие модули предоставят вам формулы цветовых оттенков, используемых в проекте, или найдут наиболее близкие. — person Peter Perháč; 18.04.2009
О. большая работа для шоу одного человека . Я сам впечатлен как младший программист — person Aaron; 23.04.2009
Тот, который я не хотел писать или получать удовольствие от написания.
person Community schedule 18.04.2009
Однажды мне пришлось написать алгоритм сжатия, который использовал BWT (преобразование Берроуза-Уилера), и в алгоритме есть шаг, на котором вы должны создать ОГРОМНУЮ матрицу. У меня были проблемы с памятью и скоростью, потому что матрица была такой огромной. Приходите, чтобы узнать, есть действительно простой алгоритм, который я мог бы использовать и полностью избежать матрицы. Я также должен был написать простую операционную систему на ASM, и это было довольно сложно.
person Community schedule 18.04.2009
Я столкнулся с этой проблемой прямо сейчас, можете ли вы сообщить мне, как это сделать, не создавая гигантскую матрицу? — person SNyamathi; 06.02.2013
Однажды я сделал программное обеспечение для многокамерной обработки видео в реальном времени, выполняющее обнаружение движения и кумулятивную гистографическую магию, и все это на процессорах 33 МГц и 640 МБ ОЗУ. Труднее всего было сделать так, чтобы это шло быстро; обильное количество хеширования, смещения битов, мошенничества, ругани и поздних ночей с пиццей и прозрениями в течение примерно 4 лет. О, и я также сделал версию, связанную с цветом. Да, и модуль, который мог видеть разницу между паром и белым дымом в больших помещениях (как ядерные реакторы, так сказать). Ха, ты только попробуй! Вы не найдете таких примеров ни в одном учебнике. 🙂
person Community schedule 23.04.2009
прикольная штука. звучит определенно тяжело. — person Peter Perháč; 25.04.2009
Библиотека для решения нелинейных дифференциальных уравнений в частных производных. Мы использовали его в группе теоретической физики, чтобы решить нелинейную адаптацию уравнения Шредингера, которая возникает в очень специфических низкотемпературных средах. Было относительно легко заставить работать простой решатель, но сделать его обобщенным быстрым было непросто. В настоящее время это открытый исходный код в коде Google: fdtl.
person Community schedule 18.04.2009
Приложение, которое компилируется и работает как на Windows, так и на Mac с одной кодовой базой.
person Community schedule 18.04.2009
еще в 90-х, когда не было такого общего фреймворка, как WxWidgets — person jim; 07.05.2009
Все, что связано с шифрованием и безопасностью, всегда на 1000% сложнее, чем кажется!
person Community schedule 18.04.2009
Привет, могу ли я найти информацию по этому вопросу, касающуюся программирования? — person Aaron; 18.04.2009
Это потому, что всегда найдутся люди умнее вас, и если они хотят противостоять вашей работе, вам придется победить, приложив усилия. — person Kzqai; 17.01.2010
Драйвер модема общего назначения для нестабильной онлайн-службы. Он также должен был поддерживать 30 типов модемов (до модемов Hayes). Все они имели разные временные характеристики. Его нужно было писать на ассемблере 8086 и Z80 для CP/M и DOS-версий наших продуктов. Мне до сих пор снятся кошмары про некий полудуплексный модем.
person Community schedule 18.04.2009
Автоматизация с COM, с выполнением через Grid
person Community schedule 18.04.2009
Собственный класс потокового видео с использованием API ffmpeg — на уровне обработки пакетов и отображения кадров в нужное время, синхронизируясь со звуком. Не так сильно, как некоторые другие из перечисленных, но это пинало меня в течение многих недель!
person Community schedule 18.04.2009
+1, потому что я сражался с тем же! — person chrism1; 18.04.2009
Вероятно, ничья: средство решения задач для наборов с использованием теорий выполнимости по модулю и планировщика совместных процессов на C /ASM, который работал поверх операционной системы UNIX. Первое было просто сложно — это никогда не делалось до использования SMT, и перевод высокотеоретической статьи в реальную реализацию в другом контексте был трудным. Второй заключался в том, чтобы копаться в структурах данных ОС, чтобы понять их, а затем заменять биты и фрагменты для перехода туда и обратно между функциями в программе, как если бы они были отдельно запланированными потоками.
person Community schedule 18.04.2009
Не могли бы вы сослаться на упомянутые, родственные документы, материалы? Звучит интересно :). — person Grzegorz Wierzowiecki; 01.09.2011
Может исходники программы где-то есть? — person Grzegorz Wierzowiecki; 01.09.2011
Спасибо за ссылки. Я пытаюсь найти исследователей, занимающихся SMT, программным анализом и т. д. А также примеры кода. — person Grzegorz Wierzowiecki; 01.09.2011
библиотеку векторной графики, которую я начал писать в 1998 году. предоставляют множество операций за O(log n) и анизотропную мозаику, запоминаемую в списках отображения OpenGL для поддержания высокой частоты кадров в динамических сценах. В частности, он мог плавно масштабировать сложную векторную графику, потому что разлагал ее на деревья и эффективно отбрасывал. В течение многих лет это был самый быстрый в мире модуль рендеринга векторной графики потребительского уровня. Первоначальная версия была 200kLOC C++, но на решение теоретических проблем, которые легли в основу ее разработки, у меня ушло 2 года.
person Community schedule 05.06.2010
2 вещи: 1) Компилятор. Название языка было «3-balls» (дань уважения другу, которому прооперировали яйца) 2) Виндовая сборка без единого макроса, все запихнуто в стек и адреса все относительные. Он работает во всех Windows (адрес не закодирован). По сути, это простое окно с несколькими кнопками и метками.
Но приятно то, что из объектного и исполняемого файлов я извлек опкоды и сгенерировал из них шеллкод. Таким образом, я мог использовать любой буфер в программе и буквально создать свое собственное приложение поверх работающего! Приятно показать экран на удаленном компьютере, и удаленный компьютер выполнит программу, которой нет на его компьютере, вы буквально отправили программу для выполнения на удаленный компьютер. Конечно, это слишком много головной боли ни за что. но это стоит всех байтов, которые я набрал!
person Community schedule 30.09.2010
3-й балл однозначно заслуживает плюса — person fantaghirocco came to Rome; 17.12.2015
Я написал несколько фрагментов кода, которые выполняют моделирование в нескольких пространственных измерениях (от 3 до примерно 7 измерений). Проблемы усложняются, когда вы работаете над чем-то, что вы не можете построить или даже визуализировать. Но на самом деле, как человек, потративший большую часть своего времени на создание наборов инструментов для других, чтобы они могли использовать их в своей работе, я бы сказал, что самые сложные программы, которые я делал, на самом деле были наборами инструментов, наборами инструментов, предназначенными для совместной работы друг с другом. последовательный способ. Поскольку все они созданы для совместной работы, можно утверждать, что несколько десятков утилит на самом деле работают как один инструмент. (Конечно, любой модульный код в этом отношении подобен.) Здесь я также предоставил в основном инструменты моделирования, созданные для решения проблем управления цветом.
person Community schedule 18.04.2009
Пару недель назад мне задали именно этот вопрос на собеседовании (до сих пор не известно, получил ли я работу). Для меня это было несколько заданий на моем первом уроке программирования после базовых вводных занятий. Это был первый курс веб-дизайна в моем университете. Поскольку он был новым, несколько выпускников записались и составили примерно половину класса.
Инструктор привык преподавать в старших классах и уже знал многих из них в классе. В основном он преподавал на их уровне, а не для другой половины класса, которые были довольно неопытны. Наверное, самым сложным заданием было написать текстовый браузер. У меня были проблемы с разбором различных тегов, и я попросил помощи.
Преподаватель сказал: «Ну, если бы у вас был курс «Компиляторы», вы могли бы просто написать простой. В тот момент «Компилятор» был черным ящиком, который творил чудеса до запуска программы. Я действительно не знал, что это было, тем более я не был в состоянии написать его. Сложность заключалась в том, что у меня не было инструментов, необходимых для выполнения работы, включая понимание результатов, которые я получил, когда я гуглил. (Справочные страницы и API хороши, если вы уже понимаете, что ищете, но не для обучения новичка.) В моем опыте совместной игры я узнал больше всего, когда у меня был наставник, который сказал: «Если вы застряли более чем на пару часов, дайте мне знать, чтобы я мог отвязать вас и двигаться дальше. Гораздо лучше, чем те, кто не хочет слышать обо мне, кроме как раз в неделю или около того.
Источник: digitrain.ru
Самая сложная программа
Самая сложная программа в истории была написана командой людей, имена которых нам неизвестны.
Это программа – компьютерный червь. Червь был написан, судя по всему, между 2005 и 2010 годами. Поскольку этот червь является таким сложным, я могу дать лишь общее описание того, что он делает.
Как только червь запускается на компьютере, он пытается получить права администратора. Его не сильно беспокоит установленное антивирусное ПО – он может игнорировать большинство таких программ. Затем, в зависимости от того, на какой версии Windows он работает, червь попробует один из двух ранее неизвестных методов получения прав администратора на компьютере. Как и ранее, до появления этого червя никто не знал об этих скрытых уязвимостях.
После этого червь способен скрыть следы своего присутствия в глубинах ОС, так что ни одна антивирусная программа не сможет его обнаружить. Он прячется так хорошо, что даже если будете искать на диске в то место, где этот червь должен быть, вы ничего не увидите. Этот червь прятался так хорошо, что ему удалось перемещаться по Интернету в течение года и ни одна компания, связанная с безопасностью не признала даже факта его существования .
Затем червь проверяет, может ли он выйти в Интернет. Если может, он пытается посетить сайты www.mypremierfutbol.com или www.todaysfutbol.com . В то время эти серверы были Малайзии и Дании. Он открывает зашифрованный канал связи и сообщает этим серверам, что новый компьютер успешно захвачен. Зачем червь автоматически обновляет себя до самой новой версии.
После этого червь копирует себя на любое другое USB устройство, которое вам пришлось вставить. Он делает это с помощью установки аккуратно разработанного ложного драйвера диска. Этот драйвер содержал цифровую подпись Realtek. Это означает, что авторы червя каким-то образом смогли пробиться в наиболее защищённое место крупной тайваньской компании и украсть самый секретный ключ компании так, что сама компания об этом не узнала.
Позже, авторы этого драйвера начали подписывать его секретным ключом от JMicron, другой крупной тайваньской компании. И снова, авторы смогли прорваться в самое защищённое место в этой компании и украсть самый секретный ключ, которым владеет эта компания так, что они ничего об этом не узнали.
Червь, о котором мы говорим очень сложный . И мы ещё даже не начали .
После этого червь начинает использовать два недавно обнаруженных бага в Windows. Один баг связан с сетевыми принтерами, а другой – с сетевыми файлами. Червь использует эти баги, чтобы установить себя по локальной сети на все другие компьютеры в офисе.
Затем червь начинает искать конкретное ПО, разработанное Siemens для автоматизации крупных промышленных машин. Как только он находит его, он (как вы уже догадались) использует ещё один ранее неизвестный баг, чтобы скопировать себя программируемую логику промышленного контроллера. Как только червь поселился в этом компьютере, он остаётся там навсегда. Никакое количество замен или «дезинфекции» компьютера не поможет избавиться от него.
Червь ищет прикреплённые промышленные электрические моторы от двух конкретных компаний. Одна из этих компаний в Иране, а другая в Финляндии. Моторы, которые он ищет, называются «частотно-регулируемые приводы». Они используются для управления промышленными центрифугами. С помощью центрифуг можно очистить множество химических элементов.
Теперь, поскольку червь получил полный контроль над центрифугами, он может сделать с ними всё, что захочет. Он может их всех отключить. Он может немедленно все их уничтожить – достаточно крутить их на максимальной скорости до тех пор, пока они не разлетятся как бомбы, убив всех, кто по случайности оказался рядом.
Но нет. Это сложный червь. И у червя есть другие планы .
Как только он захватил все центрифуга в твоем заводе… червь просто засыпает.
Проходят дни. Или недели. Или секунды.
Когда червь решает, что время пришло, то быстро просыпается. Он случайно выбирает несколько центрифуг, когда они очищают уран. Червь блокирует их так, что если кто-то заметит, что что-то странное, он не сможет отключить эти центрифуги.
И затем, потихоньку, червь начинает крутить эти центрифуги… немножко неправильно . Совсем не намного. Просто, знаете, чуть-чуть слишком быстро. Или самую малость слишком медленно. Лишь немного за пределами безопасных параметров.
В то же время, он увеличивает давление газа в этих центрифугах. Этот газ называется UF6. Очень вредная штука. Червь изменяет давление этого газа чуть-чуть за пределами безопасных значений. Ровно для того, чтобы при попадании газа в центрифуги во время работы появлялся небольшой шанс того, что он превратится в камни .
Центрифуги не любят работать слишком быстро или слишком медленно. И камни им тоже не нравятся.
Но у червя остался последний трюк. И он гениален.
В дополнение ко всем своим действиям, червь начинал проигрывать запись данных за последние 21 секунду работы, которые он записал, когда центрифуги работали нормально.
Червь проигрывал запись снова и снова, в цикле.
В результате, данные о всех центрифугах для людей выглядели вполне нормальными. Но это были только ложные записи, созданные червем.
А теперь представьте, что вы ответственны за очистку урана с помощью этого крупного промышленного завода. И вроде бы всё работает хорошо. Может двигатели звучат немного странно, но цифры на компьютере показывают, что моторы центрифуг работают так, как и положено.
Затем центрифуги начинают ломаться. В случайном порядке, одна за другой. Обычно они умирают тихо. Впрочем, в некоторых случаях, они устраивают настоящее представление . А производство урана начинает резко падать. Уран должен быть чистым . Ваш уран не достаточно чистый, чтобы с ним можно было сделать что-то полезное.
Что бы вы делали, если бы управляли этим заводом по обогащению урана? Вы бы проверяли всё снова и снова и снова, не понимая в чем проблема. Вы могли бы при желании поменять все компьютеры в заводе.
Но центрифуги бы всё равно ломались. И у вас даже не было возможности узнать почему .
Со временем, под вашим надзором, около 1000 центрифуг ломаются или отключаются. Вы сходите с ума в попытках выяснить, почему всё работает не так, как планировалось.
Именно это и произошло на самом деле
Вы никогда не будет ожидать, что все эти проблемы были созданы компьютерным червем, самым хитрым и умным компьютерным червем в истории, написанным какой-то невероятно секретной командой с неограниченным количеством денег и времени. Червь был разработан только с одной целью: пройти через все известные способы цифровой защиты и уничтожить ядерную программу вашей страны так, чтобы его не поймали.
Создать программу, которая могла бы сделать ОДНУ из этих вещей само по себе маленькое чудо. Создать программу, которая может делать ВСЁ это и много другое…
… для этого червю Stuxnet пришлось стать самой сложной программой из когда-либо написанных.
Источник: dzen.ru