Форум: "Потрепаться";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];
ВнизPL/1 - Programming Language One Найти похожие ветки
← →
Sur © (2004-11-30 12:50) [0]Недавно читал книгу, где было написано про язык PL/1. Этот язык программирования был разработан IBM-ом в 1964 году, но он значительно мощнее чем сегоднейшние C++, Pascal, ...
Ну кароче говоря я в восторге от этого языка. И мне интересно что об этом думают мастера.
← →
Sur © (2004-11-30 13:34) [1]что никто не слышал про этот язык?
← →
boriskb © (2004-11-30 13:36) [2]Программировал на нем лет 5-7. Могучайший язык. Реализация была не без глюков. А по замыслу - лучший для своего времени.
← →
Sur © (2004-11-30 13:42) [3]а почему <<лучший для своего времени.>> ?
← →
boriskb © (2004-11-30 13:47) [4]Сейчас понятие "язык программирования" означает немного не то, что в 70-80-е годы. Сейчас язык берет средой разработки.
Что Pascal без Turbo(сначала) и Delphi(позже) ? Так... один из многих...
← →
boriskb © (2004-11-30 14:10) [5]boriskb © (30.11.04 13:47) [4]
Да и как сравнивать? А объектное программирование? Куда сейчас без него? (Хотя нафига оно нужно по большому счету?) А экранная графика? Тогда же даже понятий таких не было.
← →
Странник © (2004-11-30 14:29) [6]Помню, помню. Классный язык, мощный.
С поддержкой БД.
← →
Юрий Зотов © (2004-11-30 14:53) [7]Кому интересно - постарайтесь найти журнал Byte/Россия, №3 за 2000 год. Там неплохой обзор языков, с примерами кода. В том числе, и PL/1. В Инете точно видел перепечатки (правда уже довольно давно).
← →
ДедушкаКо (2004-11-30 14:54) [8]во времена ЕС ЭВМ был массовым
на первых микропроцессорах- как PL/M
не прижился видать
штаны галифе тоже когда-то было "мощнее" :)
о поддержке БД не помню. да и самих БД в те времена тоже- только файлы ;)
← →
Anatoly Podgoretsky © (2004-11-30 15:02) [9]ДедушкаКо (30.11.04 14:54) [8]
во времена ЕС ЭВМ был массовым на первых микропроцессорах- как PL/M
Не надо ставить знак равенства, ничего общего, кроме двух первых букв в названии, даже разработчики разные. PLM и PLM-16 тоже неплохии языки, мне нравились. Кроме того фирмой Интел на них были написаны и свои ОС, тоже хорошии, подход у Интел очень грамотный, это не лоскутный ДОС
← →
boriskb © (2004-11-30 15:08) [10]ДедушкаКо (30.11.04 14:54) [8]
да и самих БД в те времена тоже- только файлы ;)
Круто :) Точно помнишь? Одно из двух - или очень уж старый и забыл или молодой и судишь по ... а черт его знают по чем молодые те времена судят :))
← →
Юрий Зотов © (2004-11-30 15:23) [11]Насчет прямой поддержки БД в PL/1 - тоже не помню такого (хотя писал на нем несколько лет и знал, вероятно, весь - включая и редко используемые вещи).
Поддержка всех видов файлов и всех методов доступа к записям в них (последовательный, индексно-последовательный, прямой) - это да, такое точно было. Но ведь это еще не БД, саму БД все равно нужно было делать ручками.
← →
boriskb © (2004-11-30 15:27) [12]Юрий Зотов © (30.11.04 15:23) [11]
Я писал в ответ на
да и самих БД в те времена тоже- только файлы
← →
Dok_3D © (2004-11-30 15:45) [13]И яяя... программировал на нем. Можно даже сказать что много.
Насчет значительно мощнее чем сегоднейшние C++ - как тут сравнить? Он даже не объектно-ориентированный.
Да компы были - EC-1045. Содранные в IBM-360. Старье ...
Похож на Pascal.
← →
boriskb © (2004-11-30 15:50) [14]Dok_3D © (30.11.04 15:45) [13]
Похож на Pascal.
Это что-то уже...
Чем же это похож? :) IF then есть и там и там? :))
← →
MOA © (2004-11-30 15:53) [15]Кстати, PL-1 известен как классический пример неудачного подхода к построению языка. Дело в том, что он был задуман как "язык для всего" - как бы и FORTRAN и COBOL (видимо, это имелось в виду по поддержкой БД) и ALGOL в одном флаконе. В нём пытались предусмотреть всё и сделать удобным для всего (ну, например, кроме передачи параметров по ссылке, там можно передавать и по имени).Посему получился чертовски большим. Опять же, классическая фраза "ни один программист знает PL-1 полностью". Средний программист использовал 5-10% (нужной части) языка - хватало ;).
Провал PL-1 привёл к тому, что теперь таких "языков-для-всего" больше не "выделывают" ;). Очень поучительный оказался пример. ;).
← →
boriskb © (2004-11-30 15:58) [16]MOA © (30.11.04 15:53) [15]
Кстати, PL-1 известен как классический пример неудачного подхода к построению языка.
Не знаю насчет классического примера. Действительно и
MOA © (30.11.04 15:53) [15]
получился чертовски большим
и
MOA © (30.11.04 15:53) [15]
"ни один программист знает PL-1 полностью".
все правда. Но пользоваться им было удобно. :)
← →
Юрий Зотов © (2004-11-30 16:25) [17]Во всяком случае, в PL/1 было несколько примочек, которых сейчас иногда не хватает и приходится делать их либо ручками, либо использовать API. Например, переменные CONTROLLED, встроенная прямо в язык поддержка мультизадачности, очень удобная обработка исключений...
← →
boriskb © (2004-11-30 16:40) [18]Юрий Зотов © (30.11.04 15:23) [11]
Но ведь это еще не БД, саму БД все равно нужно было делать ручками.
ADABAS (по моему немецкий) интерфейс с PL/I был.
← →
Sha © (2004-11-30 17:16) [19]Еще у PL/1 были 2 версии компилятора: обычный и ортимизирующий (PL/I Optimizer).
Тот оптимизатор, который встроен в Delphi - детская игрушка по сравнению с PL/I.
Умели делать...
← →
ДедушкаКо (2004-11-30 17:22) [20]
> ADABAS (по моему немецкий) интерфейс с PL/I был.
ага, АДАБАС на 33 или 45, которых было большинство
теоретически были и базы, и банки данных
может где-то они и работали, штук 10 на союз
← →
boriskb © (2004-11-30 17:28) [21]ДедушкаКо (30.11.04 17:22) [20]
может где-то они и работали, штук 10 на союз
В средьмаше adabas был стандартом. А средьмаш это... огого :)
← →
Игорь Шевченко © (2004-11-30 19:52) [22]boriskb © (30.11.04 15:58) [16]
> Но пользоваться им было удобно. :)
Потому что больше ничего не было :) Язык PL/1 отличался, как говорят, избыточной монстровостью, потому как более неудобной смеси Фортрана, Алгола и Кобола придумать очень трудно :)
boriskb © (30.11.04 16:40) [18]
> ADABAS (по моему немецкий) интерфейс с PL/I был.
Ну вот, мою первую любовь вспомнили...:) Был интерфейс с PL/1. И с Коболом был и с ассемблером.
← →
DrPass © (2004-11-30 22:57) [23]Есть такая поговорка, что даже в IBM нет людей, которые знают весь PL/1
← →
iZEN © (2004-11-30 23:57) [24]/**Юрий Зотов © (30.11.04 16:25) [17]
Во всяком случае, в PL/1 было несколько примочек, которых сейчас иногда не хватает и приходится делать их либо ручками, либо использовать API. Например, переменные CONTROLLED, встроенная прямо в язык поддержка мультизадачности, очень удобная обработка исключений...
*/
Король умер, да здравствует король!
Есть ADA95:
+ компактный (про то, что сложный - бред) ортогональный и универсальный язык с Pascal-подобным синтаксисом;
+ жёсткий стандарт;
+ надёжность, управляемость, модульность, переносимость;
+ раздельная компиляция;
+ объектно-ориентированность с мощным механизмом параллельного исполнения, обработка исключительных ситуаций - всё встроено в язык, а не в библиотеки (не как в Java).
http://www.osp.ru/os/1997/03/52_print.htm
http://qnxclub.net/files/articles/razm/razm.html
Так PL/1 по сравнению с Адой отдыхает?
← →
Cobalt © (2004-12-01 03:09) [25]> MOA © (30.11.04 15:53) [15]
> по поддержкой БД
> В нём пытались предусмотреть всё и сделать удобным для всего (ну, например, кроме передачи параметров по ссылке, там можно передавать и по имени).
Знаете, я сейчас пишу на языке М, так вот - очень уж, по этим словам, напоминает :)
И ничего, очень удобный. Даже объектный.
← →
Юрий Зотов © (2004-12-01 08:26) [26]> iZEN © (30.11.04 23:57) [24]
> Так PL/1 по сравнению с Адой отдыхает?
Трудно сравнивать. Я не знаю Аду, а Вы, похоже, не знаете PL/1, так что получится у нас, что называется "разговор слепого с глухим". Конечно, PL/1 - язык старый (он старше Ады лет на 15) и в нем нет многого из того, что появилось в более поздних языках (кстати, очень даже может быть, что некоторые из новшеств появились в них именно благодаря примеру PL/1). Но, зная PL/1 (и даже еще немного его помня), я все же сомневаюсь в том, что по сравнению с другими языками он так уж сильно "отдыхает". Потому что действительно очень мощный (отчасти, наверное, даже в чем-то революционный) был язык (и в то время по сравнению с ним "отдыхали" как раз другие языки).
Если есть желание, давайте поступим так. В журнале, на который я ссылался выше, обзор каждого языка писался отдельным автором - и в качестве иллюстрации каждый автор давал на этом языке код, решающий одну и ту же задачку, заранее сформулированную редакцией. Задачка достаточно простая (чтобы минимально откомментированный код был понятен всем, даже не знающим языка), но все же посложнее, чем A:=B+C (чтобы было на чем показать какие-то возможности языка).
Мне кажется, это неплохой способ. Поэтому предлагаю написать прямо здесь два решения этой же самой задачки. Вы напишете на Аде, я напишу на PL/1 - вот тогда и сами сравним, и послушаем, что скажут другие. Задачка формулируется так.
Стандартный входной поток содержит произвольное (и заранее не известное) количество целых чисел. Нужно все их прочитать, а затем вывести нечетные числа в стандартный выходной поток в порядке, обратном исходному. Чтобы "не заслонять лес деревьями", будем считать, что доступная память бесконечна.
Критерии сравнения предлагаю следующие (в порядке убывания их приоритета):
- точность решения сформулированной задачи;
- простота ее реализации на данном языке;
- понятность алгоритма при минимуме комментариев;
- читабельность кода;
- краткость кода.
← →
boriskb © (2004-12-01 08:41) [27]Юрий Зотов © (01.12.04 8:26) [26]
Это было бы здорово!
Юрий, у меня просьба - выложи пожалуйста свой вариант на PL/I в любом случае.
Может примеры и на других языках (желательно не очень популярных сейчас)появятся. Будет просто шикарная ветка.
← →
MBo © (2004-12-01 09:41) [28]Паскальный вариант ;)
program Project5;
{$APPTYPE CONSOLE}
type
PNode = ^TNode;
TNode = record
Next: PNode;
Data: Integer;
end;
var
Cnt, i: Integer;
InArr: array of Integer;
Tail, Node: PNode;
begin
//auto input generation
Randomize;
Cnt := 5+Random(10);
SetLength(InArr, Cnt);
for i := 0 to Cnt - 1 do begin
InArr[i] := Random(100);
Writeln(InArr[i]);
end;
//input treatment
Tail := nil;
for i := 0 to Cnt - 1 do
if Odd(InArr[i]) then begin
New(Node);
Node.Next := Tail;
Node.Data := InArr[i];
Tail := Node;
end;
//final stage
Writeln;
while Tail <> nil do begin
Writeln(Node.Data);
Node := Node.Next;
Dispose(Tail);
Tail := Node;
end;
Readln;
end.
← →
Sha © (2004-12-01 09:48) [29]PL/1 - классный язык. Ни один из тех, кто его по-настоящему использовал, не назовет его неудобным, сложным или как-то еще.
Насчет незнания его полностью. Нормальные программисты знали его как раз полностью за счет отличного документирования фирмой IBM своих продуктов. А новичкам, которым ставились задачи соответсвенно их силам, для их решения было достаточно знать стандартные возможности (ввод/вывод, структура программ и данных). Язык можно было учить постепенно.
← →
Sha © (2004-12-01 09:51) [30]соответственно
← →
boriskb © (2004-12-01 10:01) [31]Sha © (01.12.04 9:48) [29]
Ни один из тех, кто его по-настоящему использовал, не назовет его неудобным, сложным или как-то еще.
Другими словами И.Ш. - врун? :) :)
Игорь Шевченко © (30.11.04 19:52) [22]
как более неудобной смеси Фортрана, Алгола и Кобола придумать очень трудно :)
Так и говори без экивоков :)
← →
Игорь Шевченко © (2004-12-01 10:08) [32]Sha © (01.12.04 09:48) [29]
> PL/1 - классный язык. Ни один из тех, кто его по-настоящему
> использовал, не назовет его неудобным, сложным или как-то
> еще.
Я назову. Использовал его 7 лет. В то время, когда использовал, был согласен с твоей оценкой. После того, как познакомился с другими языками (С, впоследствии Паскаль), выработал свою оценку [22]
С уважением,
← →
ocean (2004-12-01 10:16) [33]Да, классный был язык, что говорить. И небо было выше, и трава зеленее... Но сейчас мне кажется, что Паскаль и С (имею в виду стандарты Вирта и Кернигана) четче и элегантнее.
Кстати, в те времена были и другие вещи, незаслуженно забытые
← →
REA (2004-12-01 10:18) [34]Дельфовый вариант:
Var
Stack: TStack;
i, Cnt: Integer;
Begin
Randomize;
Cnt := Random(10);
With TStack.Create() Do
Try
For i := 0 To Cnt Do
Stack.Push(Pointer(Random(100)));
While Count>0 Do
Begin
i := Integer(Stack.Pop());
If (i And 1)<>0 Then WriteLn(i);
End;
Finally
Free;
End;
End;
← →
REA (2004-12-01 10:24) [35]Точнее так
Var i, Cnt: Integer;
Begin
Randomize;
Cnt := Random(10);
With TStack.Create() Do
Try
For i := 0 To Cnt Do
Push(Pointer(Random(100)));
While Count>0 Do
Begin
i := Integer(Pop());
If (i And 1)<>0 Then WriteLn(i);
End;
Finally
Free;
End;
End;
← →
Юрий Зотов © (2004-12-01 10:29) [36]Да, упустил из виду еще один критерий (по значимости, видимо, его нужно поставить на второе место):
- эффективность кода (по требуемой памяти и скорости работы).
> Sha © (01.12.04 09:48) [29]
Готов подписаться под каждым словом. Язык был действительно сложным - но он становился сложным только в сложных же задачах, требующих использования его примочек (которые, кстати, задачу упрощали). А в простых задачах он был ничуть не сложнее других языков (возможно, даже проще - например, вычислительные программы писались на PL/1 практически так же, как и на Фортране, но выглядели намного читабельнее).
И, самое главное - PL/1 действительно можно было учить постепенно. На каждом этапе своего развития можно было использовать уже знакомое подмножество языка, но это подмножество расширялось вместе с собственным ростом программиста. Поэтому сложностей, можно сказать, и не возникало, а язык в итоге осваивался полностью.
← →
Sha © (2004-12-01 10:44) [37]> Игорь Шевченко © (01.12.04 10:08) [32]
> Я назову. Использовал его 7 лет. В то время, когда
> использовал, был согласен с твоей оценкой. После того, как
> познакомился с другими языками (С, впоследствии Паскаль),
> выработал свою оценку [22]
Эти тоже неплохи по своему, мое первое впечатление от них было:
С - стройнее, но менее защищен,
Паскаль - защищеннее, но сковывает инициативу.
Потом и к ним привык :)
С уважением.
← →
iZEN © (2004-12-01 19:52) [38]to MBo © (01.12.04 09:41) [28]
Вариант на Java:
public class Project5 {
private static class Node {
private Node next;
private int data;
}
public static void main(String[] args) {
//auto input generation
int cnt = (int)(100 * Math.random());
int[] inArr = new int[cnt];
for (int i = 0; i < cnt; i++) {
inArr[i] = (int)(100 * Math.random());
System.out.println(inArr[i]);
}
//input treatment
Node tail = null;
for (int i = 0; i < cnt; i++) {
if (inArr[i] % 2 != 0) {
Node node = new Node();
node.next = tail;
node.data = inArr[i];
tail = node;
}
}
//final stage
System.out.println();
while (tail != null) {
Node node = tail;
System.out.println(node.data);
node = node.next;
tail = node;
}
}
}
← →
iZEN © (2004-12-01 19:53) [39]К большому сожалению ADA95 я не знаю. С этим языком начал разбираться только-только.
← →
iZEN © (2004-12-01 20:13) [40]К [38].
Так получше://final stage
System.out.println();
while (tail != null) {
Node node = tail;
System.out.println(node.data);
tail = node.next;
}
Страницы: 1 2 3 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.048 c