Plange — новая универсальная экосистема для разработки

Новости Отредактировано

2К открытий2К показов

Plange — новый язык программирования, находящийся в разработке, который будет включать в себя большое количество различных возможностей из других языков.

Вот неполный список этих возможностей:

  • Различные модели памяти: стек, куча, сборка мусора, ручное и автоматическое управление памятью;
  • различная типизация: статическая и динамическая, сильная и слабая, позднее связывание;
  • объектно-ориентированная модель;
  • алгебраические типы данных;
  • сопоставление с образцом;
  • метапрограммирование;
  • все сущности — первого класса, от типов до функций;
  • возможность написания скриптов;
  • возможность автоматического доказательства теорем.

Plange объединяет в себе язык, библиотеки и среду разработки. Основная цель новой системы — позволить программисту не задумываться о возможностях языка. Разработчик сможет создавать программы любого назначения и любой сложности.

Все языки программирования условно можно разделить на несколько поколений. Первое и второе поколение — это машинные языки и различные стандартизированные ассемблеры. Третье поколение — языки структурного программирования: C, C++, Java, COBOL. Четвертое поколение характеризуется динамической типизацией, высокоуровневыми возможностями обработки данных и функциональными возможностями. Из языков общего назначения к четвертому поколению относятся Python, Ruby. Из специализированых — R и Mathematica. Пятое поколение языков — языки с возможностью автоматического доказательства теорем. Таким образом, Plange можно отнести к языкам пятого поколения.

Код на Plange выглядит так:

			<List → Void> printLast := 
	(_ & tail) { printLast(tail); } |
	(x) { print(x); };

myList := [ 5, 12, 8, 9 ];
printLast(myList);
		

Функция printLast выводит на экран последний элемент списка и имеет тип <List → Void>. Такой же код, например, на Haskell, будет выглядеть так:

			last :: [a] -> IO ()
last [] = putStrLn "Empty list"
last (_:xs) = last xs
last [x] = putStrLn x
		

Стоит отметить поддержку сопоставления с образцом в этом примере и отсутствие необходимости оборачивать результат в монаду IO.

Следите за новыми постами
Следите за новыми постами по любимым темам
2К открытий2К показов