Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.039 c
9-1093428278
XeNoN
2004-08-25 14:04
2004.12.26
Люди подскажите


3-1101453999
gantoxa
2004-11-26 10:26
2004.12.26
Подскажите, как определить тип поля и его длину


14-1102273144
begin...end
2004-12-05 21:59
2004.12.26
Желающим поностальгировать: прошлое любимого форума


3-1101531599
ShotGuN
2004-11-27 07:59
2004.12.26
WrapText в DBGrid


4-1100434294
Guest_1
2004-11-14 15:11
2004.12.26
ZeroMemory





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский