Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2013, 13:25
Аспирант
Отправить личное сообщение для eugenk Посмотреть профиль Найти все сообщения от eugenk
 
Регистрация: 14.05.2013
Сообщений: 47

Явное задание типа. ХЕЕЕЕЛЛЛППП !!!!!
Здравствуйте уважаемые коллеги. Только-только начал изучать javascript. Задача - написать клиента для работы с некоторой довольно специфической базой данных. Если кому интересно, приблудина должна представлять собой что-то похожее на Total Commander, но с кучей особых фич. Итог месяца работы - около 1000 строк отлаженного кода с базовым функционалом. Да, конечно до того я ничего не знал ни о javascript, ни о html ни о css. К тому же пришлось изучать python, на котором я писал сервер, и курить доки по mongodb. Тем не менее на QT или ActionScript3, я написал бы подобный код за 2-3 дня.
Это вообще первый в моей жизни код, написанный на яваскрипте. Что могу сказать по итогу. Много я в жизни повидал всякоразного говна. Но ничего говеннее яваскрипта не видал. Даже ассемблер удобнее. В любом нормальном макроассемблере можно определить структуру. И компилятор будет следить за обращениями к ее полям. А если есть нормальная среда, она еще сделает и автокомплит. Здесь же абсолютная свобода ведет к абсолютной анархии. Я юзаю PyCharm от JetBrains. Среда просто гениальная. По тому, как она показывает код, я вижу, что юзаются какие-то частотные и вероятностные методы анализа в попытке определить тип переменной. Но все равно автокомплит толком не работает ! Вобщем по опыту этого проекта я понял, что 100% динамическая типизация есть 100%, т.е. АБСОЛЮТНОЕ ЗЛО, делающее язык непригодным для написания чего-либо серьезного. Раньше я иногда спорил, отстаивая эту точку зрения чисто теоретически, ибо никогда ранее на подобных языках не писал. Но сейчас на 100% в этом убедился.
Итого, не хочу разводить тут флейма и холивара, хочу задать вопрос. Уважаемые коллеги, существует ли для javascript какая-нибудь приблудина со следующими свойствами ?
1) Позволяет ЯВНО (!!!) указывать типы объектов. Например так, как это сделано в ActionScript3 - var <имя>:<тип>
2) Является расширением javascript, а не новым языком типа Haxe, прозрачно преобразующей текст в обычный javascript, просто удаляя объявления типов.
3) Интегрирована в какую-то IDE, позволяя нормально работать автокомплиту.

P.S. Народ, если кто знает, тот же вопрос и для python. Тоже такой же говноязык для "программистов", вычисляющих корни квадратного уравнения. Это пожалуй даже более для меня важно, ибо основная тяжесть проекта будет на сервере. С яваскриптом просто сейчас на первом этапе пришлось очень плотно работать. Дальше будет в основном python.

Последний раз редактировалось eugenk, 14.05.2013 в 14:01. Причина: Добавил.
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2013, 13:35
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Ругаетесь на javascript хотя толком его не знаете, да ещё и на форуме по javascript. И при всем этом хотите, чтобы вам помогли. Жесть
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2013, 13:37
Аспирант
Отправить личное сообщение для eugenk Посмотреть профиль Найти все сообщения от eugenk
 
Регистрация: 14.05.2013
Сообщений: 47

Я все-таки задаю вопрос о тулзе. Ругаюсь просто чтобы было понятно, для чего она мне нужна. Можете что-то ответить по существу ?
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2013, 13:40
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Используйте флеш, или typescript. Хотя лучше напишите свой транслятор, который будет использовать все нужные фичи. И конечно ide для него
Ответить с цитированием
  #5 (permalink)  
Старый 14.05.2013, 13:41
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

zebra, всегда так делаю.
Ответить с цитированием
  #6 (permalink)  
Старый 14.05.2013, 13:48
Аватар для tropiko
Аспирант
Отправить личное сообщение для tropiko Посмотреть профиль Найти все сообщения от tropiko
 
Регистрация: 23.06.2011
Сообщений: 44

eugenk, используйте JSDoc и получайте автокомплит. Не знаю, как во всех продуктах JetBrains, но в IntelliJ IDEA поддерживается по-умолчанию.
Ответить с цитированием
  #7 (permalink)  
Старый 14.05.2013, 13:51
Аспирант
Отправить личное сообщение для eugenk Посмотреть профиль Найти все сообщения от eugenk
 
Регистрация: 14.05.2013
Сообщений: 47

Сообщение от zebra Посмотреть сообщение
Используйте флеш, или typescript. Хотя лучше напишите свой транслятор, который будет использовать все нужные фичи. И конечно ide для него
Флеш - увы... У меня по нему что называется 10-й дан, но использовать его уже нельзя из-за невнятной политики Apple, в отношении его поддержки. Сейчас единственное что остается более не менее совместимым для клиентской стороны, это javascript. Транслятор бы написал, без проблем. Он не так сложен, хотя придется вводить описания структур хотя бы в стиле чистого С. Беда в том, что его еще нужно интегрировать в среду. В тот же PyCharm, или в Eclipse, так чтобы тамошний автокомплит умел определять типы и нормально работал. А это увы, уже задача совсем другого порядка сложности. Вот и спрашиваю здесь. Может уже есть какие-то готовые подобные инструменты ? Ведь наверняка я не первый сталкиваюсь с этой проблемой. А народ на javascript пишет очень нетривиальные вещи.

Последний раз редактировалось eugenk, 14.05.2013 в 13:56.
Ответить с цитированием
  #8 (permalink)  
Старый 14.05.2013, 13:58
Аспирант
Отправить личное сообщение для eugenk Посмотреть профиль Найти все сообщения от eugenk
 
Регистрация: 14.05.2013
Сообщений: 47

Сообщение от tropiko Посмотреть сообщение
eugenk, используйте JSDoc и получайте автокомплит. Не знаю, как во всех продуктах JetBrains, но в IntelliJ IDEA поддерживается по-умолчанию.
Прошу прощения, можно поподробнее, что это такое ??? Я новичок, просьба не пинать если чего-то не знаю

Еще раз прошу прощения, но доки это немного не то. Пример.
У меня есть массив panels, в котором я храню объекты типа Panel, в которых в свою очередь хранится описание физических свойств панелей моего менеджера базы данных. Например высота и ширина панели, число строк текста и т.п. Т.е. объект типа Panel является строго определенным. Он содержит четко определенные поля и ничего более. А глобальная переменная panels хранит только объекты типа Panel и ничего более. В программе я пишу:
var panel=panels[pan];
panel.width=200;
Никаие доки не помогут определить среде, что panel это объект типа Panel, который содержит поле width, но не содержит поля widht. Если бы тип Panel был известен, во-первых как только я написал бы panel. сразу появился бы автокомплит, который подсказал бы поле width. Во-вторых, если я все-таки напишу panel.widht, в нормальном языке компилятор бы выругался на несуществующее поле. В javascript panel.widht=200 будет понято как желание ввести в объект panel новое поле widht и присвоить ему значение 200. Поле width при этом разумеется не изменится и программа нормально запустится. После чего придется очень долго выяснять в отладчике, почему ширина панели не меняется. Я говорю исключительно об этих проблемах. Документирование на JSDoc тут не спасет.

Последний раз редактировалось eugenk, 14.05.2013 в 15:07. Причина: Добавил
Ответить с цитированием
  #9 (permalink)  
Старый 14.05.2013, 14:06
Аспирант
Отправить личное сообщение для eugenk Посмотреть профиль Найти все сообщения от eugenk
 
Регистрация: 14.05.2013
Сообщений: 47

Сообщение от zebra Посмотреть сообщение
Используйте флеш, или typescript. Хотя лучше напишите свой транслятор, который будет использовать все нужные фичи. И конечно ide для него
За typescript респект ! Буду смотреть что это такое. Возможно оно именно то.
Ответить с цитированием
  #10 (permalink)  
Старый 15.05.2013, 00:20
Аспирант
Отправить личное сообщение для eugenk Посмотреть профиль Найти все сообщения от eugenk
 
Регистрация: 14.05.2013
Сообщений: 47

Zebra, огромный респект за наводку на typescript ! Сейчас поставил, правда для этого PyCharm обновлять пришлось, и не могу нарадоваться ! Это почти что ActionScript3 ! Вот что значит спросить совета у знающих людей ! Ну и тогда еще вопрос. Вы не подскажете, нет ли столь же полезной тулзы для python ? Он увы тоже страдает теми же проблемами, что javascript. Только с питоном, если что-то такое есть, нужно на версию 2.7. Третьей я не могу пользоваться ибо под ним на сервере надо nltk поднимать, а он только под двойку. Вобщем был бы дико благодарен, если бы знатоки подсказали и для питона решение. Сам я что-то ничего не смог в сети разыскать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка типа файла перед отправкой mav1 Элементы интерфейса 18 27.05.2012 19:28
Помогите сделать тестовое задание начального уровня по js makregistr Работа 1 16.12.2010 14:26