JS и его "недостатки"
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.123] |
|
|
Правила раздела:
| Страницы: (66) « Первая ... 31 32 [33] 34 35 ... 65 66 ( Перейти к последнему сообщению ) |
JS и его "недостатки"
|
Сообщ.
#481
,
|
|
|
|
Цитата D_KEY @ Ограничений на разработку - не накладывает. Можешь привести пример, если не согласен. Я тебе уже говорил, что ты просишь странного? Если ты прогаешь - значит можно, если я прогаю - значит тоже можно. Какие примеры тебе нужны в данном слычае я вообще не понимаю. Ты сам-то понимаешь чего просишь? ![]() Ты описал function (a,b), ты внутри нее работаешь с a и b - какое тебе дело до того, что браузер в своей глубине делает что-то еще? Тебя это как касается?И таки где наглядность? Что по умолчанию в переменных будет null? И что это дает? Какая-такая наглядность появилась? Цитата D_KEY @ Такая функция обрабатывает все свои аргументы, сколько бы ты не передал. С этим юзкейсом я согласен. И он реализуем и через явное указание. Так ты согласен, что передача в функцию большего/меньшего числа аргументов, чем она обрабатывает, является ошибкой? Ты троллишь так? НЕТ, Я СЧИТАЮ ЭТО ПРЕИМУЩЕСТВОМ. Так понятно? |
|
Сообщ.
#482
,
|
|
|
|
Об чём сыр-бор?
|
|
Сообщ.
#483
,
|
|
|
|
Цитата SPM @ Об чём сыр-бор? Если коротко - "вам не кажется, что возможность вызвать функцию с большим числом параметров, чем задано в определении должно непременно вызывать ошибку?" |
|
Сообщ.
#484
,
|
|
|
|
Цитата Астарот @ Ты описал function (a,b), ты внутри нее работаешь с a и b - какое тебе дело до того, что браузер в своей глубине делает что-то еще? Тебя это как касается?Меня это касается хотя бы тем, что я вынужден думать о том, что мне могут не прийти эти переменные. Но речь не только обо мне. Клиент ошибется и вызовет мою функцию с неверными аргументами, а ему никто слова не скажет... Цитата И таки где наглядность? Что по умолчанию в переменных будет null? И что это дает? Какая-такая наглядность появилась? Наглядность в том, что из этого описания уже следует, что функция принимает два опциональных параметра. Не наглядно? Цитата Цитата D_KEY @ Так ты согласен, что передача в функцию большего/меньшего числа аргументов, чем она обрабатывает, является ошибкой? ... НЕТ, Я СЧИТАЮ ЭТО ПРЕИМУЩЕСТВОМ. Вот и продемонстрируй это преимущество на примере(все твои примеры до этого обрабатывали все свои аргументы). |
|
Сообщ.
#485
,
|
|
|
|
Мне не кажется, я уверен, что если руки не оттуда, то жди неприятностей.
Где-то, (как си) например, есть указатели, где если не думать, то никакая типизация не поможет. Тут интерпретатор, он не компилер, сложно требовать чегото большего. Однако это не умеляет качеств, ни того ни другого. Это как та ложка, которая хороша к обеду, а не рыть котлован. |
|
Сообщ.
#486
,
|
|
|
|
Цитата D_KEY @ Кстати, есть ли какая-нибудь литература о дизайне языка js, где было бы описано, что, зачем и почему? Цитата Brendan Eich I hacked the JS prototype in ~1 week. And it showed! Mistakes were frozen early. Добавлено Цитата SPM @ Тут интерпретатор, он не компилер, сложно требовать чегото большего. Расскажите нам про разительную разницу. |
|
Сообщ.
#487
,
|
|
|
|
Цитата SPM @ Тут интерпретатор, он не компилер, сложно требовать чегото большего. Причем тут компилятор/интерпретатор? Если что, пока сравнивали с решениями других столь же динамических языков... |
|
Сообщ.
#488
,
|
|
|
|
Цитата D_KEY @ То есть по твоей логике, если у тебя f(a=null, b =null) - то ты не проверяешь их, а прямо так и кидаешь в бой? и как? нормально? без ошибок? Вот и продемонстрируй это преимущество на примере(все твои примеры до этого обрабатывали все свои аргументы). |
|
Сообщ.
#489
,
|
|
|
|
Цитата Астарот @ На многочисленные просьбы показать где реально будет мешать отбрасывание лишнего ты так и не привел ни кусочка кода. А теперь, понимаешь ли, тебя не устраивает "ее описание" о котором речи вообще не шло ![]() ![]() ![]() def str_partition(str, substr, reverse=False): if not reverse: idx = str.find(substr) else: idx = str.rfind(substr) return (str[:idx], str[idx+len(substr):]) def parse_stat_str(line): (param, right) = str_partition(line, ' ') (left, value) = str_partition(right, ' ', reverse=True) keys = left.strip() return (param, value, keys) def create_stat(stat_strings, formatter): stat = {} for stat_str in stat_strings: (param, value, key_string) = parse_stat_str(stat_str) (main_key, keys) = formatter.parse_and_format(key_string) if main_key not in stat: stat[main_key] = {"key": keys} stat[main_key].update(dict(map(lambda x: (x, 0), print_params))) stat[main_key][param] = value; return stat Да пожалуйста. create_stat принимает список строчек со статистикой, парсит их с помощью функции parse_stat_str и форматирует/парсит с помощью объекта formatter. str_partition делит строку на две половинки при встрече шаблона substr. Строки выглядят так: ![]() ![]() имя_параметра ключ1 ключ2 значение Количество ключей - любое (обычно 1 или 2) Все эти функции - бессмысленны без своих аргументов, и таких функций - большинство. |
|
Сообщ.
#490
,
|
|
|
|
Цитата D_KEY @ Меня это касается хотя бы тем, что я вынужден думать о том, что мне могут не прийти эти переменные. Вот ведь пичалька-то - думать приходится Если это единственная причина, то пардон - мне как-то ближе предусмотреть в коде реакцию на неправильно вызванную функцию с занесением информации об ошибке "куда надо" или предпринятии шагов по ее устранению, а не квадратно-гнездовой метод "не скомпилируюсь".Цитата D_KEY @ Но речь не только обо мне. Клиент ошибется и вызовет мою функцию с неверными аргументами, а ему никто слова не скажет... Во-первых в твоем случае все что ему скажет "ТЫ ДУРАК", а почему ему таки придется в ряде случаев догадываться самому, и в конечном итоге либо обратится к документации, либо залезть в код. Во-вторых "правильно" вызвать функцию ВНЕЗАПНО можно и по разному - и в твоем случае точно так же как в js никто никому ни о чем не заругается и проверку придется вшивать в тело функции. Так о чем речь, а? Цитата D_KEY @ Наглядность в том, что из этого описания уже следует, что функция принимает два опциональных параметра. Не наглядно? Из чего следует опциональность параметров? Null по умолчанию не говорит об опциональности ничего. О количестве параметров я уже писал, надоело.Цитата D_KEY @ Вот и продемонстрируй это преимущество на примере(все твои примеры до этого обрабатывали все свои аргументы). Кеша, ты опять? Мне уже хочется назвать тебя тупым, и оставить помирать таким, как ты есть. Ты не читаешь. Тупо не читаешь что тебе пишется. Каким образом отбрасывание лишнего превратилось в не использовать то, чего не передавали и при этом что б было полезно? Лизни уже розетку и перечитай тему! |
|
Сообщ.
#491
,
|
|
|
|
О до компилера даколебались, чегож про указатели промолчали?
|
|
Сообщ.
#492
,
|
|
|
|
Цитата MyNameIsIgor @ Расскажите нам про разительную разницу. Закройте уже кто-нибудь крышку гроба ![]() Мява, ты великолепен В проче как и всегда. НаЦитата Мяут-Настоящий @ просьбы показать где реально будет мешать отбрасывание лишнего ты гордо изрекаешь Цитата Мяут-Настоящий @ Да пожалуйста. и приводишь код, который комментируешь как Цитата Мяут-Настоящий @ Все эти функции - бессмысленны без своих аргументов Тебя не смущает, что просили "будет мешать отбрасывание лишнего", а привел ты "не работает без параметров"? |
|
Сообщ.
#493
,
|
|
|
|
Цитата MyNameIsIgor @ Компилятор сгенерил код, сунул его в exe'шник и отдыхает...Расскажите нам про разительную разницу. А интерпретатор каждый раз разбирает заново при обращении... Ваш Кэп Браузеры итак тупят при загрузке, а если еще все эти приблуды прикрутить, без которых вы жить все не можете, вообще зависать будут... |
|
Сообщ.
#494
,
|
|
|
|
Цитата fatalist @ Браузеры итак тупят при загрузке, а если еще все эти приблуды прикрутить, без которых вы жить все не можете, вообще зависать будут... Зависать будет на каждом шагу если прикрутить сишные области видимости в виде блоков - во где браузеры-то затупят |
|
Сообщ.
#495
,
|
|
|
|
Цитата fatalist @ То есть по твоей логике, если у тебя f(a=null, b =null) - то ты не проверяешь их, а прямо так и кидаешь в бой? Проблема в том, что в js надо проверять все аргументы, а не те, для которых есть значение по умолчанию. Цитата SPM @ О до компилера даколебались, чегож про указатели промолчали? Да просто сложно человеку, не представляющему себе обработку ошибок в трансляторах, объяснить, что указатели в C - вынужденная мера, что без них никто никакой замены C так и не сделал, что C вообще здесь ни при чём, ибо язык иного уровня, что здесь сравнивают js с такими же динамическими языками, что он сливает им по всем параметрам и т.д. Так вот реально лень всё это разжёвывать. Потому и начал с трансляторов. Для начала подумайте, как это так в Python получается ошибка при передаче в функцию не того количества параметров, что она ожидает. Добавлено Цитата fatalist @ Компилятор сгенерил код, сунул его в exe'шник и отдыхает... А интерпретатор каждый раз разбирает заново при обращении... Ваш Кэп Плохой, негодный кэп. Так и не смог пояснить, почему же интерпретатор не может выдать ошибку. Цитата fatalist @ Браузеры итак тупят при загрузке Ну, да, джаваскриптеры - они такие - любят тормозную лабуду понаписать. |