NickMN: Всегда пожалуйста. Ясное дело, проще. Другое дело, что такая ересь очень просто реализуется и очень быстро работает, но криптографический стойкой её назвать сложно.
Впрочем, криптоанализ забавная штука. Вот поломали ГОСТ наш, ну было 240 сложных бит, стало 170... То, что это где-то пара жизней вселенных и несколько тонн открытого текста криптоаналитики предпочитают умалчивать.
Хотя здесь, конечно, немного другая история. Вся эта муть в принципе расписывается в энное число линейных уравнений, а системы за кубическое время мы пока не разучились. Впрочем, используется это дело весьма активно, но не столько в криптографии, сколько в околорандомных вычислениях.
А алгоритмы надо читать и разбирать. Было время, когда надо было разбираться, но сейчас вроде как время пошло, а вспоминать тяжко. В целом, роадмап я вам наметил, даже если он неверный - освоитесь и разберётесь. Марсальи кажется самым адекватным, если его утверждения действительно верные, то разобравшись в его утверждениях (там ссылка приводится) решить полученную систему - не вопрос.
Влад Животнев Ну тут всё таки стоит заметить, что одно дело не принял, потому что не понял что там. Другое дело не принял, потому везде одно и тоже. И совсем другое - если вместо решения задачи была подключена какая-нибудь красивая либа и дёрнута какая-то функция. 66.(6)% преподаватель оказался прав.
Вообще, хочу дополнить немного: архитектурные архитектуры дело сугубо индивидуальное. Кто-то везде использует мосты, кому-то больше нравятся прототипы. Есть евангелисты MVC, тогда как другие предпочитают MVVM. Самое главное - чтобы задача была решена, очень хорошо было бы, чтобы она была решена красиво. А какими шаблонами пользоваться лучше - дело вкуса.
Walt Disney: Простите, но вы путаете тёплое с мягким. Клиент-серверная - это именно архитектура. У JS был длительный период становления, когда нигде, окромя браузера, он не запускался, этакая колыбель. И в этом плане да, он был клиентским языком. Хотя опять же, можно было спокойно пускать X11 через ssh, делая и браузер с JS - серверными приложениями ;)
А я вижу причину рассуждать о функциональной парадигме. Рост популярности к функциональщине и одновременная колоссальный порог вхождения отсеивают нежелательный сегмент в виде подобных джуниоров. Поверьте, я видел много дерьма. Очень много. Я видел и своё дерьмо, хотя в последнее время его становится меньше. Но чужое порой пахнет по особому плохо. И сейчас думаю развиться в erlang и haskell, чтобы найти приятную работу, а не читать вырвиглазную отрыжку недоученных безалаберных джуниоров. К тому же, практически все популярные языки являются мультипарагдимальными, а писать на JS не понимая, что такое function, functor, callback или context вообще невозможно. ФП развивается очень быстро.
Walt Disney: Перечитал всё снова. Не увидел. Цитату или не было. ФП является ключевым в ответе. Нет, я не против классифицировать по сфере применения, моё негодование было вызвано кривым слогом. Есть web-среды, есть web-разработка, есть web-программирование. Серверных языков нет, это выдуманный термин порождённый глупостью и невежественностью к ремеслу. Любой язык, исполняемый удалённо может называться серверным. Вспоминаем про ssh и вопросы должны отпасть, а если ещё остались... могу лишь посочувствовать.
Walt Disney: КС, БНФ - и чё? SLR, LALR? А это всё одно и тоже? Зачем придумывают подмножества одних и тех же грамматик, от нечего делать? Чушь, блджад. Окромя вас нас ещё дети читают. Функциональщина - тоже программирование. Или вы так аккуратно парируете, потому что эта тема рушит ваши стройные высказывания? Хотя, стройными и без ФП их сложно назвать. Как максимум, набор терминов в перемешку со странными выводами.
И да, о фрезеровщиках. Посмотрев ответы Ильи можно легко предположить, что фрезеровщиком стать ещё очень хорошо будет: ужимать сроки в 14 раз...
И да. Откуда вы взяли увеличение сроков в 20 раз? Или вы думаете, что на шарпе прогают под сокеты, а на пайтонах/руби на ООП?
Walt Disney: Лучше бы вы не отвечали. Нет, правда. Молчащий собеседник выглядит часто намного умнее, чем он же говорящий.
Трансляторы, компиляторы, грамматики? LOLWUT C#, C и Algol - все принадлежат одной языковой группе. Читай, грамматика у них похожа: блоковый скоп, похожая типизация. При этом совершенно разные возможности, совершенно разные философии и подходы к разработке ПО. И я молчу, что Algol был платформозависимый , C уже нет, а C# компилирует платформонезависимый байт-код. И зачем же делали C#? Даже не знаю, всего лишь ещё один язык программирования, потому что в C не было классов. Стоп, а Си++ где пропустили? Остаётся молчать про Erlang и Prolog...
Walt Disney: Конечно не сможешь. Не понимаю, как можно дискуссировать на тему "серверных" языков с человеком, не знающим про bash и ssh. Илья Панков: вот, например. А вообще, амбиции это хорошо. Если выключить мудака, единственное, что могу пожелать - это удачи. А она понадобиться, ибо область сейчас жутко хаотичная и очень конкурентная - без варящего котелка вытиснут на позицию не самого лучшего эникейщика или же вовсе оставят без работы. Что лучше, сомневаюсь.
Walt Disney: Много чего можно. При определённой сноровке спать на потолке вполне себе можно, имея достаточно клея. Вопрос адекватности остаётся открытым. Серверный язык? Есть языки общего назначения. Есть ориентированные на web-приложения. Есть ориентированные на статистический анализ. Есть много разных. Но серверные? Первое, что приходит на ум - bash из под ssh.
Walt Disney: LOLWUT Нет, вы не правы. Что ещё за "семантика", что, блджад, за напыщенность? Слово новое узнали? А она, между прочим, есть суть, смысл сказанного. Простите, но я совершенно не понимаю оборот "семантика отдельного языка".
Приведённые языки автором? Серьёзно? Да ну, RoR - это язык? Ага, ладно. И чем синтаксически Rails отличается от Ruby. Ничем? Какое открытие!
После всего написанного сразу видно, что вы не умеете в функциональный подход. Если для вас он заканчивается "20 раз унаследованный класс vs цепочку из 20 колбеков", значит всё плохо. Потому что различия намного глубже, намного сильнее. Хотя бы потому, что 20 раз наследованный класс много быстрее, чем 20 колбеков. И это не какая-то квинтэссенция, не какая-то семантика, это, мать его, непосредственно результат. То, что вы продаёте, сдаёте или принимаете. И это то, на что следует обращать внимание в первую очередь.
Walt Disney:
haskell - нечто, что притворяется чисто функциональным языком, отсюда ориентация на чистые функции и всевозможные монады, и в тоже время очень крутая сильная статическая типизация, почти выводящая типы, что позволяет очень лаконично и декларативно решать задачи.
Си - очень странная штука, первый компилятор которого был написан на... Си. Позволяет решать широчайший круг задач ценой простреленных ног, рук и очень часто - головы.
Си с классами - тоже, что и предыдущее, только стреляем не из пистолета, а двустволки.
Си++14 - крутой мультипарадигмальный язык, позволяющий описывать программное обеспечение очень структурно, при этом поставленные задачи решаются как императивно, так и функционально. В тоже время, имеет под капотом предыдущих двух, на которые не то, что не стоит обращать внимание, но и вообще опасаться как голодного маньяка.
Java/C# - забавная отрыжка энтерпрайза, сама себе противоречащая - с одной стороны нужно больше строк, ибо чем больше их, тем выше зп, с другой надо постоянно переиспользовать уже написанный код, ибо чем быстрее делается ПО, тем больше свободного времени. В тоже время, имеют много забавных плюшек, вроде функциональщины, классной стандартной библиотеки, чистого ООП подхода, невероятной кроссплатформенности.
Python - идеологический язык, следующий собственным принципам непоколебимо. Проповедует красивый чистый код, единственный (известный мне) язык, имеющий подробные собственные рекомендации code style. Широчайшая библиотека, очень декларативный и, самое главное, является интерфейсом. Что породило IronPython (C#), Jython (Java), Cython (C/C++), PyPy (Python) и прочее отребье, наряду с референсом, каждый из которых имеет собственную экосистему. И всё это при очень удобной системе пакетов, позволяющий быстро и красиво оформлять отдельные модули в виде глобальных неймспейсов. Которые тоже сделаны очень лаконично, идеально вписывающиеся в лексическое пространство имён.
Prolog - своеобразный искусственный интеллект по автоматическому решению задач: если очень грубо, то описанная логическая задача разрешается с помощью поиска с возвратом. Сама. Получается очень лаконично и декларативно, если бы не вырвиглазный синтаксис, цены бы ему не было!
Brainfuck - no comments.
Языков очень много. И некоторые из них отличаются ну очень сильно. Как сферой применения, так и способом решения задач. Синтаксически очень похожие Си и Java имеют совершенно разные идеологии и слабо пересекающиеся сферы применения.