Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.26;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.049 c
14-1101973399
gn
2004-12-02 10:43
2004.12.26
Взломать за 240 секунд


1-1102087230
Начинающий2
2004-12-03 18:20
2004.12.26
Вопрос по реестру.


14-1102510077
chelovek
2004-12-08 15:47
2004.12.26
Интересно?


14-1102366856
VEG
2004-12-07 00:00
2004.12.26
Новый IE теперь блокирует скрипты с чужого хоста


1-1102946567
kaktus
2004-12-13 17:02
2004.12.26
Check-нутый грид!