Лившиц Виталий Яковлевич : другие произведения.

Комментарии: Прогресс в программировании
 ()

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
  • © Copyright Лившиц Виталий Яковлевич
  • Размещен: 01/05/2019, изменен: 01/05/2019. 10k. Статистика.
  • Статья: Естествознание
  • Аннотация:
    О прогрессе в современном программировании. Читайте, если вы разбираетесь в программистских терминах. Обычному читателю будет непонятно.
  • ОБСУЖДЕНИЯ: Естествознание (последние)
    19:42 Тишайший П. "Принудительная геометрия Вселенной" (129/1)
    10:48 Березина Е.Л. "Как-то юнга Дудочкин бросил " (5/2)
    10:21 Nazgul "Медный купорос взрывается!" (671/1)

    Добавить комментарий Отсортировано по:[убыванию][возрастанию]
    Страниц (2): 1 2
    ОБЩИЕ ГОСТЕВЫЕ:
    01:05 "Форум: Трибуна люду" (884/37)
    01:04 "Форум: все за 12 часов" (376/101)
    00:36 "Технические вопросы "Самиздата"" (197/33)
    21:45 "Диалоги о Творчестве" (224/17)
    16:01 "Форум: Литературные объявления" (665/1)
    25/11 "О блокировании "Самиздата"" (294)
    ОБСУЖДЕНИЯ: (все обсуждения) (последние)
    03:30 Редактор "Форум: все за 12 часов" (338/101)
    03:10 Бояндин К.Ю. "Генеративные сервисы для звуковых " (34/2)
    03:07 Джиллиан "Птенцы Бедвира" (243/10)
    02:46 Родин Д.М. "Князь Барбашин 3" (802/5)
    02:43 Васильева Т.Н. "Информация о владельце раздела" (25)
    02:39 Буревой А. "Чего бы почитать?" (867/7)
    02:05 Чернов К.Н. "Записки Империалиста Книга " (616/29)
    02:04 Коркханн "Угроза эволюции" (784/41)
    02:00 Безбашенный "Запорожье - 1" (987/19)
    01:53 Колышкин В.Е. "Контрольное обрезание" (55/31)
    01:49 Стоптанные К. "Форум журнала "Горизонт"" (25/2)
    01:24 Лера "Облетели последние листья" (21/3)
    01:21 Кротов С.В. "Чаганов: Война. Часть 4" (194/10)
    01:17 Баламут П. "Ша39 Стратегия и тактика противодействия " (572/10)
    01:14 Седрик "Список фанфиков с моими комментариями" (360/5)
    01:06 Nazgul "Магам земли не нужны" (813/8)
    01:02 Оленникова О. "Размышления о жизни на Земле" (60)
    00:59 Поэтико "Краткие отзывы по конкурсу " (9/1)
    00:53 Гончарова Г.Д. "Устинья, дочь боярская - 1. " (156/7)
    00:47 Давыдов С.А. "То, что я читаю и смотрю" (923/1)

    РУЛЕТКА:
    Путь Шамана. Шаг
    Ночлежка "У Крокодила"
    В родном краю
    Рекомендует Пузеп Н.В.

    ВСЕГО В ЖУРНАЛЕ:
     Авторов: 108551
     Произведений: 1670555

    Список известности России

    СМ. ТАКЖЕ:
    Заграница.lib.ru
    | Интервью СИ
    Музыка.lib.ru | Туризм.lib.ru
    Художники | Звезды Самиздата
    ArtOfWar | Okopka.ru
    Фильм про "Самиздат"
    Уровень Шума:
    Интервью про "Самиздат"

    НАШИ КОНКУРСЫ:
    Рождественский детектив-24


    24/11 ПОЗДРАВЛЯЕМ:
     Белашова Ю.Ю.
     Белль С.В.
     Богатикова О.Ю.
     Богданов А.
     Бонд. П.Б.
     Бредникова Е.Е.
     Букаринов Д.Н.
     Веденин В.А.
     Ветер К.
     Визмор Э.Н.
     Виноградова А.В.
     Галицкая Д.И.
     Гамова Д.
     Гончарова Е.В.
     Егорова В.Ю.
     Ежова Е.С.
     Елисеева Н.В.
     Ельников А.Д.
     Жалилова Л.С.
     Желнов П.
     Иванов А.А.
     Инеева С.
     Ищенко Г.В.
     Казарян М.В.
     Келлер Е.
     Кизяева А.А.
     Кичилова К.Ф.
     Колодиец Д.Н.
     Кольцо-Гид
     Команов С.С.
     Кондрашов В.А.
     Копышов А.Н.
     Корнеева Т.М.
     Коршунова Т.В.
     Ксения
     Лобков А.
     Луковкин К.
     Лучистая Д.Т.
     Макарчук С.С.
     Маковская Н.
     Маркевич П.
     Митусова Л.П.
     Можар Е.П.
     Морозов М.
     Пашкевич С.
     Пимонов В.В.
     Пирумова А.Б.
     Приходько О.
     Пятница М.
     Радонин С.
     Ревельский Х.
     Романов Н.П.
     Рябенкова Д.П.
     Серебряная Е.
     Силаков Г.
     Соколовская Е.
     Солнечная
     Соцкая С.
     Сперанская И.В.
     Таа
     Трещев Ю.А.
     Тягин П.А.
     Шаповалова Д.В.
     Шеннон Р.А.
     Шишкина Д.
     Щедрин Р.
     Ak108u
     Ive
     Mollydolly
     Natkam
     Valxalla
     Viligodaeum
     Viscount M.D.
    ПОСЛЕДНИЕ ПОСТУПЛЕНИЯ: (7day) (30day) (Рассылка)
    19:03 Jackallionravenv "Омен Iv: Возбуждение"
    17:47 Бородин С.А. "Родославия"
    15:14 Петри Н.З. "Колесо превращений. Книга "
    21/11 Кукин В. "Случайные рифмы"
    21/11 Моисеева О.Ю. "Сердце Кометы"
    12. *uirh (uirh@mail.ru) 2024/04/14 13:10 [ответить]
      Автор абсолютно прав. Но вангую, что в ближайшем будущем само понятие "бизнес" как процесс извлечения прибыли накроется медным тазом так, что лет через 30-50 за сам этот стиль мышления уже будут убивать. Хорошо если только морально...
      
       Однако, прогресс в программировании, он сам по себе. Собираемся мы к поясу астероидов а потом к соседним звёздам, или как?
      
       Однако, с поколениями ЯВУ автор малость напутал: классификацию эту ввёл еще в незапамятные времена, если не ошибаюсь, Замулин, автор языка Атлант.
       "Нулевое" поколение это языки низкого уровня - ассемблеры, ориентированные каждый на свою конкретную машину.
       Языки высокого уроовня (ЯВУ) первого поколения это безструктурные с фиксированным в языке набором типов данных. Фортран, Фокал, Бейсик, Кобол. Лисп кстати тоже, хотя и не операторный а функциональный. Алгол-60 где-то на границе: структур данных еще нет, а структуры управления уже есть.
       Языки второго поколения - со структурами управления и не только встроенными но и определяемыми типами данных. Например Си и Паскаль.
       Языки третьего поколения - с абстрактными типами данных (например такими как классы), абстрактными операциями над ними и абстракциями управления (такими как итераторы). Ну да - Си++, Ява, Смолток...
      
       Функциональные языки это не новое поколение, а отдельный стиль (в т.ч. стиль мысшления). Можно вспоснить еще декларативные языки.
      
       Уровень языка.
       Вот я решаю некоторую задачу. Думал-думал и придумал. Алгоритм решения у меня в голове описан на том языке, на котором я думаю. Сначала набор образов (начиная от осознания того факта что вот эту задачу надо решать), потом в конце концов описыающий его текст на специализрованном подмножестве естественного языка, состоящем в основном из точно определенных терминов. Вот это - самый верхний уровень.
       Далее. У нас есть "исполнитель" - тупой, ограниченный но жутко исполнительный. Его язык это обозначения тех действий, которые он способен выполнить. Это самый нижний уровень. Язык даже не ассемблера, а машинных кодов.
      
       И теперь моя задача - перевести ЭТО с верхнего уровня на нижний. Между верхним и нижним уровнем - семантический разрыв. Который мне и надо преодолеть.
       Начиная с какого-то момента для облегчения жизни сделали язык промежуточного уровня: самантический разрыв между ним и верхним уровнем преодолевает по прежнему человек, а между ним и нижним - системное программное обеспечение. А так как производительность человека сильно ограничена (десять отлаженных операторов в день на любом языке) то облегчение - просто огромное.
      
       Чем ближе понятия этого языка к понятиям которыми оперирует человек, тем более крупную задачу он сможет решить. Но и тем больше семантический разрыв снизу и тем более неэффективна реализация всего этого. Тем расточительнее используются ресурсы машины.
       Потому что преодолевается это исключительно интерпретацией.
      
       Выход придумали у нас еще в шестидесятых: поднять семантический уровень машины. Для начала хотя бы до уровня ЯВУ. Это наши машины сначала серии Мир, а потом Эльбрус. Вот только это уже не машины Фон-Неймана, где основная фишка - предельно упростить аппаратуру, переложив всё что можно на ПО, а машины Лебедева, где подход - противоположный: реализовать часть примитивом ЯВУ аппаратно. При чем не только семафоры (которые в системе с несколькими процессорами без аппаратной подержки просто невозможны) и завязанная на них работа с кэш-памятью, но и самоопределяемость данных - и типы элементарных значений, и их агрегаты (вектор, массив, файл...), и такая вещь как локальные переменные с промежуточными уровнями локальности или механизм ситуаций (оно же "исключения") без которого набор структурных операторов функционально неполон.
      
       У каждой машины есть свой ассемблер. Но и у каждого языка есть своя (чаще всего виртуальная) машина, для которой он является ассемблером. Или скорее "автокодом": он же не команды этой машины отображает, а реализованные в ней примитивы. Виртуальная потому, что всё сверх того, что реализовано аппаратно - делается интерпретацией. Си (который еще называют "ассемблером для лентяев") хорош тем, что честно отображает машину фон-Неймана, интерпретацией там - относительно немного, но главное - точно известно что и как именно. Такая машина Лебедева как Эльбрус сделана так, что автокод для неё - максимально продвинутый и расширенный язык второго поколения. Следующий шаг на этом пути - такая машина Лебедева, для которой автокодом был бы уже язык третьего поколения. (Лично я еще в начале девяностых прикидывал, как она должна быть устроена. http://samlib.ru/u/uirh/arh_a5_1989.shtml) Но она - для решения совершенно другого класса задач (на который сейчас все забили), а не "на интерфейс", как сейчас.
      
       А вот что касается языков...
       Требуется дальнейшее приближение их примитивов к системе понятий, которыми оперирует человек. А как?...
       Объектные языки впринципе годятся, но упаси бог злоупотреблять абстракциями, как сейчас: способ запутать и обмануть самого себя. Как китайское "очень гибкое копьё" - копейный наконечник на верёвочке. Оружие мастеров, а для всех остальных средство засветить себе по лбу. Что обычно и происходит в якобы-объектном программировании.
      
       Теоретически четвертое поколение - программирование на естественных языках, то есть без собственно программирования. Но это только после решения проблемы понимания. Но не дай бог она будет решена в ближайшее время - будет такое ОЙ!...
    11. *Лившиц Виталий Яковлевич 2019/06/20 09:35 [ответить]
      > > 10.Ed
      >Вот если бы они придумали такую программу в которую просто ТЗ задаеш и она тебе готовую программу выдает.Вот это был бы прогресс.
      
      Код - есть формализованное ТЗ. В идеале. Иной раз действительно так.
      
      А вообще, полезно вам побольше работать. Тяга к кнопке "Зашибись" и желание использовать других исчезнет. :)
    10. Ed (edmos71@hotmail.com) 2019/05/05 22:54 [ответить]
      Поэтому я лично особого прогресса в програмировании не вижу.Это дело как было трудным так и осталось, а может даже и труднее стало так как теперь надо еще и о распараллеливании думать. Вот если бы они придумали такую программу в которую просто ТЗ задаеш и она тебе готовую программу выдает.Вот это был бы прогресс.
    9. *Лившиц Виталий Яковлевич 2019/05/05 21:17 [ответить]
      > > 8.Ed
      >> > 7.Лившиц Виталий Яковлевич
      >> От JAL я далек как от Луны. Не моя область, увы.
      >
      >В учебных заведениях учат только основам а дальше ты сам должен учится.А самый лучший способ для этого это программы других, более опытных людей.
       Верно. Распыляться тоже вредно. Лучше выбрать одну область. Моя вот - бизнес программы, базы данных.
      
      >
      >Да и вообще когда видиш насколько сложные программы сейчас есть, то становится ясно почему они все с теми или иными ошибками.Просто невозможно все случаи предусмотреть и поэтому постоянно нужны багфиксы. А в некоторых странах собираются выпустить на удицы самоездяшие автомобили. Вот придурки! Они же всех пешеходов передавят.
      
       Все правильно. Даже если программа точно соответствует ТЗ, само ТЗ может содержать ошибки, упущения. Сколько раз так было.
       Уже сорок лет машины учат ездить по улицам, воз и ныне там. Жизнь оказывается неисчерпаемой на ситуации. Там где человек примет меры, железный друг тупит. Ну и прямые ошибки, куда ж без них.
    8. Ed (edmos71@hotmail.com) 2019/05/05 14:45 [ответить]
      > > 7.Лившиц Виталий Яковлевич
      > От JAL я далек как от Луны. Не моя область, увы.
      
      Сначала я тоже был далек как от Луны но со временем стал ближе.Это может быть интересно для общего развития, можно увидеть как компилятор устроен.Конечно они все по разному устроены и обычно очень сложно.Я даже не знаю как некоторые люди могут такое придумать.Тем более что научится програмировать тоже не так то просто.В учебных заведениях учат только основам а дальше ты сам должен учится.А самый лучший способ для этого это программы других, более опытных людей.
      
      Да и вообще когда видиш насколько сложные программы сейчас есть, то становится ясно почему они все с теми или иными ошибками.Просто невозможно все случаи предусмотреть и поэтому постоянно нужны багфиксы. А в некоторых странах собираются выпустить на удицы самоездяшие автомобили. Вот придурки! Они же всех пешеходов передавят.
      
      
      
    7. *Лившиц Виталий Яковлевич 2019/05/05 09:57 [ответить]
      > > 6.Ed
      >>Я начал программировать в 1992 году.
      >
      >Ну тогда раскажите немного о ваших проектах.Что именно вы програмировали и на каком языке.
      >
       В темные времена MS_DOS Pascal/C, потом Delphi + Interbase/Firebird. Сейчас Java со Spring, иногда Java EE. Коммерческий программист. Всякие там интеграции, бизнес приложения. Их было миллион, трудно все упомнить. Масштаб за всю жизнь разный: от программки для автосервиса до концентратора данных одного из министерств РФ.
       Сижу на Linux, для собственного удовольствия пишу программы на D, на shell, читаю о других технологиях.
       И в одиночку работал, в коллективе, начальником небольшой команды.
       Самый обычный по нынешним временам.
      
       От JAL я далек как от Луны. Не моя область, увы.
    6. Ed (edmos71@hotmail.com) 2019/05/04 17:29 [ответить]
      >Я начал программировать в 1992 году.
      
      Ну тогда раскажите немного о ваших проектах.Что именно вы програмировали и на каком языке.
      
      Я например в основном програмирую PIC микроконтроллеры на ассемблере а также при помощи сомпилятора JAL. Этот сомпилятор сначала был написан однм програмистом по имени wouter van ooijen из голландии. Потом его исходный код был опубликован в sourceforge и я взялся его улучшать для своих нужд.И вообщем то теперь я доволен достигнутым и пытаюсь его продвинуть для более широкого пользования, но не очень успешно получается потому что конкуренции много.
      Если вы опытный програмист то посмотрите, может там что то улучщить можно.Я сделал все что мог.Хотя я понимаю что это большая и сложная программа и мне нужны были годы чтобы в ней разобратся, и то я не все там понимаю.Ну если вам делать больше нечего.
      
      Вот тут его можно скачать.
      https://www.4shared.com/rar/Lppz122lfi/jal_0490.html
    5.Удалено написавшим. 2019/05/04 10:03
    4. *Лившиц Виталий Яковлевич 2019/05/04 10:05 [ответить]
      > > 2.Кулаков Игорь Евгеньевич
      >Хороший текст. Особенно забавно было видеть "отлитые в лаконичные строки" ощущения, испытываемые в период с 1990 по настоящее время..
      
      Примерно угадали :) Я начал программировать в 1992 году. И твердо усвоил, что важнее любого инструмента умение им владеть.
      
      > > 3.Ed
      >Вообщем параллельное программирование это очень сложно пока что.
      Это целая наука.
      
       Но смотря что делать. Во многих языках сделали достаточно удобную модель. Причем старые языки при наличии определенной дисциплины ничем не хуже функциональных. Переход легче.
       Т.е. такой бум функциональных - искусственный вне зависимости от задач.
    3. Ed (edmos71@hotmail.com) 2019/05/03 23:18 [ответить]
      В многоядерном процессоре последовательная программа будет работать только на одном из процессорных ядер, и поэтому не станет быстрее. Таким образом, разработчики были вынуждены создавать новые инструменты для продуктивного параллельного программирования.
      Эта задача была частично решена разными способами:
      библиотеки (например, MPI, CUDA), директивы компилятора (например,OpenMP, OpenACC), языки программирования (например, PGAS) и
      распараллеливающие компиляторы (например, GCC, ICC, PLUTO).
      
      Автоматическое распараллеливание приложений - идеальное решение для того чтобы сделать параллельное программирование проще. Тем не менее, сегодняшние компиляторы не в состоянии генерировать параллельный код даже для простой последовательной программы, потому что они полагаются на классический анализ зависимости, который чрезвычайно чувствителен к синтаксическим изменениям и предотвращает успешное обнаружение параллелизма при наличии указателей и сложных потоков управления.
      
      Вообщем параллельное программирование это очень сложно пока что.
    Страниц (2): 1 2

    Связаться с программистом сайта.

    Новые книги авторов СИ, вышедшие из печати:
    О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

    Как попасть в этoт список

    Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"