> в стандарте нет функций чтения/записи BMP - абсолютно логично; то, что в Delphi такие функции есть - следствие того, что Delphi не регулируется каким-нибудь стандартом
Она регулируется спросом...
>И кстати, ты сравнивал размер C-программы (со всеми оптимизациями) и Delphi-программы (со всеми библиотеками)?
C-прога (и С++ версия) занимали порядка 120 Кб (не считая стандартных рантаймовых из Винды - еще несколько сотен килобайт)... Дельфийская (самодостаточная) версия весила чуть больше 300 Кб. Но речь не о размере, а о "великости"
>И кстати, я не верю, что нигде в интернете нет библиотек для C, работающих с графикой... Далее, непонятно, зачем нужна неделя на переписывание с C на C++?
Они есть, но очень неудобные.
Это был эспериментальный проект и неделя потребовалась, чтобы определиться с тем, какие проблемы надо учитывать при обработке исключений
Алгол
Наверное надо пояснить, что в моей терминологии "экспериментальный проект" означает необходимость проведения исследований каких-либо алгоритмов. В том проекте около 5 дней ушло на определение алгоритмов улучшения качества изображения перед сегментацией. На реальных (т.е. зашумленных) изображениях объекты разваливаются на много "независимых" частей, а собрать их потом из этих мелких частей невозможно. Сама сегментация (она реализована в другой программе) довольно проста, но главная её цель - это выделить объекты так, чтобы их нельзя было перепутать с флуктуациями фона. Обработку исключений (чтение и запись файлов, выделение памяти для массивов, обработка командной строки) я всегда пишу в конце, чтобы потом не возиться с переименованием каких-то объектов в программе. Нельзя написать обработку исключений для выделения памяти под массив, не имея выбранного алгоритма, который будет использовать этот массив
Если компилятор - Visual C++, то 120 Кб - это в Release-конфигурации?
Извиняюсь за очередной оффтоп в теме про Алгол, но разве никто не пробовал билдить программы под Дельфи с ран-тайм библиотеками? В этом случае размер exe-файла (например, под Дельфи 7) получается порядка 16-17 КБайт. Прикол только в том, что стандартные библиотеки для MSVS программ зачастую уже есть в системе (что неудивительно), а .bpl файлов, естественно, нет.
Я по-моему чётко написал "дельфы", приставки .NET там не было.halyavin wrote:rabid rabbit
Какой именно дельфи? Delphi .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-х годов по обработке изображений.
Да, дебуг весит раза в два больше.
>разве никто не пробовал билдить программы под Дельфи с ран-тайм библиотеками?
В этом случае размер 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;
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])
КЦ
Все
Кон
Алг 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.
Мы этот язык учили в школе. А перед этим учили ЛОГО. Хотя "учили" - это громко сказано...
ИМХО лучше начинать с языков типа 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],k++)
for(int k=1;k<N;s+=x[k++])
for(int k=1;k<N;s+=x[k++])
Who is online
Users browsing this forum: Google [Bot], Semrush [Bot] and 27 guests