Алгол

Everything you can't fit into other forums
  • Наверное надо пояснить, что в моей терминологии "экспериментальный проект" означает необходимость проведения исследований каких-либо алгоритмов. В том проекте около 5 дней ушло на определение алгоритмов улучшения качества изображения перед сегментацией. На реальных (т.е. зашумленных) изображениях объекты разваливаются на много "независимых" частей, а собрать их потом из этих мелких частей невозможно. Сама сегментация (она реализована в другой программе) довольно проста, но главная её цель - это выделить объекты так, чтобы их нельзя было перепутать с флуктуациями фона. Обработку исключений (чтение и запись файлов, выделение памяти для массивов, обработка командной строки) я всегда пишу в конце, чтобы потом не возиться с переименованием каких-то объектов в программе. Нельзя написать обработку исключений для выделения памяти под массив, не имея выбранного алгоритма, который будет использовать этот массив :)
  • Если компилятор - Visual C++, то 120 Кб - это в Release-конфигурации?
  • Извиняюсь за очередной оффтоп в теме про Алгол, но разве никто не пробовал билдить программы под Дельфи с ран-тайм библиотеками? В этом случае размер exe-файла (например, под Дельфи 7) получается порядка 16-17 КБайт. Прикол только в том, что стандартные библиотеки для MSVS программ зачастую уже есть в системе (что неудивительно), а .bpl файлов, естественно, нет.
  • halyavin wrote:rabid rabbit
    Какой именно дельфи? Delphi .NET?
    Я по-моему чётко написал "дельфы", приставки .NET там не было.
  • >Если компилятор - Visual C++, то 120 Кб - это в Release-конфигурации?

    Да, дебуг весит раза в два больше.

    >разве никто не пробовал билдить программы под Дельфи с ран-тайм библиотеками?
    В этом случае размер exe-файла (например, под Дельфи 7) получается порядка 16-17 КБайт.

    Пробовали, знаем... Проблемы в том, что на разных компах стоят 1) разные версии Дельфи; 2) специфические компоненты (для украшения интерфейса или разных форматов файлов) и их набор может не совпадать.

    >Извиняюсь за очередной оффтоп в теме про Алгол

    Про алгол я уже высказывался - всеми конечностями за :) (так как это почти Паскаль, хотя и частым использованием go to (типа jmp в асме)).

    Для примера возьмем книгу Растригин Л.А. С компьютером наедине. - М.: Радио и связь, 1990. - 224 с.: ил. - (Массовая радиобиблиотека: Вып. 1157)

    В ней приведены примеры программ вычисления среднего значения ряда чисел для разных языков.
    Алгоритм - все цифры сложить и разделить на кол-во членов ряда.

    Фортран (в памяти уже есть массив X(K))

    S=0 Присвоить ноль начальному значению суммы
    DO 5 K=1,N N раз сделать цикл до метки 5

    5 S=S+X(K) накопленная сумма + очередной член ряда
    S=S/N результат
    TYPE*S вывод результата

    Бейсик

    10 S=0
    20 FOR K=1 TO N
    30 S=S+X(K)
    40 NEXT K
    50 S=S/N
    60 PRINT S
    70 STOP
    RUN

    АЛГОЛ

    begin
    K:=1; S:=0
    2 if K=N then go to 1
    else S:=S+X(K)
    K:=K+1; go to 2
    1 S:=S/N
    write S
    end

    Паскаль

    BEGIN
    K:=1; S:=0
    WHILE K<N DO BEGIN
    S:=S+X(K); K:=K+1
    END
    WRITE (S/N)
    END

    ИМХО, Растригин написал проги не лучшим образом, так в Алголе есть циклы. Описание Алгола 60 я читал в Папернов А.А. Логические основы цифровых машин и программирования. М., "Наука", 1968.
    ЗЫ: Читал, чтобы разобраться в статьях 60-70-х годов по обработке изображений.
  • s=0;
    for(int k=1;k<N;s+=k++);
    std::cout<<s/n;

    :)
  • Современный фортран:

    Code: Select all

    integer(4) i
    real(8) s
    real(8) x(1:n)
    s=0
    do i=1,n
      s=s+x(i)
    end do
    s=s/n
    write (*,s)
    
    Алгол я учить не собираюсь, но пару раз приходилось в книгах читать программы на нем. Перевод на паскаль не составил большого труда.
  • Насчёт мёртвых языков, у меня есть GNU Prolog и GNU Smalltalk.
  • Жаль, что кажется никто не скачал сам алгол, мне понравилось то, что проги на "русском" пишутся :) Хотя наверное это изврат, но детей в детском саду программированию учить уже можно:

    Алг M(Вещ Таб А[1:10,1:10])
    Нач
    Цел c,q,n,i,j,k,l,x
    Вещ f,d,b
    Вывод("Решение систем линейных уравнений методом Жордана-Гаусса")
    Вывод("Введите количество неизвестных")
    Ввод(n)
    Вывод("Введите матрицу коэффициентов")
    Для i От 1 До n
    НЦ
    Для j От 1 До n
    НЦ
    Ввод(А[i,j])
    КЦ
    КЦ
    Вывод("Введите столбец свободных членов")
    Вывод(j)
    Для i От 1 До n
    НЦ
    Ввод(А[i,n+1])
    КЦ
    i:=1
    q:=0
    Повторить
    c:=1
    Если А[i,i]=0
    То
    c:=0
    Для j От i До n
    НЦ
    Если А[j,i]<>0
    То
    c:=1
    x:=j
    Все
    КЦ
    Если c=1
    То
    Для j От 1 До n+1
    НЦ
    b:=а[i,j]
    а[i,j]:=а[x,j]
    а[x,j]:=b
    КЦ
    Иначе
    Вывод("Ведущий элемент равен 0")
    q:=1
    Все
    Все
    Если c=1
    То
    f:=а[i,i]
    Для j От 1 До n+1
    НЦ
    а[i,j]:=а[i,j]/f
    КЦ
    Для k От 1 До n
    НЦ
    Если k<>i
    То
    d:=а[k,i]
    Для l От 1 До n+1
    НЦ
    а[k,l]:=а[k,l]-а[i,l]*d
    КЦ
    Все
    КЦ
    i:=i+1
    Все
    До (i>n или q=1)
    Если q=0
    То
    Вывод("Результат")
    Для i От 1 До n
    НЦ
    Вывод("X(",i,")=",А[i,n+1])
    КЦ
    Все
    Кон
  • VS2005 ест все идентификаторы из текущей локали даже на кетайском можно + дефайны и что хош можно
  • http://offline.computerra.ru/print/offl ... 411/12509/

    Мы этот язык учили в школе. А перед этим учили ЛОГО. Хотя "учили" - это громко сказано...
    ИМХО лучше начинать с языков типа Lua или Python.
  • ИМХО никакой пользы от луа/питона в реальном программировании нет :)

    Скорее наоборот слишком расслабляет и заставляет использовать идиомы недоступные в ЯВУ
  • >for(int k=1;k<N;s+=k++);

    for(int k=1;k<N;s+=x[k],k++); :)
  • >for(int k=1;k<N;s+=x[k],k++)
    for(int k=1;k<N;s+=x[k++]) :)
  • Who is online

    Users browsing this forum: Google [Bot], Semrush [Bot] and 27 guests