LINUX.ORG.RU

«Перспективные» и малоизвестные проекты ЯП

 , , ,


2

6

А накидайте, какие есть малоизвестные проекты языков программирования, которые пилятся или пилились энтузиастами в последние годы? Интересуют компилируемые ЯП, ориентированные на компиляцию в нативный код. (Еще лучше, если у реализации есть собственный бэк, а не просто фронт для LLVM.)

Из того, что я мог вспомнить:

  • Nim
  • Zig
  • Seed7
  • VLang
  • Crystal
  • OOC

Ответ на: комментарий от AlexVR

Эффекты сейчас активно в хачкелле и его отростках типа PureScript используются. Ну и в OCaml, потому что OCaml сейчас всё подряд из хачкелля тащит как из более популярного недоязычка.

hateyoufeel ★★★★★
()
Ответ на: комментарий от lovesan

Вопрос а зачем лисп нужен? Когда есть условные python для всех скриптов где скорость и жор ресурсов не важны и условный c# для почти всех остальных случаев (оставим железячников где и сишки порой нет в стороне), ну и на крайняк си плас пласом закрываем все остальное извращение, вроде геймдева с попытками выжать 140% из gpu

anonymous
()
Ответ на: комментарий от CrX

Нет, надо чтоб скобочки у аргументов функций и скобочки которые ограничивают тело функций были разные. Понятно что в функциональщине модно прям в аргументы и разные конструкции вроде условий цикла срать всякими лямбдами (и я так и делаю на питоне), но ИМХО это не очень хорошо на производительность влияет, как и на читабельность в половине случаев.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 2)
Ответ на: комментарий от peregrine

На производительность это негативно не влияет, если реализовано правильно в самом компиляторе. Иногда даже наоборот. Тут ИМХО не ИМХО, а объективно померять можно. А вот с читаемостью да — есть простор для субъективного восприятия. «Всякие лямбды» могут как повысить читабельность благодаря лаконичности, а могут и наоборот. Тут уже зависит от того, где оно уместно, а где нет — дело в опыте кодера в первую очередь. Ну и в отсутствии упёртости и фанатизма, приводящего к использованию какого-то одного единственного подхода даже там, где с ним явно хуже.

CrX ★★★★★
()
Ответ на: комментарий от peregrine

Собственно, года полтора назад компилировал какое-то типичное гтк-приложение, и оно было на вале. Не помню конкретно, честно говоря, что, да и, видимо, неважное, потому как valac в тот же день удалил :))

Уверен, что и сейчас есть живые приложения, но их с тех пор не видел. Так что язык не мёртв, хоть и достаточно малопопулярный

ad0c
()

А вот мне интересны малоизвестные языки с точки зрения необычных систем типов.

Обычными системам типов я считаю:

  1. Типизация на основе списков и мэпов, в том числе с маскировкой под объекты.

  2. Привычное ООП с объектам и наследованием.

  3. Структуры и алгебраические типы.

Есть что-то альтернативное интересное, но пригодное для практического использования хотя бы теоретически?

iRUKi
()
Ответ на: комментарий от CrX

На производительность это негативно не влияет

Это если только головой думать или компилятор/интерпритатор уж очень-очень умные (чего не наблюдается). Поясню как негативно влияет: вместо того чтоб где-то в одном месте посчитать переменные мы будем считать каждый раз, когда будем дёргать такую конструкцию, т.е. возможность воткнуть лямбду поощряет то, что можно меньше продумывать что и как возвращать из функций/методов и так далее, потому что можно лямбдами подпорки расставить. Я даже за собой заметил, что когда пишу на чём-то деревянном вроде сишки, то думаю над тем как код на функции разбивать и какую информацию они должны принимать/передавать куда больше, чем на питоне, потому что с любым говнокодом на питоне можно работать легко.

Вон тебе пример Оптимально создать словарь с суммами по ключам на основе списка пар ключ:значение?

Для питона нормально когда такая проблема вылезает, в смысле функция на вход принимает tuple а может и не tuple (его же ещё собрать надо) и надо из них словарь собирать, даже скажу что это довольно типичная задача, у меня такие же были, например когда я похожие слова считал в тексте, но я правда в производительность не упирался (в этом месте, у меня другое гораздо сильнее лагало - приведение слов к начальной форме через pymorphy2 с некоторой предобработкой текста, так что эти фиксы ничего там не давали), потому делал в лоб. В условном C# если у меня в коде такое появится, что какой-то метод будет на вход пары принимать и их надо будет в словарь засовывать, у меня много вопросов возникнет к тому что я делаю.

peregrine ★★★★★
()
Ответ на: комментарий от iRUKi

А вот мне интересны малоизвестные языки с точки зрения необычных систем типов.

Тот же OCaml посмотри, с одной стороны там есть «привычный» твой третий пункт, но кроме этого есть, во первых первоклассные модули (first-class modules), во вторых очень своеобразная объектная система со структурной типизацией.

anonymous
()

https://myrlang.org

Myrddin is a programming language. It aims for control and simplicity. It features strong type checking, generics, type inference, closures, and traits. It aims to fit into a similar niche as C, but with fewer bullets in your feet.

Myrddin does not aim to explore the forefront of type theory or compiler technology. It does not focus on guaranteeing perfect safety. It is satisfied to be a practical, small language.

пилились энтузиастами в последние годы

> 10 лет.

компилируемые ЯП, ориентированные на компиляцию в нативный код

Да.

Еще лучше, если у реализации есть собственный бэк, а не просто фронт для LLVM.

Да.

use std

const main = {

    for var i = 0; i < 1000; i++
        /* pattern match on a tuple */
        match (i % 3, i % 5)
        | (0, 0): std.put("fizzbuzz\n")
        | (0, _): std.put("fizz\n")
        | (_, 0): std.put("buzz\n")
        | _:
        ;;
    ;;
}
dataman ★★★★★
()
Ответ на: комментарий от intelfx

Ну вон там зиг хайль есть

А зачем их сравнивать? Zig - принципиально новый (c) язык с MP и FP. Hare - попытка сделать именно что новый си, с исправлением худших сишных ошибок и с мелкими добавками, не более того.

unsigned ★★★★
()
Ответ на: комментарий от Tanger

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

peregrine ★★★★★
()
23 мая 2024 г.

-скачал компилятор для языка Crystal, почему-то куда-то стали уходить все ресурсы компьютера и инода за место экрана монитора вижу ЗЕЛЁНЫЙ квадратик (примерно каждые 6 секунд), кто-нибудь на ЛОРе знает как это лечится?

markackr
()

Вот вам еще малоизвестный ЯП: https://austral-lang.org/spec/spec.html

Покурив документацию на этот Austral, я пришел к выводу, что абстрактный идеальный системный ЯП для меня – это что-то среднее между Zig и Austral. Иными словами, хотелось бы Zig с линейными типами.

Удобный и компактный язык с мощной системой типов и с возможностью писать глубоко системные вещи, не прибитые к рантайм либе языка. И без тридцати уровней уродливых треугольных скобочек <<<<<>>>>.

wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

без тридцати уровней уродливых треугольных скобочек

Круглые скобочки ему не нравятся, треугольные тоже не нравятся. У меня создаётся впечатление, что тебе вообще никакие скобочки не нравятся.

Nervous ★★★★★
()
Ответ на: комментарий от wandrien

Austral

No pre/post increment/decrement (x++ in C).

В топку.

By default, the compiler will emit C code and invoke cc automatically to produce an executable.

Предыдущую золу тоже в топку.

dataman ★★★★★
()
Последнее исправление: dataman (всего исправлений: 1)

Чем больше курю документацию на Zig, тем больше он мне нравится.

В целом это ровно то, как я себе представлял идеальный ЯП для ниши системного ЯП.

Разница только в том, что я бы делал язык в Ada-подобном синтаксисе, а здесь сделали в Си-подобном.

Похожее впечатление у меня было, когда в нише динамических ЯП я познакомился с Ruby.

Вот в таком выражении:

pub fn main() void {
    print("here is a string: '{s}' here is a number: {}\n", .{ a_string, a_number });
}

Форматирующая строка раскрывается в код с проверками типов во время компиляции, и в рантайме не парсится. Исключительно силой вычислений времени компиляции на самом ЯП, без привлечения макросов и чего-либо еще.

Это очень мощно.

Я в своих черновиках проектировал именно так – код на самом ЯП является кодом, который компилятор способен исполнять при компиляции программы.

Дженерики реализуются аналогично – как функции, возвращающие типы или принимающие типы как аргументы.

wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 1)

Есть Roc. Все с него прям кипятком писяют, но перспективы у него вряд ли есть. Как и у многих других. Корпорации зла решают какой язык перспективный, а какой нет.

P.S. Не заметил что уже есть 3 страницы обсуждения и какой-то выскочка называл Roc :\

perl5_guy ★★★★★
()
Последнее исправление: perl5_guy (всего исправлений: 1)