Меню
Главная
Случайная статья
Настройки
|
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями.
Содержание
Обсуждения
какие войска в дореволюционной России назывались инфантерией?
- А какое это отношение имеет к Алголу? --Рязанцев Александр 20:35, 26 июля 2009 (UTC)[ответить]
Алгол в Америке
История с Алголом в Штатах, мягко говоря, странная. Ну да, у IBM версия алгола была неудачной. Как, кстати, и первый PL/I, который был сделан "по мотивам". Но при чем тут IBM? Был и Burroughs и Univac. Burroughs справедливо упоминается в статье. Чья это, если не американская, фирма? Если посмотреть на список компиляторов начала 60-х, то там больше половины американские. Коммерчески Алогол не был распространен и в Европе. Чисто академический язык, полюбившийся математиками. 99.151.0.67 08:11, 7 февраля 2012 (UTC)[ответить]
Слишком быстрая разработка
Алгол был разработан в 1958 году, на недельной конференции в ETH (Цюрих, Швейцария) ...))))
Т. Е. автор статьи хочет сказать язык был разработан всего за неделю на конференции.... Thebeatles84 05:52, 10 сентября 2012 (UTC)[ответить]
Передача параметров по имени
Передача параметров по имени удивительно похожа на макросы препроцессора C, без всяких безумных функциональных сложностей.
Демонстрация (программа аналогична приведённой, добавлена инициализация массива и контрольный вывод):
/* begin */
#include <stdio.h>
/*
procedure p (a, b);
name a, b; integer a, b;
begin
for a:=1 step 1 until 10 do
b := 0
end p;
*/
#define p(a,b) { for(a=0; a<10; a++) b=0; }
/* the difference 1->0, 10->9 is due than C indexes are always started with zero */
int main()
{
/* integer i; integer array s [1:10]; */
int i, s[10];
for (i=0; i<10; i++) s[i]=3+i*i; /* fill with some values */
puts("before:");
for (i=0; i<10; i++) printf("%d->%d; ", i, s[i]);
printf("\n");
/* p (i, s[i]) */
p(i, s[i]);
puts("after:");
for (i=0; i<10; i++) printf("%d->%d; ", i, s[i]);
printf("\n");
return 0;
}
/* end */
- Ну, да, похоже. И что? Как это относится к теме статьи? Кстати, про реализацию "того же другими средствами" там сказано. --dm обсужд. 19:35, 21 октября 2012 (UTC)[ответить]
- Да, но макросы ограничены по управляющим конструкциям и отрабатываются при компиляции, а процедуры с параметрами, передаваемыми по имени, отрабатываются при выполнении программы. Например, вы не сможете написать в Си рекурсивный вызов макроса. Поэтому функциональность того примера, который использовал сам Йенсен для иллюстрации своего трюка, Вы воспроизвели, но, если бы он закрутил свою процедуру p посложнее, то этого сделать бы не удалось. 178.130.38.224 07:24, 6 сентября 2017 (UTC)[ответить]
Отличие в том, что я привёл конкретный пример, а не абстрактные рассуждения сомнительной достоверности со ссылками на несуществующие статьи. Fidoman 15:55, 23 октября 2012 (UTC)[ответить]
Добавил ремарку в текст, надеюсь она не вызывает возражений Fidoman 16:20, 23 октября 2012 (UTC)[ответить]
|
|