2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2, 3, 4, 5, 6  След.
 
 Проект(!) переработки JavaScript для обработки данных
Сообщение03.05.2014, 17:05 
Добрый день!

Разрабатывается существенная переработка(доработка,переделка) языка JavaScript для обработки больших массивов данных (возможно с подключением к СУБД). Однако необходимо сделать язык красивым но без ADO и ActiveX. JScript взят только как ОТПРАВНАЯ ТОЧКА.
Новый язык должен подходить для научных работников которые не сильно любят рытся в толмудах типа MSDN.

Вашему вниманию предлагается несколько решений для выяснения Вашего мнения по поводу этой новой спецификации:
1) Упрощение проверки указателя на null
Внимание! C++ оператор condi? a:b; заменен на condi?? a:b;
Символ ? теперь будет иметь другой смысл:
Используется синтаксис C
var a = c?*d + e;
// будет эквивалентен старому JScript коду:
var a;
if (c) a = c*d + e;
 

Символ ? теперь по-сути является оператором проверки значения выражения и если значение false то исключается ВСЁ выражение (за исключением объявления новой переменной).
Т.к. теперь ? будет унарным оператором, то его приоритет будет стоять выше приоритета бинарных операторов.
Другие варианты:
код: [ скачать ] [ спрятать ]
Используется синтаксис C
var a = c?*d + e?;
// эквивалент:
var a;
if (c && e) a = c*d + e;

// ----------------------
print("Value = ",a,"  Result=",FX(a?));
// эквивалент:
if (a)  print("Value = ",a,"  Result=",FX(a));

// ----------------------
r = func(a,c?,x+y) * func2(10,G(y?)?);
// эквивалент:
var _tmp_;
if (c && y && _tmp_=G(y))    r = func(a,c,x+y) * func2(10,_tmp_);
 

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение03.05.2014, 17:42 
int13h в сообщении #858590 писал(а):
Разрабатывается существенная переработка(доработка,переделка) языка JavaScript для обработки больших массивов данных (возможно с подключением к СУБД).

Зачем? Я не про обработку данных, а про ориентацию на JS.

int13h в сообщении #858590 писал(а):
Новый язык должен подходить для научных работников которые не сильно любят рытся в толмудах типа MSDN.

И поэтому надо сделать синтаксис языка как можно менее очевидным?

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение04.05.2014, 19:48 
int13h
Т. е. все существующие языки и библиотеки-модули-пакеты к ним не удовлетворили вас? (Я только за создание новых языков — но не так сильно напоминающих сломаный велосипед.)

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение05.05.2014, 23:39 
arseniiv в сообщении #858985 писал(а):
Т. е. все существующие языки и библиотеки-модули-пакеты к ним не удовлетворили вас? (Я только за создание новых языков — но не так сильно напоминающих сломаный велосипед.)

Вопрос не во мне.
Вопрос о восприятии языков программирования ДРУГИМИ людьми.
Особенно это касается молодёжи. Не имея опыта "как это всё создавалось", люди иногда плохо изучают существующие системы.

Вопрос #2:
Необходимо разделить в JScript Object permanent members и expando properties. Т.к. в JScript часто возникает проблема при поиске ключей в Object:
Используется синтаксис C
var r = {};
var p = "valueOf";
if (r[p]) alert("member "+p+" is present");
 

Предлагается синтакс:
Используется синтаксис C
var p1 = r.valueOf;           // access to the permanent member  (direct access)
var p2 = r.["valueOf"];     // access to a permanent member (indirect access)

var e1 = r->valueOf;        // access to expando property only (direct access)
var e2 = r["valueOf"];      // same as r->valueOf; (indirect access)
// alternative:
var e3 = r->["valueOf"];   // same as r->valueOf; (indirect access)

// enum all permanent members:
for (var key in r.permanent) ...

// enum all expandos:
for (var key in r) ...
 

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение05.05.2014, 23:52 
int13h в сообщении #859602 писал(а):
Вопрос не во мне.
Вопрос о восприятии языков программирования ДРУГИМИ людьми.

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

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение05.05.2014, 23:55 
int13h в сообщении #858590 писал(а):
Новый язык должен подходить для научных работников

Это опционально (желательно)

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение06.05.2014, 15:07 
У существующих решений, кроме того, обширная документация, и они более-менее протестированы и оптимизированы. Это очень важно.

С помощью справки Wolfram Mathematica, например, можно самостоятельно (без интернета и людей) изучить эту систему почти с самого нуля.

int13h в сообщении #859602 писал(а):
Вопрос о восприятии языков программирования ДРУГИМИ людьми.
Особенно это касается молодёжи. Не имея опыта "как это всё создавалось", люди иногда плохо изучают существующие системы.
Это какая-то ерунда. Обычно люди и не имеют никакого опыта в создании языков (и всего нужного, чтобы язык заработал — это обычно потруднее, чем разработать язык), чтобы ими успешно пользоваться. Чтобы разбираться, не нужно создавать язык самому, можно почитать книги, примеры и уже потом для аккуратности полную документацию (с грамматикой языка, семантикой всех конструкций и т. п.). Всё это, кроме того, открыто для чтения другими, а круг создателей языка вы так расширить не сможете. В итоге это будет медленный велосипед для избранных — а таких систем в мире и так уже хватает.

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение06.05.2014, 23:47 
В этой теме я поставил вопрос не о том, ЗАЧЕМ необходимо изобретать новый синтаксис в языках программирования, а о том НРАВИТСЯ или НЕ НРАВИТСЯ предложенные варианты нового синтаксиса. Если, arseniiv, Вы не хотите обсуждать данный вопрос, то я Вас не заставляю писать мне ответы в данной теме.
Иначе всё обсуждение сводиться к проблеме типа "зачем нам нужно изобретать новую обувь, если наши лапти или валенки вполне хороши и подходят на все случаи жизни !"

Поэтому, я повторяю вопрос:
Вопрос #2:
В существующих реализациях JScript существует проблема с организацией индексированного(оптимизированного) поиска в списке строк заданного в объекте Object. Так, например, строка "valueOf" (и другие permanent members) всегда сущеcтвуют в Object и возвращают указатель на встроенную функцию, несмотря на то, что в цикле for (i in ob) ... эти члены не видны !

Предлагается синтаксис который позволит разделить permanent member и expando property:
код: [ скачать ] [ спрятать ]
Используется синтаксис C
var r = {};
var p1 = r.valueOf;           // access to the permanent member  (direct access)
var p2 = r.["valueOf"];     // access to a permanent member (indirect access)

var e1 = r->valueOf;        // access to expando property only (direct access)
var e2 = r["valueOf"];      // same as r->valueOf; (indirect access)
// alternative:
var e3 = r->["valueOf"];   // same as r->valueOf; (indirect access)

// enum all permanent members:
for (var key in r.permanent) ...

// enum all expandos:
for (var key in r) ...
 

Неудобство этого решения очевидно: программисты JScript привыкли писать
r.myKey а не r->myKey;

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение07.05.2014, 00:10 

(int13h)

Видите ли, есть некоторые шансы на то, что вы всё-таки сделаете свой язык, и его кто-то где-нибудь зачем-нибудь применит для чего-нибудь. Поэтому у читающих это тему (ну, по крайней мере у меня) пробегает холодок по спине и возникает сильное желание зарубить начинание на корню, и избежать таким образом страшного будущего, в котором не исключена возможность столкнуться с вашим изобретением.

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение14.05.2014, 00:35 
int13h в сообщении #859602 писал(а):
Т.к. в JScript часто возникает проблема при поиске ключей в

Какие Вы там проблемы нашли? Вы то-ли шутите, то-ли бред несете. valueOf - это встроенная ф-ция JS, и она является нативным методом объекта. То, что Вы написали, эквивалентно:
Используется синтаксис Javascript
var r = {}
if(r["valueOf"]) alert ("member present")
 

И что Вы ожидали увидеть? Что объект не имеет метода, который он на самом деле имеет?

И, BTW, Вы не путайте, JS и JScript, последнее -- мастдаевская имплементация EcmaScript, это немного другое.

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение15.05.2014, 12:23 
foo-bar2014 в сообщении #862974 писал(а):
И что Вы ожидали увидеть? Что объект не имеет метода, который он на самом деле имеет?

Проблема состоит вот в чём.
Допустим, Вы решаете задачу по замене некоторых слов в тексте на другие.
Вы создали r=new Object; и заполнили его по типу r["old_word"] = "new_word";.
Вы находите слова в тексте и если они найдены в r то заменяете его на слово из r.
Всё прекрасно работает до тех пор пока в тексте не встречаются слова типа "toString" , "valueOf" и другие ...

Конечно, это не такая уж большая проблема, ведь можно поправить ситуацию в виде:
Используется синтаксис C
var r = {};
r["$FILE$"] = "myfile.txt";
r["$EOF$"] = "";
// ...
for (...) {
   var key = s.substr(....);      // слово из анализируемого текста
   if (r[key]===undefined || r[key] instanceOf Function)   {
      // Слово не найдено, пропуск
   } else {
      // Cлово найдено, обрабатываем ...
   }
}
 

В данном простом случае можно было бы использовать s.replace(...), но в более сложных случаях этого сделать нельзя.

P.S.
Вялая реакция форума на предлагаемые новшества позволяют задуматся о целесообразности проекта переделки :facepalm:

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение15.05.2014, 14:00 
int13h в сообщении #863464 писал(а):
Всё прекрасно работает до тех пор пока в тексте не встречаются слова типа "toString" , "valueOf" и другие ...
Можно хранить ключи в отдельномм массиве. Можно почитать про JS повнимательнее и использовать hasOwnProperty, а так же in вместо проверки на не-undefined, или вообще использовать объекты Map (это часть будущего стандарта). Можно использовать Python, Lua и т. д..

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение16.05.2014, 00:43 
arseniiv в сообщении #863493 писал(а):
Можно почитать про JS повнимательнее и использовать hasOwnProperty

Да, действительно, hasOwnProperty поможет. Проверил!
Наверное, раз десять его в мануалах видел, но думал что он работает по-другому. Т.е. определяет если в Object native property, а он, оказывается, определяет добавленные пользователем ключи :lol:

За это, arseniiv, Вам спасибо. Теперь буду писать на JS более кратко.

Обычно изобретают новые языки программирования люди у которых нервы сдают при изучении этих языков.
Я, думаю, тему можно закрывать. :facepalm:

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение16.05.2014, 14:27 
int13h в сообщении #863775 писал(а):
Т.е. определяет если в Object native property, а он, оказывается, определяет добавленные пользователем ключи :lol:
Не обязательно добавленные пользователем. Просто те свойства, которые есть у объекта, а не у прототипа — как они там оказались, не важно, да и не различает это JS. На всякий случай перечитайте две страницы по ссылкам.

int13h в сообщении #863775 писал(а):
Обычно изобретают новые языки программирования люди у которых нервы сдают при изучении этих языков.
По-моему, обычно нет.

 
 
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение16.05.2014, 17:55 
int13h
В вашем случае, насколько я понял, Вы используете объект просто как хеш, наверное, можно вообще решить в лоб:
Код:
ob={__proto__: null}
alert(ob["valueOf"])//undefined


-- 16.05.2014, 19:08 --

arseniiv в сообщении #863954 писал(а):
По-моему, обычно нет.

Если нет энтерпрайзного интереса -- обычно да. Языки обычно, либо предметно/индусско-ориентированные, либо хорошие. Пример -- IO.

 
 
 [ Сообщений: 77 ]  На страницу 1, 2, 3, 4, 5, 6  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group