Pull to refresh

Comments 36

Идеальный скриптовый язык для WEB… сервера
Идеальный скриптовый язык для людей которые днями, неделями и месяцами пишут для WEB и отлаживают свой код
Красивая, бестолковая и абсолютно бесполезная диаграмма. Нет, вы, конечно, можете пофантазировать — это же ваш проект; только практической пользы от этого не будет.

Вот смотрите:
>>WEB Server – встроенный веб сервер.
Встроенный куда? Пример можете привести для ясности?

Что такое InFilters, OutFilters? Чем отличается user code от user modules?

>>применяется для распределения задач
Что такое «задачи»? У вас нет такого термина

>> глобальное хранилище
Глобальное относительно чего?

… и еще множество вопросов.
К сожалению, вижу только много умных и сложных слов без смысла.
Разъяснения будут дальше, и более подробно, но вкратце:

Web Server — пишется на самом языке и является одним из стандартных модулей, поэтому он всегда в наличии.

InFilters и OutFilters — входной и выходной фильтры, InFilters позволяет изменять запрос, например по типу mod_rewrite в апаче, OutFilters позволяет изменить отправляемый контент, например закешировать весь вывод.

user code — просто выполняемый код, логика приложения

user modules — готовые модули которые либо расширяют стандартную библиотеку, либо реализуют другие законченные функции написанные пользователем.

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

Глобальное хранилище — это скомпилированный байт код стандартных модулей и библиотек + пользовательский байт код который необходимо использовать в дальнейшем
Что-то вы решили на мои вопросы не отвечать, похоже, а разговариваете сам с собой :)

>> Web Server — пишется на самом языке и является
Вопрос состоял в том, чтобы узнать «куда он встроен». Так куда же?

>>user code — просто выполняемый код, логика приложения
>>user modules — готовые модули
Они у вас ничем не отличаются друг от друга, судя по описанию; зачем их разделять?

>> Задачи — например можно базу данных держать
Еще раз — что такое «задачи»?

>> Глобальное хранилище — это скомпилированный байт код
Вопрос был «относительно чего оно глобальное»?

Вы, кроме как на php, еще на чем пишете? Пользуетесь ли при этом IDE? Если да, то что делать с вашим языком?
Мы просто общаемся на разных языках!

>>Вопрос состоял в том, чтобы узнать «куда он встроен». Так куда же?
Он будет работать на уровне демона внутри VM, то есть по сути являтся частью VM

>>Они у вас ничем не отличаются друг от друга, судя по описанию; зачем их разделять?
user modules — законченный и отлаженный класс или набор классов которые либо не будут изменяться, либо будут изменяться крайне редко, тогда мы их один раз скомпилировали и байт код закешировали для дальнейшего использования
user code — наоборот код который нельзя выделить в отдельный класс либо часто редактируется, либо не должен быть кеширован.

>>Еще раз — что такое «задачи»?
После получения запроса от пользователя, мы должны ему что-то ответить на его запрос, вот и разделяем запрос на задачи, где-то надо из базы данных что-то получить, где-то надо в файл записать и т.д. и делать это одновременно.

>>Вопрос был «относительно чего оно глобальное»?
Глобальное не относительно чего, а глобальное в смысле одно на всю VM

Кроме php пишу на С/С++ и Java. IDE для php Zend Studio, для остального NetBeans. Я думаю несложно будет написать плагин для различных IDE для подсветки синтаксиса, для отладки можно написать дебагер

Да нет, по-моему, на русском оба :)

>> Он будет работать на уровне демона внутри VM, то есть по сути являтся частью VM
Окэ. Как это соотносится с тем, что вы сказали что он (цитирую) «пишется на самом языке», т.е. работает поверх VM?

Насчет user-modules понял. Не понял только вот что — вы планируете кешировать только классы/модули целиком, что ли? Если нет, то почему именно user-code нельзя его кешировать вместе с остальными модулями, ведь у вас кеш кода работает прозрачно?

>> вот и разделяем запрос на задачи
Очень хорошо, но абстрактно. Вы их сами планируете исполнять, что ли, на калькуляторе, или отсылать на спутник :)? Что такое «задача»? Где она хостится, как она представлена, кто ее выполняет — или вы это сами не представляете?

>> глобальное в смысле одно на всю VM
Ясно. Т.е. если у вас на VDS несколько VM запущено с одинаковыми приложениями, то и кэш кода планируется у каждой VM свой. Нехорошо — одна и та же библиотека кода будет несколько раз оттранслирована и загружена в каждую VM, отъедая и без того небольшую память.

>> Я думаю несложно будет написать плагин
Сколько у вас в активе написанных компиляторов/анализаторов или дебаггеров, и плагинов?

Ну и чисто прагматический вопросы, связанные с VM — сколько раз писали VM? Сборка мусора там будет? Как планируете решать этот вопрос?
>>Окэ. Как это соотносится с тем, что вы сказали что он (цитирую) «пишется на самом языке», т.е. работает поверх VM?
А что Вас в этом смущает, на Java можно же написать сервер. Просто код постоянно работающий внутри VM.

Если я автоматически генерирую код и изменяю его раз в 5 секунд, зачем я буду его кешировать.

Задачи
Вы хотите в рамках одного топика увидеть архитектуру целой системы?

С одной стороны это безопасность, я не должен отвечать за, то что запущено на другой VM, а уж если мне надо выполнить, то что есть на другой VM, то для этого есть RPC

Я имел в виду не только себя, а и людей заинтересованных.

VM в составе нескольких человек написали % на 70 за полтора месяца
прошу прощения что встреваю в такую увлекательную дискуссию.

>> Web Server — пишется на самом языке и является
если всё описаное выше принять как основу/фреймворк/платформу, то web-server это скорее всего один из сервисов(в динамике)/модулей(в статике) этой платформы

>> Задачи — например можно базу данных держать
Скорее всего это юнит работы(Unit of Work), возможно Task. Остается непонятным, какой механизм диспетчеризации/взаимодействия этих задач выбрал автор. Будут они параллельны, аль последовательны, как делить ресурсы и контекст исполнения, будут они persistent или только runtime и.т.п

на вопросы «глобально/локально» я не нашел ответа, бо диаграмм никаких нет, смотреть негде
>> Задачи
Цитата была такая «код для работы с ней запускать там». Тут не UoW — берите выше, тут распределенные вычисления.
Попробуй придумать сервисно-ориентированный язык :)

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

При этом разработчик использует обычный синтаксис, а выполняются такие программы на уровне веб сервисов, rest запросами.

:)
прозреваю в описанном уже существующий stackless python

тасклеты, байткод, рантайм, XML-RPC
осталось прикрутить его к существующей веб платформе
А почему язык для веб сразу должен быть скриптовым?

 

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

В программировании сфер, куда можно приложить светлую голову, — немеренно. Почему сразу новый язык?
Идеальный скриптовый язык для WEB (http://bugblind.habrahabr.ru/blog/43651/)
По условиям дипломного проекта
Вы уверены, что потяните такую большую задачу? Зачем вам это?
Вам кажется, что вашего энтузиазма хватит на долго? К сожалению, он проходит быстро (знаю по себе).
Вы хотите заинтересовать сильных разработчиков и в итоге набрать команду? Во-первых, на Хабре, как и везде, их мало. Во-вторых, вы уже их отпугиваете своими, прям скажем, совсем не четкими ответами на вопросы. В-третьих, команду тоже надо мотивировать.

Учитывая современное разнообразие языков и фреймворков, написать новый язык и поддерживать его на таком уровне, чтобы им кто-то пользовался, в одиночку нереально.
Во-первых это очень сложная, но интересная задача, во-вторых некоторые моменты не до конца продуманы именно поэтому в диалоге с Хабровчанами и решается вопрос, как лучше сделать то или иное, а в-третьих на данном этапе команда не нужна.
В принципе в первом вашем топике вам уже все сказали: возьмите ту область, где популярные языки слабы и реализуйте язык для этого. Все. Язык для конкретной узкой области.

Можно, к примеру, написать аналог GWT для PHP.
Можно… На самом деле идей огромное кол-во, жаль, что в сутках только 24 часа:)
Я планирую написать еще несколько топиков где и разложить все по полочкам, извиняюсь за некоторые непонятные пока высказывания, но без прочтения остальных частей картину очень сложно объяснять.
Еще один идеальный язык для чего-то… Мы живем в мире, где php и С++ доминируют каждый в своей области, не являясь ни идеальными, ни даже слишком последовательными или стройными :)

Это, насколько понимаю, развлечения ради и удовольствия для?
У Стива Йегга был хороший блог-пост под названием типа «Why you shouldn`t write a new language» :) вспомнилось.
Вы написали про платформу, про язык нет ни одной строчки.
о чем вы, это же «идеальный скриптовый язык» он включает в себя все парадигмы, имеет идеальный синтаксис и компилируется за один такт расходуя одну минимальную единицу памяти на любой аппаратной платформе.

вопросы излишни
Для начала описание платформы, чтобы в дальнейшем было понятно зачем и для чего в языке некоторые вещи
Уважаемый тов. Дмитрий,

Предлагаю следующий подход: в дипломе Вы определяете идеологию и формы.
Но ничего не пишете.
Синтаксис и высоко-уровневые штуки, но только как ТЗ.

Реализовать крайне тяжко в-одного.

= По сути могу следующее предложить =
Идеальный для кого? Для девелопера или тестера или архитектора?
В чём идеальность? Сразу скажу, что слово идеальный меня сходу коробит, ибо на вкус и цвет.
Следовательно надо дописать кучу уточняющих слов — дял кого именно.

= Вот к примеру, чтоб я хотел? =
Чтобы меньше печатать и визуально чтобы tool все выделял.
С этой т.з. мне нравится питон, где всё жеско — скобки заменены на отступы и нииbird.
Даже если убрать в себе непривычность отсутсвия скобок, то это уже плюс: не надо скобки нажимать.

Далее по синтаксису. Что мне в ПХП не нравится, так это писать -> у объектов, а в сишарпе тупо
точка, которая рядом с правым шифтом.

Щас короче я чисто о юзабилити говорю, но далее будут tipical tasks.

Опять же в php бакс, как обозначение переменной: даже на EN он требует шифта — это напрягает.

Именования методов и объектов д.б. CamelCase. Чтобы однообразно, а подчерк в именах переменных и методов запретить :) Почему CamelCase? Да всё также! Быстрее! Шифт с буквой быстрее пишется, чем шифт, затем подчерк, затем буква.

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

90% времени мы читаем код. С документацией и типами как-то решить.

Конечно xxxDoc — хорошо, но это уже давно можно как-то встроить в язык.

Хотя опять же для какой-нить херни каждый раз писать int i, заместо просто i напрягает.

Т.е. типы например опционально как-то указывать и то только для читающих код людей и IDE. А уж сам движок должен после компиляции или что он там делает оптимизировать всё и вся.

= Терь по типикал таскс =
Валидация, вывод, интеграция в HTML (это про в пхп), почта, база.
Причём не д.б. ужоса .NET`а, когда одно и тоже можно 10 способами сделать, а д.б. раз и навсегда православные пути, чтобы не изобретать велосипеды.
Ну и в слое представления желательна какая-нить прозрачная, но близкая «интеграция» с HTML`ем, Javascript`ом и CSS`ом, но за одним API.
Типа как DOM, но более человеческий что ли. Чтобы прям здесь, не отходя от кассы можно было сделать типа currentTag.href = 'http://ya.ru/' или currentTag.hide() и он уже у него какйо-нить CSS-класс __hide прописывает, который уже где-нить типа display: none и т.д. Но в итоге девелопер болшую часть времени только в одном синтаксисе проводит.

Вот как-то так — brain row dump :)
Идеальный для разработчика и того кто будет код сопровождать, хотя бы для большинства

Синтаксис похож на сильно урезаный Java, поэтому я думаю проблем с изучением не будет.

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

Пытался изучить Перл, после просмотра документации настроение пропало и дальше простых скриптов не ушел :-(

То, что я выше накидал — обычный dump сознания.

А по уму я бы пошёл по Use Case`ам.

Значит кто у нас разработчик такой?
И главное — что он делает?

Вот исходя из определений уже дальше можно двигаться.

Это лучше где-нить в гуглодоках накинуть в прямом эфире, чтобы не пропало.
> Хотя опять же для какой-нить херни каждый раз писать int i, заместо просто i напрягает.
Дело привычки. Но время при отладке строгая типизация экономит очень много.
:)

Ещё прямые руки и грамотные комменты.

Я имел в виду такую ситуацию, когда у нас в меру или язык сам определяет тип.

Например,
1. SomeClass someObject = new SomeClass(someParameter);
2. someObject = new SomeClass(someParameter);

В большинстве случаев someObject у нас всегда типа SomeClass и экран не засоряется и человек лишний раз на кнопки не тычет.

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

Да, громоздкость синтаксиса в той же Java порой мешает. Но один раз убив полдня на поиск причины ошибки, я буду лучше использовать язык с избыточным синтаксисом. Нервы дороже, а нормальная IDE поможет быстренько набивать код.
Добавлю.

Большее кол-во времени программисты проводят не за написанием кода, а за его отладкой. Язык должен уменьшать время отладки всеми возможными способами. Оценить это можно лишь тогда, когда совершаешь глупую ошибку и из-за гибкости синтаксиса долго не можешь ее заметить.

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

Кроме того, строгий синтаксис заставляет больше думать во время проектирования, что в конечном счете выливается в более хороший код.
Я собираюсь жестко определить стиль кодирования сразу в языке, чтобы не было соблазна даже в 10 строках лениться и не давать вариантов одна задача решается однозначно одним способом
Вы пишете про Python, нет?

CPython и т.д.
PHP с компилятором в C++ от известных ребят разве не подойдёт?
Кстати, совсем забыл. C# даёт очень хорошую скорость с последним IIS под VDS-хостингом.

Очень хорошую, скриптовые языки отдыхают. Не пробовали?
Ну давайте тогда вообще все на Си писать, еще быстрей работать будет, только вот скорость разработки, отладка и стоимость сильно возрастут.
Sign up to leave a comment.

Articles