ПроектыФорумОцените

ObjectScript — добавлено видео по установке под Windows, новый встраиваемый язык программирования (скрипты, веб, 2d mobile engine)

Страницы: 1 2 311 12 Следующая »
#0
15:37, 18 фев 2013

Добавлено видео по установке ObjectScript под Windows, подробности

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Напомню сайт языка: http://objectscript.org
Репозиторий исходных кодов: https://github.com/unitpoint/objectscript (вышло довольно много обновлений).

=========================

Внимание! описание синтаксиса в этом посте частично устарело, см. описание языка в документации на сайте.

+ Показать
#1
16:14, 18 фев 2013

> поэтому точку с запятой (;) можно не использовать
Не новость. В луа то же самое.

> А что если необходимо в качестве индекса значения использовать выражение, а не константу, легко:
Тоже есть в луа.

> в качестве индекса значения может выступать значение любого типа,
Тоже из луа.

> obj = { null awesome=true 12 "excellent" };
>{
> var iter_func = obj.__iter()
Неочевидно, кто такой этот дефолтный __iter. А так идея - кастрированный generic for из луа.

зы: я не придираюсь, просто лучше явно обозначить первоисточники фишек, а не просто сказать, что новый язык "добавляет также и свои уникальные и полезные возможности" :)

#2
16:28, 18 фев 2013

UnitPoint
один cpp в 21 тысячу строк это жёстко. неудобно же с кодом работать.

#3
16:31, 18 фев 2013

Как долго делал?
Какие сложности возникли с технической стороны?
Какие статьи\книги пригодились?

#4
17:09, 18 фев 2013

Я попытался собрать вместе полезные фишки из разных языков программирования, основные прародители были javascript и lua, например, из lua также была взята концепция окружения функции, это когда обращение к глобальной переменной bar реально транслируется в _E.bar, а _E можно самому определять (на этом основана возможность модульной архитектуры).

Также в статье не описан сахарный синтаксис вида @x - эквивалент this.x

21 тысяча строк, да, мне многие задают этот вопрос.

Как долго делал?

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

Какие сложности возникли с технической стороны?

Основная сложность - увеличение производительности, в разные периоды времени я реализовывал 4 версии принципиально разных виртуальных машин (VM), каждая из которых давала резкий скачок в производительности. На данный момент, работа VM соответствует промышленным языкам, например, PHP, а в некоторых тестах ObjectScript работает намного быстрее того же PHP, например, в алгоритме fannkuch.

Какие статьи\книги пригодились?

Ммм..., не по книжкам писал, главное знать язык, на котором работаешь. Вот, если руки дойдут до JIT, видимо придется много чего читать и изучать.

#5
18:49, 18 фев 2013

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

#6
19:20, 18 фев 2013

UnitPoint
> магические методы - из Python.
Эм... Магические методы — это что?

Геттеры и сеттеры интересно сделаны.

#7
20:37, 18 фев 2013

UnitPoint
а из-за таких фич как отсутствие необходимости ставить запятые и скобки разве не возникают неоднозначности?
мне, например, не понятно, что будет означать запись

print(hello "world")

то ли это вызов функции print с двумя параметрами:
print(hello, "world")
то ли вызов print от результата вызова функции hello

print(hello("world"))
#8
20:50, 18 фев 2013

Эм... Магические методы — это что?

В OS это __add, __sub, __mul, __cmp и др. (в питоне это __add__, __sub__, __mul__, __cmp__ и др.)

print(hello "world")

будет означать вызов с двумя параметрами, но в целом я согласен с аргументом.

#9
21:24, 18 фев 2013

А с замыканиями как дела обстоят? Множественное наследование(ну или миксины или интерфейсы) - есть?

#10
21:33, 18 фев 2013
+ Показать
#11
22:06, 18 фев 2013

UnitPoint
> новый объектно-ориентированный язык программирования с открытым исходным кодом
Зачем? Но это философский вопрос.

Гораздо больше претензий к тому, что весь код в одном файле. Таких гигантских файлов даже в ядре ОС не бывает. Судя по посту выше вы поразили даже человека, пишущего программы в одной файле:)

700 килобайт - это Lua с Jit-компилятором. И ещё место останется.

Да, он микширует фичи всех языков каких только можно, но в нем отсутствуют многие полезные фичи других языков.

Сейчас от языка ожидают легкую интеграцию с сишным кодом, никто не захочет писать 80-килобайтную простыню только чтобы подружить его с curl, например. Вот это гораздо востребованнее возможности не ставить запятые.

Спорный вопрос по поводу вольготности интаксиса. Попробуйте посчитать, сколько тут элементов: a[1 + 2 - 3 4 * 5 - 6 7 8 + 9].

Ну и совсем удручающие факты:

$ ./os --help
(os) 

И что?

$ ./os ../examples-os/bind.os 
(os) 

И что?

Вхожу в командный режим. Нет истории команд - вообще нет. Не работают стрелки влево-вправо и всё то что должно быть в консоли.

Кое-как понял что нужно запускать oscript.

for(i in range(1, 10)){
  print "i = "..i
}

Не работает. Как так? Скопировал из примера.

Документации не вижу. Примеров тоже не густо. Я плохо искал? Покажите пример как простой цикл хоть с этим языком организовать?

#12
22:29, 18 фев 2013

Простой тест:

var range = function(a, b){
  return function(){
    if(a <= b){
      return true, a++
    }
  }
}

fruits = {"apple":0,"orange":0,"banana":0}

for(var i in range(0, 1000000)){
  if(i % 2 == 1) fruits["apple"] = fruits["apple"] + 1
  if(i % 3 == 1) fruits["orange"] = fruits["orange"] + 1
  if(i % 5 == 1) fruits["banana"] = fruits["banana"] + 1
}

print (fruits["apple"])
print (fruits["orange"])
print (fruits["banana"])
$ time ./bin/oscript test.os 
500000
333334
200000

0m3.328s

$ time lua test.lua 
500000
333334
200000

0m0.451s

$ time luajit test.lua 
500000
333334
200000

0m0.090s

ЗЫ Я достаточно хорошо знаю все те языки, которые легли в основу этого. Но Этот пример я писал добрые полчаса, в то время как на питоне можно писать код даже не зная его синтаксис. Учтите это в дальнейшем - комбинация отсутствия примеров и человеческих сообщений об ошибках делает язык очень трудным.

#13
22:46, 18 фев 2013

Да уж.. для себя если – отличная програмисткая задачка.. а так практическое применение нулевое. Синтаксис жуть. Убрал милые ; добавил кучу __. А толку? ; хоть смысл имеет, как в естественных языках.

#14
22:49, 18 фев 2013

Так это компилятор надо "допилить" думаю можно такое же быстродействие получить

Страницы: 1 2 311 12 Следующая »
ПроектыФорумОцените

Тема в архиве.