metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-03-09 10:43 pm

Мозголомающие средства разработки.

После недельного писания на F# появилась идея, отчего использование дельфи так часто вырывает мозг программистам.

Суть в том, что дельфи это законченный продукт с замкнутым комьюнити. Собственно говоря, для работы на нем ничего кроме самого дельфи и нескольких сторонних компонентов (которые никуда больше и не пригодны) не нужно. Соответственно, у программистов тупо не было стимула выглядывать за пределы своей песочницы. В дельфи было все, необходимое и достаточное, чтобы писать всякого рода опердень в то время. Причем в силу простоты - это еще и стимулировало индивидуальное вкалывание, нахрен нужна какая-то командная разработка, какие-то процессы и прочие атрибуты, если один человек мог спокойно сделать достаточно немалую софтину.
Сишные и С++ либы, опять же, не подключались без извращений типа "завернуть в dll с plain C интерфейсом".

Сколько я не смотрю на другие средства разработки - там обязательно есть какая-то шиза на тему того, что невозможно пользоваться, не вкурив штук пять смежных областей. Тот же дотнет - это просто страшная сборная солянка из XML, веба, рефлекшена с кодогенерацией, хитрожопого ООП, причем некоторые вещами оттуда до сих пор проще переписать чем использовать готовые.
Послушаешь [livejournal.com profile] zabivator и прочих про ocaml - это просто гамон, какие-то сишные компиляторы, какие-то либы, портирование между виндами и линуксами и прочий мрак.
Жаба энтепрайзная тоже страх какой-то, судя по количеству фреймворков, методик взаимодействия с внешним миром и прочего.

Т.е. все другие платформы ориентированы или на работу в команде с разделением труда или на знание множества смежных шизов, что в любом случае не дает окопаться в песочнице и 20 лет самостоятельно пилить одну и ту же опердень.

[identity profile] kiryl.livejournal.com 2010-03-10 03:27 pm (UTC)(link)
Вы ж сами себе хотели геморроя. Получите. Распишетесь.

$ cat Makefile
A1 = a\ file\ with\ spaces yet\ another\ file\ with\ spaces
A2 = $(subst /,\ ,$(foreach filename,$(subst \ ,/,$(A1)),$(filename).txt))

all: $(A2)

$(A2):
echo test > "$@"

[identity profile] npocmu.livejournal.com 2010-03-10 11:39 pm (UTC)(link)
Я не хочу себе геморроя... Я хочу тупо брать файлы и папки прямо из шелла и тупо их обрабатывать по определенным алгоритмам. При этом не задумываясь - есть там пробелы или нет. Любая файловая спецификация, допустимая в операционке, должна обрабатываться единым образом, без плясок с бубном. В более кошерных системах сборки именно так и получается.

Продемонстрируйте напоследок, как вам $(shell) начальные бэкслешики расставит?

[identity profile] kiryl.livejournal.com 2010-03-11 07:10 am (UTC)(link)
$ cat Makefile
A1 = $(shell ls *spaces | sed 's| |\\ |g')
A2 = $(subst /,\ ,$(foreach filename,$(subst \ ,/,$(A1)),$(filename).txt))

all: $(A2)

$(A2):
echo test > "$@"
$ touch 'a file with spaces' 'yet another file with spaces'
$ ls -l
total 4
-rw-r--r-- 1 kas kas 0 2010-03-11 09:08 a file with spaces
-rw-r--r-- 1 kas kas 156 2010-03-11 09:06 Makefile
-rw-r--r-- 1 kas kas 0 2010-03-11 09:08 yet another file with spaces
$ make
echo test > "a file with spaces.txt"
echo test > "yet another file with spaces.txt"
$ ls -l
total 12
-rw-r--r-- 1 kas kas 0 2010-03-11 09:08 a file with spaces
-rw-r--r-- 1 kas kas 5 2010-03-11 09:08 a file with spaces.txt
-rw-r--r-- 1 kas kas 156 2010-03-11 09:06 Makefile
-rw-r--r-- 1 kas kas 0 2010-03-11 09:08 yet another file with spaces
-rw-r--r-- 1 kas kas 5 2010-03-11 09:08 yet another file with spaces.txt

[identity profile] npocmu.livejournal.com 2010-03-11 09:57 am (UTC)(link)
А в путях с каталогами на что бэкслешики менять будем?

[identity profile] kiryl.livejournal.com 2010-03-11 11:00 am (UTC)(link)
$ cat Makefile
UNIQUE="an_unique_string_which_never_meets_in_filenames"

A1 = $(shell ls dir/*spaces | sed 's| |\\ |g')
A2 = $(subst $(UNIQUE),\ ,$(foreach filename,$(subst \ ,$(UNIQUE),$(A1)),$(filename).txt))

all: $(A2)

$(A2):
echo test > "$@"

UNIQUE выбрать по вкусу.

[identity profile] metaclass.livejournal.com 2010-03-11 11:18 am (UTC)(link)
Мрак какой-то.
По сравнению с этим код на хаскеле или F# выглядит как пособие для начинающих программистов.

[identity profile] kiryl.livejournal.com 2010-03-11 02:28 pm (UTC)(link)
Да, мрак. Можно оформить по-красивее, введя несколько функций для квотинга и аналоги foreach и компании для оперирования именами файлов. Так можно локализовать колдунства и остальной код будет выглядеть чище.

[identity profile] nealar.livejournal.com 2010-03-11 09:54 pm (UTC)(link)
С шелл-скриптами всегда так. Зато они не тянут тонну зависимостей. К примеру, баш у меня одинаковый что на XP64, что на микроконтроллере.

[identity profile] npocmu.livejournal.com 2010-03-11 11:49 am (UTC)(link)
Сдаюсь: маке действительно легко и непринужденно поддерживает работу с файлами с нетрадиционными названиями.