Это не официальный сайт wikipedia.org 01.01.2023

Обсуждение:Алгол — Википедия

Обсуждение:Алгол

Последний комментарий: 5 лет назад от 178.130.38.224 в теме «Передача параметров по имени»

Обсуждения Править

какие войска в дореволюционной России назывались инфантерией?

А какое это отношение имеет к Алголу? --Рязанцев Александр 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)Ответить[ответить]