Да, я понимаю, что вероятность попасться на такую уловку очень мала. Но когда речь идёт о безопасности, то по-моему лучше устранить даже такую маленькую угрозу. Особенно учитывая то, что для этого надо всего лишь правильно выбрать число.
Добавлю что смена порта на значение большее 1024 — плохая идея. Порты от 1024-го и выше может слушать программа, запущенная любым пользователем, а не только root-ом. А значит злоумышленник, имеющий доступ к вашему серверу, сможет запустить программу, имитирующую ssh-сервер и собирающую пароли.
О том, что это перевод, говорят иконка и метка «перевод» у заголовка поста, а также ссылка на оригинал в конце. Так уж на хабре принято оформлять переводы :)
Слово «to hype» означает «поднимать шум», «навязчиво рекламировать», «пускать пыль в глаза». Соответственно «hyped» — это «раздутый» в том смысле, что вокруг него подняли шум, как, например, в словосочетании «раздутый скандал». А поскольку слово «раздутый» в русском языке имеет несколько значений, я выбрал более однозначное «разрекламированный».
«Раздутый» тоже подходит, но на мой взгляд «разрекламированный» больше соответствует оригиналу.
многое, из того, что перечислено уже есть в том же C#
Во-первых, не всё, а во-вторых важно не количество фич, а качество. Вот макросы на мой взгяд в корне меняют подход к программированию. К примеру, вы знали, что основу Common Lisp составляют всего 25 формы, а всё остальное реализовано макросами?
Задумайтесь на минутку: мощная реализация ООП с мультиметодами, комбинацией методов и MOP, рестарты, даже условные операторы и циклы — всё это просто стандартная библиотека, которую вы можете расширять. Захотелось вам поддержку логического программирования — напишите пару сотен строк кода с макросами и готово. Захотелось прототипное ООП, аспектное программирование или даже континуации — пожалуйста.
Даже если для повседневной работы вам хватает нынешних возможностей, скажем, C#, неужели вам не хочется познакомиться с такой гибкой средой? Я, например, тоже не использую лисп на работе, но я его изучил, и с тех пор мой взгляд на программирование сильно изменился.
Это здорово. Меня вообще в последнее время развитие C# радует. По сравнению с большинством других языков из мейнстрима он сейчас выглядит довольно привлекательно.
В чем их идеологическое, а синтаксическое отличие?
Идеологическое отличие в том, что макрос в лиспе может использовать при компиляции практически любые средства языка и таким образом может порождать произвольный код. Для макросов C и шаблонов C++ это неверно.
Например мы поделили на ноль — продолжать наши мат. вычисления дальше смысла нет.
А если речь идёт не о простейшей ошибке, типа деления на ноль а, например, об ошибке при чтении сложной структуры из файла? Тогда может быть несколько вариантов — пропустить отдельную запись, использовать значение по умолчанию, прекратить чтение. Рестарты в таком случае позволяют легко отделить выбор реакции на ошибку от остального кода и не требуют обязательно прекратить работу, как обычные исключения.
А если серьёзно, спасибо за статьи, с интересом буду следить за проектом.
Я не встречал перевода. Возможно, на досуге переведу и его.
и здесь:
Мне кажется, это ошибка.
«Раздутый» тоже подходит, но на мой взгляд «разрекламированный» больше соответствует оригиналу.
Задумайтесь на минутку: мощная реализация ООП с мультиметодами, комбинацией методов и MOP, рестарты, даже условные операторы и циклы — всё это просто стандартная библиотека, которую вы можете расширять. Захотелось вам поддержку логического программирования — напишите пару сотен строк кода с макросами и готово. Захотелось прототипное ООП, аспектное программирование или даже континуации — пожалуйста.
Даже если для повседневной работы вам хватает нынешних возможностей, скажем, C#, неужели вам не хочется познакомиться с такой гибкой средой? Я, например, тоже не использую лисп на работе, но я его изучил, и с тех пор мой взгляд на программирование сильно изменился.
… или лисп. Об этом и речь.
А если речь идёт не о простейшей ошибке, типа деления на ноль а, например, об ошибке при чтении сложной структуры из файла? Тогда может быть несколько вариантов — пропустить отдельную запись, использовать значение по умолчанию, прекратить чтение. Рестарты в таком случае позволяют легко отделить выбор реакции на ошибку от остального кода и не требуют обязательно прекратить работу, как обычные исключения.