Pull to refresh
53
0

User

Send message
О, действительно. Первая как-то вообще не заметил.
Функции — это практически неисчерпаемая тема. Правда, при углубленном изучении придётся вдаваться в основы ФП, но, может, это и к лучшему.

Мне кажется, было бы полезно для начала рассказать о лямбде, map, reduce и прочих (как вариант следующих выпусков :) ). О карринге. Это достаточно универсальные вещи, которые в другом языке могут пригодиться.
Картинка в тему:

С чего вы взяли, что нужно хранить пароль? В правильно спроектированной системе пароль вообще не хранится в открытом виде. И даже если злоумышленник сломает сервер и вытащит базу, это не даст ему списка паролей, ибо их в базе нет. За подробностями в гугль: google://hash+salt+password
«Вышел торрент со свежим релизом OSX.Trojan.iServices!»
Я это понял, сам подобный метод использую, просто не думаю, что авторы qip по такому пути пошли.
> но когда программа, для удобства не слишком продвинутых пользователей прежде всего, хранит где-то в дебрях базы данных пароли, переписку и файлы — ооо катастрофа и нарушение прав и свобод.

Неужели вы не видите разницы между такими вещами? Вы в курсе, например, что процессинговым центрам запрещено хранить секьюрные компоненты кредиток? Пароль на то и пароль, чтобы левый дядя о нём ничего не знал. В крайнем случае, он может храниться в локальном менеджере паролей в зашифрованном виде, но уж никак не на сервервере стороннего левого дяди.
Я надеюсь, что там именно так пароль и передаётся, но что-то подсказывает, что авторы по этому пути не пошли.
Где ему благополучно впарят многолетнее старьё с неактуальной информацией.
Вы удивитесь, но для кучи людей он совершенно не очевиден и воспринимается с трудом. Если человек не способен это понять, то можно на него не тратить усилия по обучению ФП.
Тут фактически сам язык — дебаггер.
Фунциональный подход очень удобен при генерации XML, например. Простейший пример на PHP:

function e($name, $value='')
{
    return "<$name>$value</$name>";
}

print e('root', e('one', 1).e('two', 2));


Этот пример позволяет легко понять и объяснить самые базовые вещи самым «упёртым» пэхапешникам.
А зачем всё это типичному программисту на пыхпыхе? Как говорится, «нам тут лишние люди не нужны!».
Да, что-то я совсем фигни нагнал.
Приношу извенения, ошибся. Случай try:… finally в грамматике отдельно рассматривается.
Согласен, я выше привёл пример применения finally. Я говорил про некоторые случаи.
Исключения — это вообще тема для отдельного разговора. Например, в блоке finally нельзя делать continue (в python 2.5 по крайней мере).

Далее пример (finally выполняется всегда):

def f():
    global x
    try:
        x=1
        return
    finally:
        x=3
f()
print x
А это уже отдельный вопрос :) Я всё жду, когда начнётся обсуждение исключений, чтобы там позадавать вопросы относительно соответствия реализации языка его формальной грамматике. Грамматика явно требует наличия как минимум одного блока except.

Насчёт try и else

try:
    do_something
except E1:
    # ловим исключение 1
except E2:
    # ловим исключение 2
else:
    # ловим все остальные исключения
finally:
    # делаем что-то там в случае чего-то там


То есть смысл в том, чтобы отловить любое исключение, которое вылезет (считаем, что самого базового класса нет). В такой интерпретации я не вижу особого смысла в блоке finally.
Я бы заменил фразу «# выполнится, если выход из цикла не осуществлялся инструкцией break» на «# выполняется, если выход из цикла был произведён не инструкцией break» для единообразия.
Не просто не имеет, но и грамматика это явно запрещает.

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity