Навигация
Поддержать материально
Steam Greenlight

Логотипы
Медальки
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Темы форума
187 - ?
30.10.2024
 Mefistofel
Galactic Showdown -…
21.10.2024
 KregHek
Новый IGDC
5.08.2024
 rimush
186 - Strategy!
15.07.2024
 VoroneTZ
WoL
3.07.2024
 Darthman
Привет выжившие
21.05.2024
 GeePee
185 - RPG
9.02.2024
 Vaskrol
В каком банке открыт…
24.01.2024
 Darthman
185 - ?
30.12.2023
 Mefistofel
TESTAMENT - Тактичес…
15.11.2023
 KregHek
Сейчас на сайте
Гостей: 59
На сайте нет зарегистрированных пользователей

Пользователей: 1,790
новичок: Durved
Обсуждение «120 - ?»
Страница 7 из 9 << < 4 5 6 7 8 9 >
KEFIR
Avatar пользователя

Опубликовано 16.03.2015 13:16 (10 лет назад)    #
Mefistofel написал:
KEFIR
Я надеюсь, ты не серьезно:)
Либо это очень странное будущее.

На самом деле это будущее уже здесь (см. языки по популярности на гитхабе например). А во вторых не вижу ничего страшного в таком будущем :) Если разобраться и проникнуться, то становится очевидно что JS мощен и прекрасен, а с приходом стандарта ES6 будет еще на порядок круче :)
Daemon
Avatar пользователя

Опубликовано 16.03.2015 13:26 (10 лет назад)    #
Нет уж, до прихода ES6 я категорически против js :)

Отсутствие модульности (!) и нормального ООП из коробки, callback hell, нестандартный strict mode, critical-error-but-contnue - поведение - хреновое будущее это. Динамически-типизированный язык будущего так не должен.

редакция от Daemon, 16.03.2015 13:26

Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 16.03.2015 13:53 (10 лет назад)    #
Да, страшноват он для будущего. Мощь и инструментальная гибкость это хорошо конечно, но странная реализации ООП и утиная типизация меня убивают.
С питоном у меня схожие проблемы.
Да прост и гибок. Но рантайм ошибки вызова методов и когда не найдешь концов в используемом объекте - это просто ад. Да если даже IDE не может тебе произвести банальный рефакторинг - изменить название функции или переменной. Не потому что убога, а потому, что это невозможно.

Я честно пытался и пытаюсь понять, как на таких языках делают серьезные проекты. Помоему динамическая типизация - это такое маленькое удобство, которое превращается в большое структурное зло. Просто таки убивает полезность. Может Я недостаточно питоничен?

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

Опять же - зачем тогда крупные корпорации разрабатывают трансляторы, asm ' js и typeScript ы. Только лишь для переноса готовой кодовой базы и программистов, которые не могут перенять сути прекрасной динамической типизации?

И вообще, давайте похоливарим.
KEFIR, можешь мне объяснить, что Я думаю не так? В чем преимущества, помимо сахара и легковестности структур?

редакция от Mefistofel, 16.03.2015 13:58

KEFIR
Avatar пользователя

Опубликовано 16.03.2015 13:55 (10 лет назад)    #
Daemon написал:



Отсутствие модульности (!)

JS просто настолько гибок, что отдает реализацию модульности в юзерленд. Какой еще язык может похвастаться этим?
Для реализации модульности есть множество опций:
1. В браузере можно просто подключать отдельные скрипты, у них будет общий глобальный объект/область видимости (объект Window).
2. В том же браузере скрипт может загрузить другой скрипт асинхронным запросом.
2.1. На основе этой возможности есть отличная реализация require.js и другие.
3. В node.js модульность есть из коробки


нормального ООП из коробки

Но js функциональный язык и ООП из коробки там и не будет. В ES6 лишь добавится сахар над все тем же прототипным наследованием. Собственно это вообще не минус, это вы просто все привыкли к одной парадигме и не мыслите своей жизни за ее пределами :) Кроме того, это самое прототипное наследование дает возможность реализовать вполне себе привычное наследование причем разными путями (а еще множественное наследование и миксины) :) Например как в моем коде на этот конкурс (да, я тоже жертва ООП которое нам навязали эти ваши C++ и Javы).

callback hell

Следствие криворукости пишущего. Причем тут язык вообще? Имея лямбды в любом языке можно устроить callback hell.

нестандартный strict mode

Что значит нестандартный? Или тут пропущена "и"? Да и в чем тут беда?

critical-error-but-contnue - поведение

Ну это на совести среды выполнения. В node.js этого нет. Хотя в этом тоже ничего страшного не вижу :) var a = 1/0; в a просто окажется NaN, ну и что? :)

Короче говоря, все ваши страхи лишь от того, что вы привыкли к своим закостенелым компилируемым языкам со строгой привязкой к парадигмам :-D
KEFIR
Avatar пользователя

Опубликовано 16.03.2015 14:02 (10 лет назад)    #
Mefistofel написал:
Но рантайм ошибки вызова методов и когда не найдешь концов в используемом объекте - это просто ад. Да если даже IDE не может тебе произвести банальный рефакторинг - изменить название функции или переменной. Не потому что убога, а потому, что это невозможно.

Не совсем понял о чем ты. Любой инструмент отладки даст тебе абсолютно вменяемый стектрейс, если конечно ты не любитель сотворить callback hell, а JS дает тебе возможность таким образом выстрелить себе в ногу :) Вопрос с рефакторингом доже скорее к вопросу о правильном оформлении кода. Например в моем коде PHPStorm (он же WebStorm) отлично понимаем все дерево наследования и без проблем делает рефакторинг и навигацию по коду. Но если ты будешь писать говнокод с глубокими замыканиями и eval'ами.. Ну это уже точно не проблема языка.
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 16.03.2015 14:02 (10 лет назад)    #
Да, вот про привязку и типизированное мышление Я часто слышу.
Но блеать, ты не понимаешь, что за объект у тебя пришел в функцию и можешь попробовать сделать с ним все что хочешь. Собственно так можно сделать и в java, но только по умолчанию тип у него всетаки есть, а для такого поведения нужно пострадать.

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

редакция от Mefistofel, 16.03.2015 14:05

Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 16.03.2015 14:06 (10 лет назад)    #
Да, но стактрейс ты получишь тогда, когда эта штука там упадет из-за твоей опечатки в редких условиях. А могла бы вообще не упасть.
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 16.03.2015 14:07 (10 лет назад)    #
Собственно да, все к тому и сводится. "Вы писать не умеете" :)
KEFIR
Avatar пользователя

Опубликовано 16.03.2015 14:11 (10 лет назад)    #
Про типизированность я настолько тебя не понимаю что даже не знаю что ответить :) Просто у меня никакого дискомфорта отсутствие строгой (какой либо) типизации не вызывает (как и ее наличие впрочем). Я просто даже не вижу в чем проблема.
KEFIR
Avatar пользователя

Опубликовано 16.03.2015 14:14 (10 лет назад)    #
Mefistofel написал:
Собственно да, все к тому и сводится. "Вы писать не умеете" :)

Ну в целом да, так и есть :)
Я давно заметил что вся ругань на тему языков исходит из уст тех, кто просто реально не понял в чем фишка :) Привыкли к одному, а окунувшись во что-то непривычное чувствуют опасность и неправильность сделанного. Однако на все это есть причины и для всего этого есть применение :)
KEFIR
Avatar пользователя

Опубликовано 16.03.2015 14:15 (10 лет назад)    #
А все нападки на JS действительно звучат как "Смотрите! JS не делает так, как это делает язык XXX! JS - говно!" :)
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 16.03.2015 14:26 (10 лет назад)    #
Хм. Интересно:)
Ну например. Ты подключаешь чужую библиотеку. Скажем, вебсервер. Пример прост, импортируешь, вызываешь метод с параметром адреса, все работает. Решаешь чуть изменить параметры... И не понимаешь, что там за параметр. Особенно если там переопределение. Лезь в реализацию или в документацию, IDE тебе не поможет.
Функция этой библиотеки возвращает объект. Что за объект? Какие параметры содержит? Другие функции этой библиотеки этот объект принимают, как тебе такой объект не по инструкции собрать, чтобы работало?
Как реализовать вектора и матрицы для Ogl без боли? Как сделать переопределение банального умножения для разных штук? У меня получилось только отдельными функциями, которые каждый раз надо вызывать отдельно, боясь ошибиться.

Может Я просто не видел хороших IDE ?

Конечно, строгая типизация - не абсолютное добро и панацея, но тем не менее.
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 16.03.2015 14:27 (10 лет назад)    #
Ну Я пытаюсь понять. Но пока да, фактически - говно. Ладно бы он просто делал это по другому. Но он делает это хуже. Удобнее, но хуже.
KEFIR
Avatar пользователя

Опубликовано 16.03.2015 14:36 (10 лет назад)    #
Ну в случае с параметрами функций все просто - IDE тебе поможет :) Почему собственно нет? Опять же, если ты используешь нормальную библиотеку с исходниками (да, это странно звучит для JS но читай дальше), а не написанную Васей из 7б на глобальных переменных и не минифицированную версию, то у каждой функции будет аннотация, которую цепляет IDE как и в любом другом ЯП. С возвращаемым объектом точно также. Кроме того, опять же, если код оформлен хорошо и правильно, то IDE и без аннотаций разберется что там передается и отдается.
Или тебе больше нравится выяснять что там передается и возвращается на ошибках компилятора?
Перегрузки операторов в JS нет, это правда. Но это опять же ругать JS за то, что он не C++ :)
Если хочешь посмотреть на хорошую IDE для JS, то посмотри в сторону WebStorm (PHPStorm) - она действительно устраняет многие причины для боли. Но для начала, конечно, нужно понимать философию языка :)
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 16.03.2015 14:51 (10 лет назад)    #
Да. Про философию часто говорят.
Ладно, не буду еще аргументы против приводить. Вот тут почитаю, почему Я не прав:
http://habrahabr.ru/post/214087/
:)
KEFIR
Avatar пользователя

Опубликовано 16.03.2015 14:55 (10 лет назад)    #
Лучше не читать, а попробовать самому сваять что-то более-менее большое. Через слезы и боль :) Первое что я сделал, это был "игровой движок" https://github.com/miriti/engine.js
(на самом деле не первое, до этого я много лет занимался вебом и приходилось многое делать на JS но без особого погружения и понимания).
Весь этот код это огромный кусок говна, писать это было больно и неприятно, но в итоге я многое понял и теперь все получается легко и приятно, а главное понятно почему язык ведет себя так или иначе и как это можно использовать в своих целях :)

редакция от KEFIR, 16.03.2015 14:58

KEFIR
Avatar пользователя

Опубликовано 16.03.2015 15:00 (10 лет назад)    #
Да... и когда-то я писал вот такой callback-hell https://github.com/miriti/1sword/blob/master/game.js#L300. Но в свое оправдание могу сказать что это была работа на LD48, было мало времени и тогда я осознавал что пишу говнокод :)
bsivko
Avatar пользователя

Опубликовано 16.03.2015 15:14 (10 лет назад)    #
KEFIR написал:
JS просто настолько гибок, что отдает реализацию модульности в юзерленд. Какой еще язык может похвастаться этим?

перл?

KEFIR написал:
Про типизированность я настолько тебя не понимаю что даже не знаю что ответить :) Просто у меня никакого дискомфорта отсутствие строгой (какой либо) типизации не вызывает (как и ее наличие впрочем). Я просто даже не вижу в чем проблема.

Основная проблема в том, что часть потенциальных ошибок ловит компилятор. Автоматически. Динамическая типизация такого себе не позволяет. Но зато позволяет упасть в самый подходящий момент. А внезапно падающие программы никому не нравятся.

KEFIR написал:
А все нападки на JS действительно звучат как "Смотрите! JS не делает так, как это делает язык XXX! JS - говно!" :)

Далеко не все звучат так.
KEFIR
Avatar пользователя

Опубликовано 16.03.2015 15:28 (10 лет назад)    #
bsivko написал:
перл?

Ничего про него не знаю. Еще можно сказать что в C/C++ также нет приличной модульности, есть только инклюды.


Основная проблема в том, что часть потенциальных ошибок ловит компилятор. Автоматически. Динамическая типизация такого себе не позволяет. Но зато позволяет упасть в самый подходящий момент. А внезапно падающие программы никому не нравятся.

Ошибки с типами данных могут быть отловлены, но есть и куча других проблем, которые все еще могут обрушить программу в рантайме и не факт что таких потенциальных проблем меньше чем в JS. Никогда не забуду неделю поиска утечки памяти в fastcgi сервисе, который я писал на C...
Ну и снова приходится возвращаться к тому, что если писать код нормально, то ошибки с "неправильными" типами не будут вызывать фатальных проблем.


var foo = [0];
выражение (!foo == foo) равно true,

var foo = [17];
выражение (foo == 17) равно true,

"23" + "4" равно строке "234"
"23" - "4" равно же 19

Попишешь некоторое время на JS и такие вещи не будут тебя шокировать абсолютно. Просто нужно мыслить out of the box :-D
Да и все описанные выражения абсолютно логичны даже с первого взгляда, кроме первого.
Но конечно не для того, кто всю жизнь просидел на C++/Java/C#/Pascal'e :)
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 16.03.2015 15:54 (10 лет назад)    #
Проблема в том, что мы пишем код с ошибками. Концептуально. А ещё временами его читаем.
Быть может, слёзы и боль освоения того стоят, но пока многие достоинства(в частности из вышеприведённой статьи:) звучат как недостатки.
Ну а насчёт c# и прочих - звучит так, как будто они необратимо ломают сознание:)
Страница 7 из 9 << < 4 5 6 7 8 9 >
Перейти на форум:
Конкурсы
Открытые конкурсы:
Активных нет
Недавние конкурсы:
 186 - Strategy
 185 - RPG XII
 184 - Arcade II
 183 - Novel
 182 - RPG XI
 Все конкурсы
Случайная игра
Мини-чат
Вам необходимо залогиниться.

Архив чата

26,158,835 уникальных посетителей

Создано на базе русской версии PHP-Fusion copyright © 2003-2006 by Nick Jones.
Released as free software under the terms of the GNU/GPL license.