Это выглядит конечно хорошо и кратко.
Но, за любой программой, не важно на чем написанной, стоит алгоритм.
В этом случае получаем на руби:
1. Скрытое "магические" преобразование
A .- N -.
в
таблицу
T1=('A','B',
T2=('.-',
2. Поиск в Т1 А и замена на значение в Т2.
Минусы:
Слабые моменты "скрыты" за функциями.
1. Ненужное преобразование. И как оно там преобразовывает - тоже вопрос. Оно может быть реализовано "на все случаи жизни" и соответстенно быть ну ооочень не оптимальным.
Делит по пробелам? - А вот мне нужен пробел. Как быть? Дописывать исключения?
2. Поиск А в таблице. Насколько он оптимально реализован неизвестно.
И он похож на функцию сродни
Что в неё "впихнули" - вопрос.
Я за то чтобы создавались новые библиотеки подпрограмм, для узких задач.
Например, работаешь с графикой - выбрал соответствующую библиотеку.
А вот когда заменяют:
PHP код:
for i:=1 to n do
if j>1 then ....
PHP код:
for i:=1 to n do
if j>1 then
if g=k then
на
PHP код:
ПереборСУсловием(k,n,j,x)
PHP код:
ПереборСДвумяУсловиями(k,n,j,g,x)
А дальше что?
На каждое простое действие разрабатывать процедуры/функции?
И что мы получим?
Проггер будет знать
Но когда ему нужно будет написать:
PHP код:
for k:=1 to n do
for i:=1 to n do
if j>1 then
if g=k then
for l:=1 to n do
if g=k then
Он вынужден нагородить:
PHP код:
Перебор1(k,n,ПереборСДвумяУсловиями(k,n,j,g,ПереборСУсловием(k,n,j,x)))
и вместо знания
нужно будет знать все тонкости
PHP код:
Перебор1(
ПереборСУсловием(
ПереборСДвумяУсловиями(
ПереборСТремяУсловиями(
и т.д.
Это оправдано если вы используете специфические функции библиотеки,
но когда это нужно чтобы написать for to - это уже беда.
Далее:
визуальное восприятие затруднено
Программа читается как и книга, по строчкам
И желательно чтобы в строчке были быстро понятные действия
Например, читаем
PHP код:
for k:=1 to n do ' для к=1 до н '
for i:=1 to n do ' тоже самое для и '
if j>1 then ' если джи больше 1 '
А теперь читаем:
PHP код:
Перебор1(k,n,k,n,j,g,ПереборСУсловием(k,n,j,x)))
' Перебор для к=1 до н для .... и тут целый том "Войны и мира"'
При этом не забыть на каком месте в скобках что находится....
Особенно в функциях вида
PHP код:
суперфункция(a,b,e,r,t,i,j,d)
П.с.:
а потом окажеться что если на вход супер функции подать текстовую переменню с некими спецсимволами - получаем SQL-injection.
И вот вместо выдачи кода морзе прога отправит пароли пользователя в сеть, а разрабочики будут чесать затылок " а как так могло получиться???"