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

На вчерашнюю запись [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 или программировать стандартные компьютеры”. Работа программиста стоит довольно дорого, так что большинство “программируемых пользователем” устройств, типа тех же калькуляторов или станков с ЧПУ – это одна из немногих возможностей дать не-программисту возможность вводить и выполнять какие-то алгоритмы. К сожалению, любые более богатые по возможностям устройства требуют уже наличия квалификации программиста, а ее-то у большинства работающих с техникой нет, каким бы странным это не казалось всезнающим “компьютерным энтузиастам”.

16 комментариев

  1. FAndrey пишет:

    тут хочется сказать несколько слов в защиту платформ альтернативных виндовсу :)
    Во первых наверное все *nix подобные OS содержат такой простой и мощный инструмент как sh, а зачастую и более мощные аналоги, для их освоения не надо усидчивости больше чем для освоения бейсика, а умеют пожалуй то же, если не больше.
    Про математический софт, да Матлаб конечно крут, но есть более простые и не менее академичные инструменты, например мы переходные процессы считали в софтинке ProgramCC, очень приятная вещь, для ученических целей даже бесплатная, а в FreeBSD у меня в системе портов есть специальный раздел с более чем 500 программами, думаю из них тоже можно найти кучу достойного и простого в применении софта, так что не все так плохо ;)
    Хотя мощность современного PC конечно избыточна.

  2. SoapMaker пишет:

    Но сейчас все же КПК имхо предпочтительнее куркулятора
    под WIn Mobile несложно же вроде кодить

    и потом наверняка есть и интерпритаторы какие нибудь под эту платформу.

    не говоря уже о софтовых калькуляторах

    Единственная ниша для ПМК имхо сйчас – это интерфейс к какому нибудь девайсу, тоесть использование в качестве контроллера, потому что разработчику нет необходимости самому паять обвязку к контроллеру. и это очень удобно.

  3. [info]d191t41_n0153 пишет:

    хороший, годный пост! как и многие другие

  4. [info]soonts пишет:

    >скорость расчетов для пользователя остается неприлично низкой

    В любой версии windows начиная с 98, кроме калькулятора имеется скриптовый язык VBScript. Он очень похож на бейсик.
    Вот скрипт из трёх строчек для подсчёта той резонансной частоты. Надеюсь я не накосячил с единицами измерений, я не радиотехник, но в любом случае принцип понятен.

    strL = InputBox(”Enter the inductance in Henry”)
    strC = InputBox(”Enter the capacitance in Farad”)
    WScript.Echo “Resonance frequency in Hertz is ” & ( 1.0 / Sqr( CDbl(strL) * CDbl(strC) ) )

    Этой функциональностью можно пользоваться даже на голом windows, редактируя скрипты в notepad; хотя лично я предпочитаю far manager или visual studio.
    Это ли не “доступная пользователю технология” ?

    >Можно сколько угодно обсуждать преимущества C перед Бейсиком
    Язык С плохо подходит для таких вещей.
    На C# или VB.NET ты за те же 10-15 строчек получишь не менее бодрый график решения (предварительно покликав мышой шоб добавить на форму какой-нить microsoft chart control). Обращаю внимание, что chart control бесплатный, и visual studio тоже (для этих целей express edition достаточно).

    Для инженерных расчётов matlab намного удобнее, хотя и дороже конечно. В нём решение уравнения с выводом графика будет занимать не 10-15 строчек, а две.

    >большинство “программируемых пользователем” устройств, типа тех же калькуляторов или станков с ЧПУ – это одна из немногих возможностей дать не-программисту возможность вводить и выполнять какие-то алгоритмы
    А оно ему надо?
    Если надо, всё равно придётся учиться программировать на чём-нибудь. Лучше сразу на нормальном языке, а не на птичьем.

    Кстати, станкам с ЧПУ алгоритмы и программирование как правило ваще не нужны, поставляющееся с ними ПО используют как чисто визуальную хрень.
    Вот например типичный скриншот RobotStudio, это среда программирования промышленных роботов ABB robotics:
    http://www.foundry-planet.com/uploads/RTEmagicC_08-10-10-CN-Bild1_01.jpg.jpg
    Да, под них можно программировать и алгоритмы тоже.
    Всё упирается в то, что как правило, люди, которые хорошо умеют обработку материалов, не умеют и не хотят программировать. Да им это и не нужно в общем-то.

    >более богатые по возможностям устройства требуют уже наличия квалификации программиста
    Промышленные роботы ABB существенно более сложные, но квалификации программиста не требуют.

    • [info]stepanishchev пишет:

      Простите:

      > WScript.Echo “Resonance frequency in Hertz is ” & (1.0 / Sqr(CDbl(strL) * CDbl(strC)))

      - что, вот _это_ не птичий язык?

      Даже если опустить текстовую строку – попробуйте продиктовать этот текст по телефону. Желательно человеку не знакомому с программированием, не учившему английский и, желательно, слегка глуховатому. Потом объясните ему, что с этой строкой нужно делать дальше.

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

      Только не нужно рассказывать про интуитивно понятный смысл тетраграмматона “CDbl”. Ну и про очевидные всем и каждому, опять же по Вашему сугубо личному мнению, приёмы работы с Matlab-ом или компилятором C#.

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

    • А еще есть bat-файлы. А еще есть выполняемый в браузере JavaScript. А еще в состав Win 9x входила программа debug, где можно было напрямую изменять содержимое оперативной памяти и так программировать в машинных кодах. Единственное оличие от QBasic – о существовании всего этого надо знать, а в меню “Пуск” никакого упоминания обо всем об этом нет. Парадокс?

  5. Дмитрий пишет:

    А в чем смысл поста? Программируемые калькуляторы (ПК) нужны потому что в винде нет встроенного интерпретатора бейсика?
    Во-первых, он есть, просто надо знать матчасть. Во-вторых ПК были нужны как портативные приборы для автоматизации расчетов. Но сейчас за ту же цену есть более функциональные устройства, которые можно использовать в том числе и как ПК. Даже VBScript будет удобнее и быстрее в разработке, чем язык MK-52, не говоря уже о наличии специализированных (а иногда и бесплатных) средств для инженерных расчетов.

    Кстати, о цене. MK-52 в свое время стоил 115 рублей, что в нынешнем масштабе цен составляет не менее 10 т.р. За эти деньги можно купить хороший нетбук с бейсиком и редактором “из коробки”. Извращенцы могут установить эмулятор спектрума и решать дифуры в атмосфере 80-х ;-)

    В конце 80-х в магазинах канцтоваров на витринах рядом с МК-52,54 лежали логарифмические линейки. Думаю, что в настоящее время ситуация повторяется, только роль логарифмической линейки играет программируемый калькулятор.

    • VBScript? Сравните его с несколькими десятками команд того же QuickBasic начала 90-х. Объясните человеку, ни разу не сталкивавшемуся с программированием, что такое “Sqr(CDbl(strL))”.

      Смысл поста в том, что доступные средства для вычислений (не для игр, не для выхода в интернет, не для просмотра кино, а именно для вычислений) за 20 лет практически не развивались. И TI-92, и МК-152 не сильно отличаются от своих собратьев двадцатилетней давности.

      Насчет нетбука. Ваши логика напоминает мне вот такое: автомобиль “Руссо-Балт” в 1913 году стоил 30 000 рублей, что в нынешнем масштабе цен составляет не менее 200 000 долларов. За эти деньги можно купить пару десятков “Renault Logan”, и еще останется.

      Лично я считаю, что при достаточно массовом выпуске стоимость МК-152 может составлять менее 1500 рублей.

      Насчет наличия интерпретаторя Бейсика в винде – простите, но набирать скрипты в Notepad и запускать их двойным кликом мышки – довольно извращенная процедура.

      • [info]stepanishchev пишет:

        Массово выпускать именно МК-152 большого смысла не имеет, это скорее лабораторный прибор, в отличие от МК-161. Но и для него можно значительно уменьшить цену при увеличении объёма выпуска.

        Для сравнения, как будет выглядеть такая программа на ПМК: x F√ F1/x С/П – четыре байта вместе с командой останова. Все команды, как в Спектруме, написаны на самих клавишах.

      • Дмитрий пишет:

        В таком случае можно сравнить UMPC c логарифмической линейкой в 40-е годы прошлого века.

        Вы вообще с VBScript работали? Это же обычный бейсик, наследник QBasica. С ним можно работать и не зная про ООП-навороты. А приведение типов soonts, видимо по привычке сделал, это хороший

        • Дмитрий пишет:

          стиль программирования. :)

          Смысл в том, что инженер, знакомый с программированием (а таких большинство) действительно может сделать расчеты на свежекупленном нетбуке, даже не устанавливая QBasic или эмулятор Спектрума (что тоже занимает несколько минут). Если ему больше ничего от карманного вычислителя не нужно, то он купит MK-152. Проблема в том, что никто не откажется за те же деньги приобрести универсальное устройство с нормальной ОС и WiFi.

          Насчет запуска программы… Да, конечно, сохранить файл и щелкнуть два раза по ярлыку – одна из тяжелейших задач в современном программировании. Но вы когда-нибудь пробовали редактировать программу на MK? Как вам задача вставки команды в самое начало 80-и шаговой программы?

          Хе, если заменить здесь нетбук на ПМК, а ПМК на логарифмическую линейку, то спор можно перенести в 80-е годы. На ЛЛ тоже можно делать расчеты одним движением пальца. :) Боюсь, что и ПМК сейчас выпускают не из-за удобства использования.

          P.S. Прошу прощения. Случайно нажал какую-то комбинацию кнопок в Firefox’е и отправил недописанный комментарий.

  6. [info]stepanishchev пишет:

    Разрешите поддержать: http://beta.delta-z.com/programmiruemyie-kalkulyatoryi-umnomu-dostatochno/

    Если отбросить рекламу и некоторые преувеличения, речь там именно об этом и шла.

  7. [info]golergka пишет:

    1. Я по работе считаю постоянно, правда, расчёты довольно простые, больше катологизации и анализа данных. Так вот, лично для меня Excel – идеальный инструмент.
    2. Как раз для криворуких “не-программистов” и существуют безопасные языки высокого-высокого уровня, типа C#, решающие такие очевидные проблемы самостоятельно. И языков, ни разу не расчитанных на “профессиональных программистов”, тоже полно.

    • 1. Реализуй в Excel решение дифференциального уравнения каким-нибудь несложным методом :) Даже не Рунге-Куттой, а хотя бы Ньютоном. А вот на любом Бейсике – пять строчек :)

      2. Не надо считать пользователя идиотом. Язык не должен быть “безопасным”, если эта безопасность достигается за счет его усложнения. В том же Бейсике были операции PEEK и POKE, способные при неправильном использовании угробить все, что угодно. Зато все команды там – простые английские слова, а в Спектруме был крутейший бонус – они были выгравированы на клавиатуре и вводились одним нажатием кнопки. Ошибиться было нельзя. В любом же языке “высокого-высокого” уровня имеем совершенно не нужное усложнение, как, например, в этом коментарии:

      http://shura.luberetsky.ru/2009/04/23/po-povodu-neobkhodimosti-programmirovaniya/#comment-4726

      • Дмитрий пишет:

        Открою секрет – в Excel’е тоже бейсик есть, на нем макросы пишут :) Самый что ни на есть обычный васик. Решение дифура на нем ничем не отличается от написанного в GWBasic. Там даже не надо сохранять макрос перед запуском. Прогресс налицо.

        А в бесплатном редакторе notepad++ есть бонус покруче спектрумовского – по мере набора команды он сам подбирает подходящую. Для не-программиста это будет выглядеть фантастически, а уж возможность видеть программу на экране целиком, а не в виде нескольких шестнадцатеричных кодов заставить его проголосовать ногами за переход с ПМК на нетбук при наличии лишних 200$.

  8. Тимур пишет:

    Хороший пост.

    В своё время пользовался матлабом, потом устал его ставить/качать/крякать.

    И в итоге все расчёты делаю в ёкселе.
    Да, изврат.
    Но, привык, и ёксель у меня теперь творить чудеса. Расчёты многоэтажные, на выходе и графики и цифровые данные с подсветкой выхода важных значений из целевого диапазона.

    И, всё таки легче и быстрее, чем было в своё время на спектруме.

    off: для меня современный Урал состоит из рассылки “ТАУ Новости”, Люберецкого, DiHalt’а, Ройзмана, и Беркема аль Атоми.
    И того, что эти три типа пишут в своих блогах.