2014 dxdy logo

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

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




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


03/05/14
9
Добрый день!

Разрабатывается существенная переработка(доработка,переделка) языка 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 
Заслуженный участник


09/05/12
25179
int13h в сообщении #858590 писал(а):
Разрабатывается существенная переработка(доработка,переделка) языка JavaScript для обработки больших массивов данных (возможно с подключением к СУБД).

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

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

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

 Профиль  
                  
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение04.05.2014, 19:48 
Заслуженный участник


27/04/09
28128
int13h
Т. е. все существующие языки и библиотеки-модули-пакеты к ним не удовлетворили вас? (Я только за создание новых языков — но не так сильно напоминающих сломаный велосипед.)

 Профиль  
                  
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение05.05.2014, 23:39 


03/05/14
9
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 
Заслуженный участник


09/05/12
25179
int13h в сообщении #859602 писал(а):
Вопрос не во мне.
Вопрос о восприятии языков программирования ДРУГИМИ людьми.

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

 Профиль  
                  
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение05.05.2014, 23:55 


03/05/14
9
int13h в сообщении #858590 писал(а):
Новый язык должен подходить для научных работников

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

 Профиль  
                  
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение06.05.2014, 15:07 
Заслуженный участник


27/04/09
28128
У существующих решений, кроме того, обширная документация, и они более-менее протестированы и оптимизированы. Это очень важно.

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

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

 Профиль  
                  
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение06.05.2014, 23:47 


03/05/14
9
В этой теме я поставил вопрос не о том, ЗАЧЕМ необходимо изобретать новый синтаксис в языках программирования, а о том НРАВИТСЯ или НЕ НРАВИТСЯ предложенные варианты нового синтаксиса. Если, 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 
Заслуженный участник


02/08/11
7003

(int13h)

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

 Профиль  
                  
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение14.05.2014, 00:35 
Заблокирован


03/04/14

78
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 


03/05/14
9
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 
Заслуженный участник


27/04/09
28128
int13h в сообщении #863464 писал(а):
Всё прекрасно работает до тех пор пока в тексте не встречаются слова типа "toString" , "valueOf" и другие ...
Можно хранить ключи в отдельномм массиве. Можно почитать про JS повнимательнее и использовать hasOwnProperty, а так же in вместо проверки на не-undefined, или вообще использовать объекты Map (это часть будущего стандарта). Можно использовать Python, Lua и т. д..

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


03/05/14
9
arseniiv в сообщении #863493 писал(а):
Можно почитать про JS повнимательнее и использовать hasOwnProperty

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

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

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

 Профиль  
                  
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение16.05.2014, 14:27 
Заслуженный участник


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

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

 Профиль  
                  
 
 Re: Проект(!) переработки JavaScript для обработки данных
Сообщение16.05.2014, 17:55 
Заблокирован


18/03/14

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


-- 16.05.2014, 19:08 --

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 77 ]  На страницу 1, 2, 3, 4, 5, 6  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group