metaclass: (Default)
[personal profile] metaclass
После недельного писания на F# появилась идея, отчего использование дельфи так часто вырывает мозг программистам.

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

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

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

Date: 2010-03-10 11:57 am (UTC)
From: [identity profile] npocmu.livejournal.com
>>Зачем куча систем сборки если есть make?

А make уже поддерживает имена файлов с пробелами?

Date: 2010-03-10 12:11 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Откуда у вас исходные файлы с пробелами в именах? Есть? Выпилите нафиг.
Вот потому и не поддерживается - никому не нужно такие извращение, My Cool Name.c ага, щас.

Date: 2010-03-10 12:18 pm (UTC)
From: [identity profile] kiryl.livejournal.com
Вроде работает в GNU Make. Но, действительно нафиг-нафиг.

Хотя make можно использовать не только для сборки.

Date: 2010-03-10 12:35 pm (UTC)
From: [identity profile] w00dy.livejournal.com
Отучаемся говорить за всех, ага.

Date: 2010-03-10 12:38 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Ок, не за всех, моё личное мнение - пиздить надо тех разработчиков, у кого исходники пробелы содержат в именах

Date: 2010-03-10 12:48 pm (UTC)
From: [identity profile] w00dy.livejournal.com
К сожалению моё мнение совпадает с вашим, но как уже заметили make можно использовать не только для сорцов, а, например, документов. А документам я, например, предпочитаю давать вменяемые именя с пробелами, червями и жабами.

Date: 2010-03-10 12:55 pm (UTC)
From: [identity profile] kiryl.livejournal.com
Ещё раз -- GNU Make работает с пробелами в именах файлов.

Date: 2010-03-10 12:58 pm (UTC)
From: [identity profile] w00dy.livejournal.com
Да я рад за вас. Можете это ещё 10 раз написать для повышения ЧСВ.

Date: 2010-03-13 09:04 am (UTC)
From: [identity profile] psilogic.livejournal.com
Кисо.

Date: 2010-03-10 02:51 pm (UTC)
From: [identity profile] npocmu.livejournal.com
У вас make только для С используется? Пора бы кругозор расширять...

Я, например, пытался применить его для автоматического деплоймента отчетов на MS Reporting Service.
Или отчетам тоже прикажете вместо "Продажи за квартал.rdl" давать нечитаемыеимена? К счастью есть более вменяемые системы сборки, scons, например. А маке давно в утиль пора сдать и не вспоминать о нем всуе.
Тем более не преподносить его наличие как критерий развитой системы.

Date: 2010-03-10 12:17 pm (UTC)
From: [identity profile] kiryl.livejournal.com
А какие там проблемы с пробелама?

$ cat Makefile
all: a\ file\ with\ spaces

a\ file\ with\ spaces:
echo test > "$@"
$ make
echo test > "a file with spaces"
$ cat "a file with spaces"
test

Date: 2010-03-10 02:43 pm (UTC)
From: [identity profile] npocmu.livejournal.com
Этот цирк с экранированием и есть проблема. Если конечно не HelloWorld собирать.
Попробуйте, на досуге, пропустить такие имена через цепочку $(shell), $(foreach), $(filter) и прочих полезных макросов и получить вменяемый результат. Если получится - научите.

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

$ 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 > "$@"

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

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

Date: 2010-03-11 07:10 am (UTC)
From: [identity profile] kiryl.livejournal.com
$ 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

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

Date: 2010-03-11 11:00 am (UTC)
From: [identity profile] kiryl.livejournal.com
$ 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 выбрать по вкусу.

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

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

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

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

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 4th, 2025 12:16 pm
Powered by Dreamwidth Studios