Просто я ошибку понял сразу после того, как отправил ответ. И исправился ещё до Вашего комментария :)
А что до оригинального анекдота — само собой, что вариант про математиков из докомпьютерной поры :) Потому, полагаю, вариант с программистами — производная ;)
>А я вот думаю, что экстраверты — отличные программисты, ничем не хуже интровертов.
Они хорошие чаще не программисты (хотя такие тоже бывают), а организаторы :) Для команды разработчиков, по идее, и те, и другие нужны. Вообще, желателен широкий спектр типов.
Тут же речь больше об одиночках, как я понимаю. И в этом случае интроверсия сама напрашивается :)
В любом случае важно помнить, что вертность — далеко не единственная кластеризация и потому не является единственным критерием определения пригодности к той или иной деятельности.
Просто оригинальный анекдот несколько более развёрнут: «Как отличить математика-интроверта от экстраверта? Математик-экстраверт, разговаривая, смотрит не на свои ботинки, а на ваши». Вот и немного напутал, увидев и не вчитавшись Ваш вариант :)
>правит ++ на — Совершенно нереальная же на практике ошибка. Вот опечатки на соседние буквы, путаница с >= или =>, точки вместо запятых и наоборот, путаница в порядке аргументов для сложных функций и т.п. — это вполне распространённые ошибки.
При чём Юнг пытался систематизировать свои типы дихотомически, но получил внутренние противоречия из-за того, что внутри одного типа оказывались сильно отличные по мышлению люди. Из-за чего его типология так и не «выстрелила». Пришлось вводить ещё одну дихотомию, которая, наконец и породила прилично работающую типологию на базе которой были построены модели соционики.
Вот соционика, в отличие от топикстарта, прекрасно описывает очень многие типы программистов. Среди которых есть и экстраверны. Как и есть совершенно непригодные для программирования интроверты.
Правда, сейчас из соционики какую-то фигню сделали, какие-то доморощенные школы, тренинги… Вторая астрология для выбивания денег из населения получилась. Но это не уменьшает ценности классической теории :)
>Что плохо в Форте и иже с ним: длинные названия слов.
Здрасьте! Как раз Форт характерен массой соглашений по сокращению слов (которые, кстати, нередко создают проблему понимания у новичков). Типа:
. (точка) символизирует печать, вывод
/ — символизирует отношение
# — символизирует количество
@ — чтение
! — запись
и т.д.
Всё это здорово сокращает синтаксис, делая Форт-программы крайне лаконичными.
>Программы на «нормальных» языках разбиты на куски, внутри которых баланс стека/скобок отслеживается компилятором.
На Форте каждая программа разбита на куски — короткие «слова». Каждое из которых легко и полноценно тестируется в момент написания.
«Самоконтроль» состояния стека — это вообще не вопрос. Форт-стиль — это короткие, однозначные и «тупые» (без сайд-эффектов и смешанного поведения) слова, которые полностью тестируются по мере написания. Поэтому Форт-программа по факту получается более безопасная, чем код на традиционных языках. Акробатика с параметрами на стеке тоже обычно иллюстрирует прокол в архитектуре. Если тебе понадобился третий параметр с вершины, то нужно внимательно присмотреться, в 90% случаев ты допустил где-то концептуальную ошибку.
Разница между:
СТЕК НАД ПИСАТЬ
и
(писать (стек, над))
не принципиальна :)
В первом случае хоть скобки считать не надо. Более того, для Thinking Forth заявляется требование, чтобы новое слово не превышало 7±2 слов. То есть очень легко и просто видна вся логика выполнения. А вот в Лиспе постоянно практикуются портянки на целый экран кода, завершающиеся гирляндой скобок. На Форте здорово упрощается работа из-за манипулирования потоком исполнения. Лисп этого лишён.
Это, всё же, не совсем Форт-стиль. На Форте, скорее, нужно делать отдельный словарь со всеми словами для формирования запроса. Что-то типа.
SQL:
\…
18 «age>» WHERE 5 LIMIT «id, score» «users» SELECT
Я бы так делал.
Сам, правда, пока в подобном случае использовал тупую обёртку:
SELECT: и тут SQL-запрос до конца строки
Наоборот. Лисп заметно сложнее и хитрее в реализации. И намного сложнее на практике. Форт чище синтаксически и имеет несравнимо более простой транслятор. Я не видел реализаций Лиспа в 512 байт на ядро системы и в пару килобайт на всю систему с компилятором :)
Куда больше Starting Forth я рекомендую Thinking Forth. На русском — в переводе Сергея Дмитренко. Полезно далеко не только фортерам. Я даже в PHP использую многие концептуальные подходы оттуда. Ну а вообще, с Фортом на практике работаю с 1991-го :)
Я проанализировал тут недавно, какие из моих рецензий и отзывов на Кинопоиске были пропущены модерацией, а какие нет и пришёл к выводу, что выбор решается через генератор случайных чисел с вероятностью разрешения около 1/3. Порой проходит злой и короткий провокационный отзыв, а корректная развёрнутая рецензия не пропускается. Или наоборот. В общем, теперь я рецензии на Кинопоиск больше не пишу. Хватает Имхонета :)
Вот у меня в примере, как раз, .htaccess и отсутствовали. Естественно, apache должен убедиться, что этих файлов нет и просмотреть все каталоги от запрашиваемого до корня сайта.
С работающим .htaccess должно быть ещё немного медленнее — прочитать, распарсить…
В общем, да. Apache считается достаточно тяжеловесным сервером. И хотя я его под высокой нагрузкой не практикую, люди с прямыми руками умудряются его разгонять до вполне конкурентоспособной производительности. И отключение .htaccess — это обычно первая операция в разгоне :)
Ну а что на виртхостах включён — так это там единственный способ конфигурить свою систему простому юзеру :) Я ради этого его тоже держу, пускать в песочницу знакомых и т.п. Там не только .htaccess работает, там mpm_itk задействован, который вообще почти в 10 раз снижает скорость :)
В каждый каталог или не в каждый, а пройти придётся до корня, потому что .htaccess в нижележащих каталогах переопределяют, действия .htaccess из более высоколежащих, но не отменяют их совсем.
Наконец, добрался до тестов. Нулевой файл в каталоге с вложенностью пять от корня. ab -n10000 -c100. Q6600, 4Гб. Apache не оптимизированный, так как на домашней машине только для тестов. Gentoo, 64bit. По 4-5 тестов.
При AllowOverride All выдаёт 8,1..8,8 тыс. запросов в секунду. С AllowOverride None — 10,8-12,3 тыс.
Это на простаивающей машине, где кроме Apache ничего в это время не грузило. Если дисковая система будет чем-то занята, то разница может стать ещё больше.
А что до оригинального анекдота — само собой, что вариант про математиков из докомпьютерной поры :) Потому, полагаю, вариант с программистами — производная ;)
Они хорошие чаще не программисты (хотя такие тоже бывают), а организаторы :) Для команды разработчиков, по идее, и те, и другие нужны. Вообще, желателен широкий спектр типов.
Тут же речь больше об одиночках, как я понимаю. И в этом случае интроверсия сама напрашивается :)
В любом случае важно помнить, что вертность — далеко не единственная кластеризация и потому не является единственным критерием определения пригодности к той или иной деятельности.
Наоборот же :) И не на шнурки, а на ботинки ;)Упс. Соори. Не уловил сразу :D Да, Ваш вариант интереснее :D
Вот соционика, в отличие от топикстарта, прекрасно описывает очень многие типы программистов. Среди которых есть и экстраверны. Как и есть совершенно непригодные для программирования интроверты.
Правда, сейчас из соционики какую-то фигню сделали, какие-то доморощенные школы, тренинги… Вторая астрология для выбивания денег из населения получилась. Но это не уменьшает ценности классической теории :)
Здрасьте! Как раз Форт характерен массой соглашений по сокращению слов (которые, кстати, нередко создают проблему понимания у новичков). Типа:
. (точка) символизирует печать, вывод
/ — символизирует отношение
# — символизирует количество
@ — чтение
! — запись
и т.д.
Всё это здорово сокращает синтаксис, делая Форт-программы крайне лаконичными.
>Программы на «нормальных» языках разбиты на куски, внутри которых баланс стека/скобок отслеживается компилятором.
На Форте каждая программа разбита на куски — короткие «слова». Каждое из которых легко и полноценно тестируется в момент написания.
Из Форта можно сделать любой язык (собственно, видел Форт, расширенный до ЛИСПа, до Бейсика, до Си), но это будет уже не Форт.
СТЕК НАД ПИСАТЬ
и
(писать (стек, над))
не принципиальна :)
В первом случае хоть скобки считать не надо. Более того, для Thinking Forth заявляется требование, чтобы новое слово не превышало 7±2 слов. То есть очень легко и просто видна вся логика выполнения. А вот в Лиспе постоянно практикуются портянки на целый экран кода, завершающиеся гирляндой скобок. На Форте здорово упрощается работа из-за манипулирования потоком исполнения. Лисп этого лишён.
SQL:
\…
18 «age>» WHERE 5 LIMIT «id, score» «users» SELECT
Я бы так делал.
Сам, правда, пока в подобном случае использовал тупую обёртку:
SELECT: и тут SQL-запрос до конца строки
С работающим .htaccess должно быть ещё немного медленнее — прочитать, распарсить…
Ну а что на виртхостах включён — так это там единственный способ конфигурить свою систему простому юзеру :) Я ради этого его тоже держу, пускать в песочницу знакомых и т.п. Там не только .htaccess работает, там mpm_itk задействован, который вообще почти в 10 раз снижает скорость :)
Наконец, добрался до тестов. Нулевой файл в каталоге с вложенностью пять от корня. ab -n10000 -c100. Q6600, 4Гб. Apache не оптимизированный, так как на домашней машине только для тестов. Gentoo, 64bit. По 4-5 тестов.
При AllowOverride All выдаёт 8,1..8,8 тыс. запросов в секунду. С AllowOverride None — 10,8-12,3 тыс.
Это на простаивающей машине, где кроме Apache ничего в это время не грузило. Если дисковая система будет чем-то занята, то разница может стать ещё больше.