Представитель Шуры Люберецкого в ЖЖ (brat_luber) wrote,
Представитель Шуры Люберецкого в ЖЖ
brat_luber

Categories:

По поводу необходимости программирования

На вчерашнюю запись [info]soonts оставил вот такой комментарий:

>можно заменить почти все специализированные электронные устройства достаточно мощным “стандартным” компьютером
И заменяют. В том числе в приложениях, исключительно критичных к надёжности. Те же американские марсоходы: PowerPC CPU + VxWorks OS.

Во-первых много людей уже умеют хорошо программировать стандартные компьютеры.
Во-вторых, как ни странно мощные стандартные компьютеры дешевле нестандартных.
Например материнская плата с вмонтированным процом intel atom 1.6GHz размером 17×17cm стоит как половина того калькулятора. Шоб сделать из неё полный аналог калькулятора, надо добавить RAM (200р за 256MB), USB флешку для загрузки какой-нить ОС реального времени и хранения данных (300p за 1GB), БП, дисплей и клавиатуру, и ессно написать софт.

>надежность такой системы будет довольно низкой. Сравните, например, мультивибратор на двух транзисторах и “мигающую лампочкой” программу для Windows

Если эта “мигающая лампочка” на дисплее, то всё упирается вовсе не в windows и не в надёжность аппаратной части, а в частоту обновления экрана.
Шоб мигать лампочкой на экране строго раз в секунду, всего-то надо не накосячить при реализации, а именно поднять приоритет процессу и использовать Direct3D для рисования.

Если же “мигающая лампочка” прицеплена например к выходу звуковой карты уровня m-audio audiophile, то даже под windows, при некотором умении программировать можно добиться при частотах от 0 до 20KHz надёжности и стабильности _существенно_ выше чем у двух транзисторов. А кроме универсальной windows, есть ещё системы реального времени.

Я не был в числе критиков МК-152, не считаю цену завышенной, но скорее согласен с теми, кто считает девайс бесполезным.
Точнее, я считаю что рынок очень-очень маленький.
Очень мало кто умеет этот странный МК.
В то же время куча людей, и у нас и в остальном мире, умеют пользоваться matlab на PC, и программировать PIC, Intel MSC, и прочие контроллеры.

Пока писал ответ, получилось содержимое для очередного поста.

За последние 20 лет вычислительная техника шагнула далеко вперед. Если 20 лет назад, к примеру, задача обращения большой квадратной матрицы (то есть решения системы многих уравнений, например, пары тысяч) даже сравнительно мощным компьютером (конечно, не Cray, а скорее что-нибудь из больших ЕС) занимала около часа, то сегодня любая персоналка делает это за пять-десять минут, а то и меньше. Теперь любому доступны вычислительные возможности, например, крупного НИИ образца 1989 года. Любая блондинка с гуманитарным складом мышления носит в сумочке (!) ноутбук, способный, к примеру, произвести расчет траектории баллистической ракеты за несколько минут.

Казалось бы, наступил “золотой век” в представлении писателей-фантастов. На каждого жителя Земли приходится такая вычислительная мощность, что все расчеты, необходимые, например, для полета на Марс, могут быть выполнены практически моментально. Думаю, если бы сейчас подготовкой к марсианской экспедиции занимались бы действительно эффективные менеджеры, то не возникло бы никакой необходимости в “распараллеливании” расчетов, как это было сделано при разработке первой советской термоядерной бомбы. Все прекрасно посчиталось бы на паре “самых мощных компьютеров Савеловского рынка”.

marshalberia

Но, думаю, если бы кто-нибудь сказал, что при запуске программы для работы с электронной почтой объем производимых вычислений сравним с вычислением, например, траектории спутника (я не шучу, Lotus Notes действительно при запуске “отжирает” 100% загрузки не самого слабого Intel Pentium M на пару-тройку минут), то разработчики программы отправились бы валить лес далеко за Урал.

Такой непроизводительный расход вычислительной мощности просто поражает. Более того, скорость расчетов для пользователя остается неприлично низкой. Современные компьютеры уступают в этом плане даже “Синклерам”.

В самом деле, даже на самом паршивом персональном компьютере 80-х был интерпретатор Бейсика. Сейчас даже в самой навороченной Windows 7 встроен довольно сомнительный калькулятор, по удобству значительно уступающий своему настольному собрату за 100 рублей. Казалось бы, что это дает, когда есть все необходимые программы? К сожалению, последний тезис просто неверен.

Например, существует огромное количество чисто инженерных расчетов. Для примера возьмем определение резонансной частоты колебательного контура. Формула довольно проста:

lc

С другой стороны, считать на калькуляторе, например, индуктивность, зная частоту и емкость, не очень приятно. Особенно - когда делаешь это много раз. “Программа” на Бейсике займет три строчки, и пишется за 5 минут - даже меньше. То есть, имея в распоряжении древний “Спектрум”, и зная базовые конструкции Бейсика, мы можем ловольно сильно облегчить себе жизнь. Что же нам предлагает платформа Windows+Intel? Калькулятор в Windows? Это даже не смешно. Excel? Простите, но мазохизм - это извращение. Как это не удивительно, но в “стандартном комплекте” не найдется ни одной программы, которая позволила бы ускорить простейшие расчеты. Монструозный Matlab - вот, пожалуй, единственный программный продукт, предлагающий схожую функциональность (и даже больше - но эти возможности будут лежать мертвым грузом).

Итак, внезапно выяснилось, что пользователь просто не может задействовать имеющуюся у него вычислительную мощность для выполнения даже простейших расчетов. Природа не терпит пустоты, и многие (в основном - осваивающие Delphi или Visual Basic студенты) пишут свои программы для таких расчетов. Казалось бы, нет ничего проще. Накидал на форму мышкой компоненты, написал пару строк кода - готово! К сожалению, нет…

Вернемся к расчету емкости. Устав от Excel, зайдем на любую софтопомойку и наберем в поиске “колебательный контур”. Ура! Нашлась программа, написанная каким-то студентом N-ского технического университета. Скачиваем, запускаем. Видим приятный интерфейс, где достаточно ввести два значения, чтобы посчиталось выбранное третье. Выбираем интересующую нас индуктивность, затем кликаем мышкой на поле ввода частоты и начинаем стирать имеющееся там значение. Красота! Значение индуктивности пересчитывается автоматически всякий раз, когда меняется введенная частота или емкость! Ничтоже сумнящеся, крепко давим на Backspace и стираем всю частоту, чтбы ввести свою. В недрах программы происходит страшное. Обработчик события “изменилось значение поля с частотой” считывает из поля текстовое значение - пустую строку, преобразует его в число - 0 и… делит, вызывая ошибку с вылетом всей программы.

Любой профессиональный программист всего лишь посмеется. Но автор программы по специальности - не программист, и он не обязан знать многих тонкостей. Может быть, он сначала вводит новое значение перед старым, а затем стирает “хвост” кнопкой Delete. Тогда программа работает. В принципе, автор может освоить программирование в необходимом для инженерных расчетов объеме - вычисления, ветвления и циклы, простейший ввод-вывод. Если бы программа писалась на Turbo Pascal или Quick Basic, то “вылет” происходил бы лишь при недопустимых входных данных, что более-менее нормально и допустимо. Любое же программирование под Windows требует знания всяческих тонкостей.

Давайте опустим завесу жалости над концом этой печальной сцены. Не буду переходить, например, к решению дифференциальных уравнений, когда вытащенный из коробки Спектрум довольно бодро начинает рисовать на экране график решения, получаемого методом Рунге-Кутта (10-15 строчек на Бейсике), а “свежий” Asus EEE PC пасует перед такой задачей.

Конечно, при наличии навыков, времени и достойной среды разработки можно написать программу, рисующую тот же график, но со значительно лучшей точностью, и на персоналке с Windows. Но все упирается в то, что все современные среды программирования рассчитаны на профессиональных программистов. Можно сколько угодно обсуждать преимущества C перед Бейсиком, но забыть о главном - в 80-х для программирования на Бейсике не требовалось ничего, любой компьютер имел его интерпретатор (кстати, в состав DOS вплоть до 6.22 тоже входил QBasic). Сейчас же доступных для пользователя технологий программирования просто нет, вместо них - 3D-ускоренный интерфейс Aero и картинки из Висты, своими названиями приводящие в изумление.

Между прочим, программируемые калькуляторы типа МК-52 или МК-61 предназначались в том числе и для инженерных расчетов. Для них, например, выпускались модули расширения памяти, содержавшие различные математические и инженерные подпрограммы. На Западе до сих пор применяют программируемые микрокалькуляторы Texas Instruments и других производителей. Появление МК-152 в 2008 году выглядит странно лишь потому, что подобная техника у нас не выпускалась и не использовалась почти 20 лет. А ведь для многократного повторения одних и тех же, пусть и несложных, вычислений программируемый калькулятор оказывается на порядок удобнее современного компьютера.

Возвращаясь к нашим Delphi и Quick Basic. В свое время много писали о необходимости преподавания в школах основ информатики и вычислительной техники, затем развернулись дискуссии о том, кого следует готовить - пользователей готовых программных продуктов (Windows, Word, Excel, Photoshop) или “программистов”. Конечно, победила первая точка зрения. Но и в обучении азам программирования все же есть смысл. Но это оправдано лишь тогда, когда учат не “накидыванию компонентов на форму”, а основам вычислений с использованием компьютера - то есть, как я уже говорил, конструкциям алгоритмического языка, операциям ввода-вывода, возможно - простейшим “общим” и вычислительным алгоритмам. Главное - это дать возможность самому произвести какие-либо расчеты, не дожидаясь появления специализированного софта. Кстати, про специализированный софт я хотел бы написать еще один пост, на этот раз - про аргумент начинающих линуксистов “у любой программы есть свободный аналог”.

К сожалению, в мире нет нигде не занятой “кучи людей, которые умеют пользоваться Matlab или программировать стандартные компьютеры”. Работа программиста стоит довольно дорого, так что большинство “программируемых пользователем” устройств, типа тех же калькуляторов или станков с ЧПУ - это одна из немногих возможностей дать не-программисту возможность вводить и выполнять какие-то алгоритмы. К сожалению, любые более богатые по возможностям устройства требуют уже наличия квалификации программиста, а ее-то у большинства работающих с техникой нет, каким бы странным это не казалось всезнающим “компьютерным энтузиастам”.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Tags: наблюдения, программирование
Subscribe

  • Таджикоанглийский

    Один ли я, читая Release Notes на этой картинке, вспоминаю Равшана и Джамшута? Запись опубликована в блоге Шуры Люберецкого. Вы можете…

  • Вдогонку истории про Кинопоиск

    Почитал комментарии к “перезапуску” Яндексом Кинопоиска. Что хочу сказать? Яндексовцы сделали просто офигенный и современный “сайт…

  • Про моторное масло

    Начитавшись блога Сергея Смирнова ( bmwservice), решил поменять моторное масло на какое-нибудь “ рекомендованное“. Выбрал из списка…

Comments for this post were disabled by the author