LINUX.ORG.RU

Как вы считаете, надо ли все приложения тянуть в WWW?


0

2
  1. Пускай все остается как есть 383 (39%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Нет, все приложения должны быть только десктопными. Web 1.0 Rocks! 268 (27%)

    *******************************************************************************************************************************************************************************************************************************

  3. Да, все приложения должны быть доступны в www, со специфическим для web интерфейсом 229 (23%)

    ***********************************************************************************************************************************************************************************************

  4. Да, все приложения должны быть доступны в WWW, с таким же видом как и десктопные 113 (11%)

    **********************************************************************************************

Всего голосов: 993

★★★★★

Проверено: post-factum ()
Последнее исправление: post-factum (всего исправлений: 1)

Ответ на: комментарий от grusha

Ты удивишься, но во многих языках IDE может довольно точно предсказать присвоена переменная или нет. Если ты конечно явно присвоишь переменной null, компилятор тебе ничего не скажет, но если ты случайно забудешь инициализировать переменную, IDE сразу тебе об этом сообщит

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> Греп и сед _не_умеют_ считать скобки - они умеют регулярки. Я привел это как пример того чего нельзя сделать на имеющихся утилитах.

Скрипт, который считает скобки, пишется за пять минут.

Одно из средств интеграции приложений - плагины.

Это не интерграция приложений, а интеграция бинарных модулей в одно монструозное приложение. Которое превращается в ОС внутри ОС.

Твой текстовый редактор с пайпами может только то что могут программы с пайпами

Ты меня умиляешь. А что могут программы с пайпами?

А что если интеллектуальному анализатору нужно дерево разбора программы, а на выходе у него визуальные пометки ошибок в коде программы?

Ой мама... Такая программа называется компилятор. «Пометки ошибок» у него на выходе, конечно, не визуальные, а текстовые, но парсить их - ну просто раз плюнуть.

Не предлагаешь же ты встраивать какой-нибудь шелл или луа в каждую программу?

Не предлагаю (хотя это всяко лучше бинарных плагинов). Предлагаю приложение реализовывать в виде сервера (например, сервера 9P) и управлять им извне.

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

Ты отстал от прогресса лет на 20, а то и 40. Либы как средство интеграции это как минимум: 1. Привязка к языку и/или ABI. 2. Проблемы с безопасностью. 3. Потенциальные проблемы с бинарной совместимостью. 4. Невозможность сетевого использования.

> Java и C# - высокоуровневые языки? Ха. Там в 50 строчек делается то, что я в шелле делаю в одну.

Значит ты не умеешь программировать на этих языках и используешь их не по назначению. Попробуй решить на шелле систему линейных уравнений хотя бы :).

Ты, как всегда, вообще не понял, о чем я тебе говорил. На этих языках ты оперируешь низкоуровневыми вещами, далекими от непосредственных задач пользователя. Эти языки лишь чуть выше Си, они добавляют автоматическое управление памятью и, может, еще что-то (сейчас ничего больше не приходит в голову), а также кучу бесполезной мишуры вроде ООП.

Системы на шелле не решают, так как шелл - это специализированный язык запуска и интеграции программ. Ты же предлагаешь все задачи решать на универсальных (читай низкоуровневых) языках, что слишком затратно, если пользователь хочет выжать из компьютера всё.

grusha
()
Ответ на: комментарий от farafonoff

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

Что ты этим хотел сказать?

grusha
()
Ответ на: комментарий от farafonoff

> Ты удивишься, но во многих языках IDE может довольно точно предсказать присвоена переменная или нет.

Ты удивишься, но «предсказывает» это не IDE, а компилятор.

grusha
()
Ответ на: комментарий от grusha

IDE очень тесно интегрируется с компилятором, да. Еще раз, посмотри Netbeans для java. там «компиляция» происходит инкрементально, когда ты закончил набирать код он уже проанализирован и откомпилирован и все варнинги тебе подчеркнули. То что называется ошибкой компиляции в нетбинсе исправляется при наборе кода как маленькая опечатка.

farafonoff ★★
()
Ответ на: комментарий от grusha

Я хотел сказать что проблема не имеет ничего общего с проблемой вычислимости, и прекрасно решается в рамках существующей математики. Самый яркий пример - язык haskell.

farafonoff ★★
()
Ответ на: комментарий от grusha

Зачем мне писать свои скрипты, если есть уже написанные IDE. Программы с пайпами могут только то для чего они написаны. Греп например умеет сопоставлять текст построчно с регэкспом. К обработке программы на ЯВУ это не имеет никакого отношения.

Их же надо еще парсить. Вот если бы был текстовый редактор который умеет парсить эти ошибки... ой, это же IDE.

Ты предлагаешь полный отказ от бинарных плагинов? А что насчет потребления памяти и производительности? Если у меня в памяти есть картинка гигабайта эдак на 4(или дерево разбора программы на С++, или еще чего), и я хочу ее обработать плагином-анализатором, то в случае бинарного плагина я блокирую ее мутексом и передаю указатель на нее в нужную функцию. В случае всяких серверов, пайпов и прочего бреда мне придется сериализовать весь этот объект, передать его по последовательному каналу, на другой стороне десериализовать (еще +4 гига памяти), обработать, а затем проделать все это в обратную сторону.

Шелл интегрирует только пару программ специального вида работающих только с текстами. Все операции которые доступны пользователю - работа с целыми числами и обработка регулярных выражений. Не строй иллюзий, если человеку надо решить задачу чуть сложнее поиска строки в тексте, придется писать очень длинную строчку на шелле.

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> IDE очень тесно интегрируется с компилятором, да. Еще раз, посмотри Netbeans для java. там «компиляция» происходит инкрементально, когда ты закончил набирать код он уже проанализирован и откомпилирован и все варнинги тебе подчеркнули. То что называется ошибкой компиляции в нетбинсе исправляется при наборе кода как маленькая опечатка.

А теперь объясни мне, глупому: на кой хрен это надо?

grusha
()
Ответ на: комментарий от farafonoff

> Я хотел сказать что проблема не имеет ничего общего с проблемой вычислимости, и прекрасно решается в рамках существующей математики.

Опять же - какая проблема?

grusha
()
Ответ на: комментарий от farafonoff

> Зачем мне писать свои скрипты, если есть уже написанные IDE.

Скрипты какбэ тоже могут быть уже написанными. В виме, например, скобки считает скрипт (правда, на его, вимовом, внутреннем скриптовом языке, - не труъ), и никто не жалуется.

Программы с пайпами могут только то для чего они написаны.

А IDE с плагинами волшебным образом может всё?

Греп например умеет сопоставлять текст построчно с регэкспом. К обработке программы на ЯВУ это не имеет никакого отношения.

К какой конкретно обработке?

Их же надо еще парсить. Вот если бы был текстовый редактор который умеет парсить эти ошибки... ой, это же IDE.

Парсить можно простейшим скриптом. А редактор пусть реализует лишь примитивы для ввода текста, автоматизации ввода и интеграции с внешними программами. И предоставляет интерфейс для работы с этими примитивами, например, в виде команд, посылаемых ему по 9P. Например, распарсенные номер строки и сообщение об ошибке передавать ему как аргументы таких команд.

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

Мне очень интересно, нафига редактору текста понадобилась четырехгиговая картинка.

Шелл интегрирует только пару программ специального вида работающих только с текстами.

Небольная поправочка: программ работающих только с байтами. То есть любых программ.

Все операции которые доступны пользователю - работа с целыми числами и обработка регулярных выражений.

Гениально.

Не строй иллюзий, если человеку надо решить задачу чуть сложнее поиска строки в тексте, придется писать очень длинную строчку на шелле.

И еще раз: шелл - язык интеграции программ. Когда уже есть программы (написанные на чем угодно), решающие набор некоторых фундаментальных задач, и пользователь хочет скомбинировать их для решения своей текущей задачи.

P.S. Предлагаю закругляться с этой беседой. Но мой пост будет последним.

grusha
()
Ответ на: комментарий от grusha

Интегрировать программы заранее не спроектированные на это не возможно. То что предлагаешь ты - либо единый стандарт на взаимодействие любой пары программ (что не возможно) либо программа(скрипт) вклейка между каждой возможной парой программ.

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

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> программа(скрипт) вклейка между каждой возможной парой программ.

Не каждой возможной (зачем?), а каждой необходимой. Если трудозатраты на такую вклейку минимальны, то в чем проблема? Проблемы твоего подхода (ОС в ОС) гораздо серьезнее.

grusha
()
Ответ на: комментарий от grusha

Затраты далеко не минимальны. Я не видел ни одного работающего примера твоего подхода, чтобы оценить их удобство, так что разговор беспредметный. Я видел нетбинсы, эклипсы и вижаки, и мне кажется что они достаточно быстры и удобны.

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> Я не видел ни одного работающего примера твоего подхода, чтобы оценить их удобство, так что разговор беспредметный.

Посмотри, например, на файловый интерфейс acme. (UI там я не нахожу удобным, но сейчас речь о программном интерфейсе для автоматизации.)

Я видел нетбинсы, эклипсы и вижаки, и мне кажется что они достаточно быстры и удобны.

Кому и кобыла...

grusha
()
Ответ на: комментарий от grusha

http://upload.wikimedia.org/wikipedia/commons/9/98/Acme.png

Я увидел это и мне захотелось вырвать себе глаза.

Согласись, писать код в этом http://www.devproconnections.com/content/content/124953/Bruney%20DCM093%20Fig... куда приятнее.

По существу: Это плейнтекстовый редактор. В нем нельзя например пометить строчки с ошибками красным, а строчки с варнингами желтым (я не увидел вообще ничего про оформление). Его гуи не соответствует тому что ожидается от редактора кода (как минимум - сворачивание кода, закладки, подсветка синтаксиса). Если добавить оформление в него, интерфейс будет уже вовсе не таким компактным.

Еще один нюанс, который я вижу: чтобы что-то сделать, надо сначала записать команду в ctl файл, а потом (прочитать, записать) из data файла. Работа с двумя файлами - очевидно не атомарный процесс. В этом мане(http://swtch.com/plan9port/man/man4/acme.html) я не увидел интерфейса для блокировки редактора, т.е. плагины могут и будут конфликтовать.

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> Согласись, писать код в этом http://www.devproconnections.com/content/content/124953/Bruney%20DCM093%20Fig... куда приятнее.

Не соглашусь. Не вижу на этом скриншоте ничего хорошего.

В нем нельзя например пометить строчки с ошибками красным, а строчки с варнингами желтым (я не увидел вообще ничего про оформление).

Просто потому что его так спроектировали.

Его гуи не соответствует тому что ожидается от редактора кода

Кем ожидается?

подсветка синтаксиса

Чуваки считают ее бесполезной и вредной фичей. (Мол, она помогает разбираться в плохом коде, в то время как надо просто писать хороший код.) Сам я не определился с мнением по этому поводу. Мне она не помогает разбирать в плохом коде ). Я привык к подсветке, но не уверен, что она настолько важна, чтоб усложнять ради нее редактор. Ну цветные буковки, ну веселее смотреть на код, но я бы легко отказался от нее ради более важных фич.

закладки

Что это?

сворачивание кода

Никогда не понимал, зачем это надо, при нормальном коде.

Еще один нюанс, который я вижу: чтобы что-то сделать, надо сначала записать команду в ctl файл, а потом (прочитать, записать) из data файла. Работа с двумя файлами - очевидно не атомарный процесс.

Сделать что? data это редактируемый текст. Да, атомарность не гарантируется, как не гарантируется она, например, когда пользователь работает с файлом на диске, и с ним внезапно одновременно начинает работать какое-то приложение.

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

я не увидел интерфейса для блокировки редактора

Его можно легко добавить, если надо. Впрочем, я бы не стал.

grusha
()
Ответ на: комментарий от grusha

блокировка - это к транзакционности. Собственно вот есть команда addr - в ctl файл пишем ее, а в дата можно редактировать текст который начинается с addr. Если запущено два плагина к редактору, один запишет что-то в addr, а другой запишет в data, и будет каша. А юзер в это время кликнет мышкой, и сломаются оба плагина. Хороший сценарий?

В некоторых системах (windows) приложение может блокировать любые части файла или файл целиком - этим пользуются файловые субд типа foxpro и 1c. Там таки гарантируется атомарность и транзакционность.

Сворачивание кода и подсветка - стандарт де-факто. Человек воспринимает цвета, человеку удобнее когда все ненужное скрыто. Иногда бывают портянки сгенерированного кода, которые можно скрывать по-умолчанию (visual studio), бывает какие-то данные приходится вносить в код, их тоже можно удобненько скрывать. Еще одно применение - скрывать десятки #include и #define, особенно если они как-то объединены по смыслу.

Закладка - это когда работаешь с двумя местами в коде параллельно и перемещаешься между ними.

Собственно то что я увидел - редактор с функционалом notepad. в нем тоже можно при помощи оконных сообщений редактировать текст удаленно.

Не соглашусь. Не вижу на этом скриншоте ничего хорошего.

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

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> Собственно вот есть команда addr - в ctl файл пишем ее

Нет там такой команды.

Если запущено два плагина к редактору, один запишет что-то в addr, а другой запишет в data, и будет каша. А юзер в это время кликнет мышкой, и сломаются оба плагина.

А юзер совсем тупой и не знает, какие плагины у него сейчас работают и что они делают?

В некоторых системах (windows) приложение может блокировать любые части файла или файл целиком - этим пользуются файловые субд типа foxpro и 1c. Там таки гарантируется атомарность и транзакционность.

И не только в windows, открою тебе секрет.

foxpro и 1с это серьезно, да. Ради них и разрабатывались теоретические основы синхронизации и транзакционности.

Сворачивание кода и подсветка - стандарт де-факто.

Понятно. Если стандартом де-факто будет битие об кирпичный забор головой, ты будешь ему следовать.

Человек воспринимает цвета

Опиши механизмы восприятия. Чтоб определить требования к цветам.

человеку удобнее когда все ненужное скрыто

Скрывай в отдельных файлах.

Иногда бывают портянки сгенерированного кода, которые можно скрывать по-умолчанию

Скрывай в отдельных файлах.

бывает какие-то данные приходится вносить в код, их тоже можно удобненько скрывать

Скрывай в отдельных файлах.

Еще одно применение -

Твой подход основан на наличии пары-тройки необдуманных юзкейсов и их поддержке в мейнстриме. Плыть по течению и как можно меньше думать.

Закладка - это когда работаешь с двумя местами в коде параллельно и перемещаешься между ними.

Круто. Конечно, никак не обойтись без впихивания этого в редактор.

шрифты хороши

Да ну. Антиалиасинг при таких размерах шрифтов отвратителен. Идиотизм и баллмер головного мозга.

В конец-концов программисты тоже люди, не надо заставлять их смотреть <...> черно-белый текст.

Какие несчастные программисты. А ты книжки читаешь с подсветкой, существительные синим, глаголы красным?

grusha
()
Ответ на: комментарий от grusha

UI там я не нахожу удобным

А кто-нибудь где-нибудь встречал тех, кому он понравился? После emacs'а пользоваться абсолютно нереально.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

> А кто-нибудь где-нибудь встречал тех, кому он понравился?

В рассылке 9fans много таких.

После emacs'а пользоваться абсолютно нереально.

Да не, лучше уж acme.

В Emacs, может быть, и есть хороший текстовый редактор, но сам он - плохая ОС.

grusha
()
Ответ на: комментарий от grusha

Перефразирую: хотя emacs и плохая ось, но текстовый редактор из него великолепный. Acme же при всех его несомненных архитектурных достоинствах ужасен. Банально больше нажатий на клавиатуру и пустого переноса руки с мышь на клавиутуру и обратно. Невозможно работать.

ugoday ★★★★★
()
Ответ на: комментарий от grusha

> Нет там такой команды.
Как нет?

ctl may be read to recover the five numbers as held in the
index file, described above, plus three more fields:
the width of the window in pixels, the name of the font
used in the window, and the width of a tab character in
pixels. Text messages may be written to ctl to affect
the window. Each message is terminated by a newline
and multiple messages may be sent in a single write.

addr=dot Set the addr address to that of the user's
selected text in the window.

man 4 acme

Юзер может и знает, а вот плагины не знают друг о друге и не могут сообщить друг другу что окно сейчас занято и не надо его трогать. Или ты предлагаешь запускать плагины только вручную и только по-одному?

Теоретические основы синхронизации и транзакционности разрабатывались для бизнес-приложений и субд. Так что да, для них.

Ты предлагаешь теперь создавать не просто по файлу на класс, а по файлу на метод. Вот бы посмотреть на примеры твоего идеального кода который не нужно скрывать и подсвечивать. Выложи tgz где-нибудь :).

Книжки ориентированы на последовательное чтение. Книжки, ориентированные на поиск информации имеют форматирование (словари, справочники) имеют курсивные, полужирные и разреженные выделения. Цвет не используют потому, что цветная полиграфия будет стоить намного дороже. В компьютере не надо экономить чернила, значит можно использовать цвета.

farafonoff ★★
()
Ответ на: комментарий от ugoday

> Перефразирую: хотя emacs и плохая ось, но текстовый редактор из него великолепный.

Думаю, великолепный - громко сказано (хоть сам я им не пользуюсь). Монструозное не может быть великолепным.

Acme же при всех его несомненных архитектурных достоинствах ужасен. Банально больше нажатий на клавиатуру и пустого переноса руки с мышь на клавиутуру и обратно. Невозможно работать.

Согласен. Но это вопросы эргономичности, а они субъективны.

grusha
()
Ответ на: комментарий от grusha

> 9fans

fans

название говорит само за себя. Фаны - они такие фаны. Я вообще сомневаюсь что кто-то пользуется в работе plan9 (поддержка железа?).

The headers of emails on the 9fans mailing list indicate that everyone except for a few holdouts uses Outlook. I think they edit their files in windows, and copy them to Plan9 via ftp or samba.

http://news.ycombinator.com/item?id=447435

По всему судя, под plan 9 нету ни вима, ни емакса, ни даже сраного нано. Соответственно выбор у фанатов никакой.

все что угодно лучше acme. а еще лучше ОС под которую есть разные текстовые редакторы.

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> Как нет?

Команда не addr, а addr=dot. addr - файл. Это я на всякий случай говорил, если ты вдруг плохо ман прочитал.

Юзер может и знает, а вот плагины не знают друг о друге и не могут сообщить друг другу что окно сейчас занято и не надо его трогать. Или ты предлагаешь запускать плагины только вручную и только по-одному?

Собственно, что значит «запускать плагины»? В моем понимании скрипты, что-либо делающие с редактором через файловый интерфейс, обычно запускаются разово, по хоткею или событию. Приведи конкретные практические примеры одновременной работы, когда нужна синхронизация.

С блокировками тоже надо осторожным быть, если ты не в курсе. Они могут приводить к потере отзывчивости, или того хуже - к дедлокам.

Теоретические основы синхронизации и транзакционности разрабатывались для бизнес-приложений и субд. Так что да, для них.

Сказал бы ты это Дейкстре...

Ты предлагаешь теперь создавать не просто по файлу на класс, а по файлу на метод. Вот бы посмотреть на примеры твоего идеального кода который не нужно скрывать и подсвечивать. Выложи tgz где-нибудь :).

Мне посрать на классы, методы и прочий ОО-дебилизм. Я стараюсь писать простой и изящный модульный код, на адекватных языках.

Книжки, ориентированные на поиск информации имеют форматирование (словари, справочники) имеют курсивные, полужирные и разреженные выделения.

И синтаксис языков программирования, представь себе, ориентирован на поиск информационных единиц в коде. (Кстати, слабое место Лиспа, при всем уважении.)

grusha
()
Ответ на: комментарий от farafonoff

> > 9fans > fans

название говорит само за себя. Фаны - они такие фаны.

Ты знаешь, _каждый_ хомячок, впервые встречающий название 9fans, реагирует в точности как ты сейчас. Ты занимательно неоригинален.

I think they edit their files in windows, and copy them to Plan9 via ftp or samba.

http://static.diary.ru/userdir/1/4/5/7/1457646/53675640.jpg

По всему судя, под plan 9 нету ни вима, ни емакса, ни даже сраного нано.

Ты упорно не хочешь вникать в архитектурные преимущества этой ОС, в то, что она предоставляет в плане взаимодействия приложений и пользователя с системой (универсальный скриптуемый распределенный интерфейс, гибкие пространства имен, ориентация на простоту и прозрачность), в чем вообще смысл ее использования. Так не всё ли тебе равно, какие под нее есть приложения?

Соответственно выбор у фанатов никакой.

Это хакерская ОС. Кому что-то надо - пишет сам.

grusha
()
Ответ на: комментарий от grusha

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

addr=dot можно записать в ctl файл, и это отразится на содержимом data файла - так написано в мане. Но это не важно, а важно то что когда подготовка операции и операция не атомарны - это _всегда_ плохо.

Юникс-вей - ставить .lock файлы - полный кошмар.

Покажи свой изящный модульных код, а то без примеров кода ты пиздишь, а еще лучше скриншот своего рабочего экрана при работе над этим кодом.

ОО-дебилизм... что ты скажешь про подход когда в функцию первым аргументом передается указатель на структуру, а в полях структуры хранятся ссылки на функции? (типичный пример - драйвер фс в линуксе, миниксе, фрибсд и наверное остальных системах)

кроме синтаксиса есть еще визуальное оформление. Подсветка очень помогает искать тривиальные опечатки, не закрытые кавычки и прочую мелочевку.

Примеры плагинов - спеллчекер, компилятор (чтобы подсвечивать ошибки компиляции по мере набора), контроль версий (подсвечивать изменения в коде относительно прошлой ревизии). Удобно, когда все это работает постоянно - я нажал на строке энтер, а мне уже сказали, что вот тут и тут опечатки. В старинном бейсике под дос было идеальное визуальное решение - при переходе на следующую строку предыдущая «форматировалась» (расставлялись пробелы). Как реализовать такое же в acme, если не держать плагин работающим постоянно?

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> Дейкстра таки решал прикладную задачу, а задачи в первую очередь были финансовые.

Таки он решал прикладную задачу синхронизации процессов в операционных системах. Учи матчасть.

Но это не важно, а важно то что когда подготовка операции и операция не атомарны - это _всегда_ плохо.

Вообще для любой операции, да? Так проще всего - говорить, что _всегда_ какое-то утверждение верно, не анализируя, когда и почему, просто бездумно следуя догме.

Покажи свой изящный модульных код

И чем тебе это поможет? Изящность кода познается при его вдумчивом изучении и анализе задачи, им решаемой. Что тебе, судя по всему, не свойственно.

ОО-дебилизм... что ты скажешь про подход когда в функцию первым аргументом передается указатель на структуру, а в полях структуры хранятся ссылки на функции? (типичный пример - драйвер фс в линуксе, миниксе, фрибсд и наверное остальных системах)

Нормальный подход. Можешь называть это полиморфизмом, если тебе от этого легче. ООП - просто набор бессодержательных терминов.

кроме синтаксиса есть еще визуальное оформление.

Какой смысл ты вкладываешь в слово «есть»?

Подсветка очень помогает искать тривиальные опечатки, не закрытые кавычки и прочую мелочевку.

Тебе не кажется, что это ее побочный эффект, а не собственно предназначение? (Кстати, кавычки и скобки рекомендую закрывать автоматически после открытия.)

чтобы подсвечивать ошибки компиляции по мере набора

Ты так и не объяснил, зачем это надо.

Удобно, когда все это работает постоянно - я нажал на строке энтер, а мне уже сказали, что вот тут и тут опечатки. В старинном бейсике под дос было идеальное визуальное решение - при переходе на следующую строку предыдущая «форматировалась» (расставлялись пробелы). Как реализовать такое же в acme, если не держать плагин работающим постоянно?

Да ёпт, всё что ты назвал вообще не содержит параллелизма. Полностью последовательное выполнение: нажал энтер - последовательно выполнились все хуки, и т.д. Зачем для этого держать запущенной какую-то фоновую хрень?

grusha
()
Ответ на: комментарий от grusha

> нажал энтер - последовательно выполнились все хуки, и т.д. Зачем для этого держать запущенной какую-то фоновую хрень?

Вот с этого поподробнее. Какие хуки? acme ничего не знает о плагинах. они одновременно получают событие из файла, и начинают работать тоже одновременно. Хуки - это как раз блокировка с обратной связью: вызвали первый плагин, он завершился, вызвали второй. При таком раскладе acme должен знать обо всех. Тогда теряется вообще весь смысл работы через файлы.

Нормальный подход. Можешь называть это полиморфизмом, если тебе от этого легче. ООП - просто набор бессодержательных терминов.

Что значит бессодержательных? мы только что договорились называть это полиморфизмом. Можно также договориться про инкапсуляцию и наследование, и термины ООП вдруг получат содержание.

Вообще для любой операции, да? Так проще всего - говорить, что _всегда_ какое-то утверждение верно, не анализируя, когда и почему, просто бездумно следуя догме.

Вообще для любой. Законы Мерфи они такие - если что-то может сломаться, оно сломается, значит любую двухфазную операцию надо защищать блокировкой. В автомобиле есть ремни безопасности и прочее, и никто не говорит что они не нужны, а надо просто водить аккуратнее.

Таки он решал прикладную задачу синхронизации процессов в операционных системах. Учи матчасть. Таки понятие транзакция придумали финансисты - ты с этим споришь?

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> acme ничего не знает о плагинах. они одновременно получают событие из файла, и начинают работать тоже одновременно.

А подумать? Нафига твоим плагинам _одновременно_ читать событие из файла, если работают они _последовательно_? Пусть один скрипт читает события и вызывает хуки. Зачем acme об этом знать?

Что значит бессодержательных? мы только что договорились называть это полиморфизмом. Можно также договориться про инкапсуляцию и наследование, и термины ООП вдруг получат содержание.

Это я к тому, что суть подхода - работа с кодом как с данными. В том, что спустя 20 лет после его изобретения какой-то чудик назвал его полиморфизмом (а известный с древности принцип черного ящика - инкапсуляцией, а убогий принцип матрешки - наследованием), нет ничего выдающегося.

Вообще для любой. Законы Мерфи они такие - если что-то может сломаться, оно сломается, значит любую двухфазную операцию надо защищать блокировкой.

Эй, а кто определяет, что есть операция и что есть фаза? Каждую конкретную ситуацию нужно анализировать. Что значит «Вообще для любой»? Все категорические утверждения неверны (и это тоже).

Таки понятие транзакция придумали финансисты - ты с этим споришь?

Ну допустим. Ввели-то они его не в математических терминах.

Дейкстру я вообще упомянул, потому что в своих статьях он писал много отрезвляющих вещей, неприятных таким как ты, которые только и твердят о «бизнес-приложениях» и «потребностях индустрии», не осознавая важность фундаментальной науки и фундаментальных принципов построения хороших систем.

grusha
()
Ответ на: комментарий от grusha

> А подумать? Нафига твоим плагинам _одновременно_ читать событие из файла, если работают они _последовательно_?

Параллельно они будут читать потому, что есть файл с событиями, всем читателям котороно они попадают одновременно.

ты предлагаешь сделать сначала менеджер плагинов? Какой тогда смысл в этих файлах, если работать с ними можно будет только через менеджер плагинов?

Это я к тому, что суть подхода - работа с кодом как с данными. В том, что спустя 20 лет после его изобретения какой-то чудик назвал его полиморфизмом (а известный с древности принцип черного ящика - инкапсуляцией, а убогий принцип матрешки - наследованием), нет ничего выдающегося.

Тут фактическая ошибка. С кодом как с данными работает метапрограммирование. Ты видимо не понимаешь понятия полиморфизм. Тот пример который я привел - полиморфизм в чистом виде, другого термина для этого нету.

Эй, а кто определяет, что есть операция и что есть фаза? Каждую конкретную ситуацию нужно анализировать. Что значит «Вообще для любой»? Все категорические утверждения неверны (и это тоже).

Операция - законченное действие. Фаза - часть этого действия. Я же ткнул тебя в маны, где написано что нужно сначала послать адрес, а потом сами данные, причем в разные файлы. Конкретно такие случаи всегда нужно блокировать. Из контекста ясно, что под любой я понимаю 2х-и более фазные. Пример из учебника: тебе на банковский счет кладут 100 баксов, для этого читают текущее значение и записывают новое. Эту операцию нужно блокировать, потому что если тебе одновременно несколько раз положат по 100 баксов, случится конфликт и запишется неверное значение. Тоже двухфазная операция (прочитать-записать) и тоже требует блокировки.

Дейкстру я вообще упомянул, потому что в своих статьях он писал много отрезвляющих вещей, неприятных таким как ты, которые только и твердят о «бизнес-приложениях» и «потребностях индустрии», не осознавая важность фундаментальной науки и фундаментальных принципов построения хороших систем.

Да, да, читал про теоретическое доказательство и прочее. К сожалению нету ни одной теоретически доказанной науки: математика строится на аксиомах, взятых с потолка, физика - на экспериментах (тестировании). Так что современный подход к программированию - как раз инженерный: строится опытный образец, тестируется, если результаты тестирования всех устраивают, значит все хорошо.

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> Параллельно они будут читать потому, что есть файл с событиями, всем читателям котороно они попадают одновременно.

Да ёп же, один читатель, один.

ты предлагаешь сделать сначала менеджер плагинов? Какой тогда смысл в этих файлах, если работать с ними можно будет только через менеджер плагинов?

Что лучше - написать «менеджер плагинов» в 20 строчек на шелле, или мучаться с блокировками?

Кстати, то, что конкретно в acme есть лишь файл event, но нет явного интерфейса для регистрации хуков, вовсе не означает, что он невозможен в редакторе с файловым интерфейсом.

Тут фактическая ошибка. С кодом как с данными работает метапрограммирование.

Споры о терминологии всегда бессмысленны. Метапрограммирование подразумевает работу программы со своей структурой, то есть речь об исходном коде, а не исполняемом. Я же говорил о последнем. То что ты называешь полиморфизмом - просто основа фон-неймановской архитектуры: код - разновидность данных, начиная с аппаратного уровня.

Операция - законченное действие. Фаза - часть этого действия.

Спасибо, кэп, но это не определения. Кто определяет законченность?

Я же ткнул тебя в маны, где написано что нужно сначала послать адрес, а потом сами данные, причем в разные файлы.

Ничего там такого не написано. Там не диктуется политика использования файлового интерфейса.

Конкретно такие случаи всегда нужно блокировать.

Опять-таки - категорические утверждения... Ты, видимо, кроме блокировок ни о чем и не слышал. Почитай про CSP, например, будет полезно.

Ты не привел ни одного юзкейса параллельной работы с редактором - так за что ты борешься?

Да, да, читал про теоретическое доказательство и прочее.

Видимо, плохо читал. Никто не говорит о полной формальной верификации программ. Вкратце резюмируя Дейкстру: нужно с самого начала писать код головой, что в частности подразумевает формальный подход, а не пытаться апостериори выловить в написанном коде все мириады багов - плодов криворукости и невежества авторов кода.

математика строится на аксиомах, взятых с потолка

Ты говоришь о том, чего не понимаешь. Аксиомы - просто разновидность определений.

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

О таких вот идиотских суждениях Дейкстра тоже много писал (не зря я все-таки его вспомнил). Аналогия с материальными системами абсолютно некорректна, поскольку информационные объекты не обладают физическими характеристиками. Их ненадежность - лишь следствие криворукости разработчиков.

grusha
()
Ответ на: комментарий от grusha

> а не пытаться апостериори выловить в написанном коде все мириады багов - плодов криворукости и невежества авторов кода.

Сегодня зафиксил один такой плод. Чуваки из нуля единицу вычли, еще в 2009-м году. Ни в одном проекте не проявилось, кроме текущего. Вот тебе и QC. Слов не хватает. Больше месяца ловили.

grusha
()
Ответ на: комментарий от grusha

Законченность определяется исходя из ожиданий пользователя. Например пополнение счета в банке - атомарная операция с точки зрения банка и с точки зрения клиента. С точки зрения программиста она разбита на две операции (чтение и запись), которые в свою очередь могут быть, а могут не быть атомарными. Соответственно задача программиста - обеспечить пользователю атомарность.

Аксиомы - просто разновидность определений.

Я и говорю - взяты с потолка. Евклид сидел на греческом пляже, пил вино, и привиделись ему 5 аксиом. Получилась одна математика. Если любую аксиому заменить на другое утверждение - получится еще какая-то математика.

Их ненадежность - лишь следствие криворукости разработчиков

Не столько криворукости, сколько физической ненадежности. Мозг разработчика иногда сам допускает ошибки и опечатки, по этому аналогия полностью корректна. Не надежны и каналы связи между программистами - они могут плохо понять друг друга, не надежно само ТЗ, так как его писали люди. Любая методика программирования направлена на минимизацию именно таких ошибок.

Почитай про CSP, например, будет полезно.

Опять аббревиатуры.. На форумах пиши полностью, иначе получается Chartered Society of Physiotherapy или Communicating sequential processes

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

Это еще не упоминая про то, что последовательный запуск - штука не эффективная, особенно на дофига-процессорных системах.

Твой менеджер - просто разновидность блокировки.

farafonoff ★★
()
Ответ на: комментарий от grusha

Монструозное не может быть великолепным.

Монструозный он где-то глубоко внутри, что пользователя особо не касается. А вот интерфейс и способ организации взаимодействия с пользователем у него очень продуманный.

вопросы эргономичности, а они субъективны.

эргономика --- наука точная, как сопромат или аналитическая химия.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Ты ничего не понимаешь в ОС :) Если его любимый plan9 начнут использовать, окажется что имеющегося API явно недостаточно, и все разрастется в такое же монструозное поделие как остальные ОС, потом туда портируют emacs, и груша пойдет искать себе новую мертвую OC:)

farafonoff ★★
()
Ответ на: комментарий от farafonoff

окажется что имеющегося API явно недостаточно

Было бы интересно послушать как ты это докажешь.

ugoday ★★★★★
()
Ответ на: комментарий от farafonoff

> Законченность определяется исходя из ожиданий пользователя.

Ну так опиши эти ожидания в случае редактора. Как я уже сказал, ни одного юзкейса параллельной работы с ним ты не привел.

> Аксиомы - просто разновидность определений.

Я и говорю - взяты с потолка.

У тебя мозг есть? Повторяю: РАЗНОВИДНОСТЬ ОПРЕДЕЛЕНИЙ. Что такое определение, объяснять надо? Ясно, что кроме школьной математики и вузовского матана ты ничего не видел. Посмотри, как строится аксиоматика современных математических теорий.

Мозг разработчика иногда сам допускает ошибки и опечатки

Вот поэтому и нужно следовать принципу KISS. Речь о том, что контроль качества прежде всего нужно осуществлять на этапе написания кода.

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

Криворукость авторов ТЗ. Криворукость менеджеров, создающих неадекватную среду для совместной работы, препятствующих созданию обратной связи.

Любая методика программирования направлена на минимизацию именно таких ошибок.

Ты сам перед этим говорил о софте как «опытном образце», который тестируется исключительно апостериори (телега впереди лошади), с выявлением лишь тех ошибок, которые выявляются в условиях тестирования.

Только если с самого начала думать, что пишешь, в частности, формально доказывать корректность кода там, где это целесообразно, - только тогда получится по-настоящему минимизировать количество ошибок. И останутся те баги, которые действительно интересно фиксить, например, связанные с выяснением необходимости изменить или уточнить постановку задачи.

Опять аббревиатуры.. На форумах пиши полностью, иначе получается Chartered Society of Physiotherapy или Communicating sequential processes

Communicating sequential processes. Я думал, что из контекста будет ясно.

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

Перечитай мой пост еще раз, внимательнее.

Это еще не упоминая про то, что последовательный запуск - штука не эффективная, особенно на дофига-процессорных системах.

У тебя в голове каша (я тебе это уже говорил?). Как ты намереваешься добиться повышения эффективности при параллельной работе «плагинов» с редактором, если они все у тебя будут блокировать редактор, т.е. ждать друг друга?

Вообще, «плагины» - для простых вещей (причем привязанных функционально к редактору). Сложные вещи, интенсивно использующие CPU и I/O, следует выносить в отдельные программы. И запускать их в отдельных процессах. Чтоб ОС сама управляла использованием ими аппаратных ресурсов. А «плагины» пусть склеивают эти программы с редактором.

Твой менеджер - просто разновидность блокировки.

Да хоть татуировки. Почитай про CSP таки. Только не в википедии, а то еще испугаешься, а например здесь: http://plan9.bell-labs.com/magic/man2html/2/thread

grusha
()
Ответ на: комментарий от ugoday

> эргономика --- наука точная, как сопромат или аналитическая химия.

Может быть. Пока дело не доходит до индивидуальных качеств.

grusha
()
Ответ на: комментарий от grusha

Эргономика изучает не индивидуальные качества, а общие качества всех людей. Большинство людей не перенастраивают программы, как не пытаются они переставить кнопки на пульте от телевизора.

farafonoff ★★
()
Ответ на: комментарий от grusha

Я привел юзкейс - несколько одновременно работающих с ним через эти файлы программ - анализаторов. Если эти файлы доступны более чем одной программе, значит и использовать их будут несколько программ. Ожидания пользователя обычно описываются в документации, прямо перед описанием последовательности действий для их получения.

Определение в математике - штука взятая с потолка. Вроде бы сейчас математика вообще занята формальным выводом всех возможных теорем из некоторых систем аксиом в поисках непротиворечивой и полной системы этих самых аксиом. Еще раз. Определения выдумывают математики. Они их придумывают из головы. Их не посылает нам бог на скрижалях, их придумывают так как надо в данный момент. Если нужны другие - их придумывают.

Вот поэтому и нужно следовать принципу KISS. Речь о том, что контроль качества прежде всего нужно осуществлять на этапе написания кода.

Если у тебя сложная система, то сложность ты никуда не денешь. Где-то она все равно будет. Если упрощать составные части, усложнится логика их связи между собой. Контроль качества должен быть на всех этапах: статический анализ, юнит-тестирование, интеграционное тестирование...

Только если с самого начала думать, что пишешь, в частности, формально доказывать корректность кода там, где это целесообразно, - только тогда получится по-настоящему минимизировать количество ошибок. И останутся те баги, которые действительно интересно фиксить, например, связанные с выяснением необходимости изменить или уточнить постановку задачи.

Доказывается не корректность кода, а корректность алгоритма. Корректность кода по возможности проверяет компилятор, а соответствие кода ожиданиям должна быть проверена юнит-тестами. Собственно есть подход Test Driven Developement, когда тесты пишутся вперед кода, а код пишется под тесты. В этом случае тесты и есть полная формальная спецификация кода.

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> Я привел юзкейс - несколько одновременно работающих с ним через эти файлы программ - анализаторов.

Ты не объяснил, зачем твоим примерам работать одновременно.

Определение в математике - штука взятая с потолка. <...> Еще раз. Определения выдумывают математики. Они их придумывают из головы. Их не посылает нам бог на скрижалях, их придумывают так как надо в данный момент. Если нужны другие - их придумывают.

Если ты идиот - так и скажи. Математики придумывают понятия. Абстрактные объекты, применимость которых - внематематический вопрос. Абстрактными они должны быть, чтобы быть предельно точными - настолько, чтобы человеческий мозг не видел в них неточностей. Определения, в частности аксиомы, - просто словесные описания этих объектов.

Вроде бы сейчас математика вообще занята формальным выводом всех возможных теорем из некоторых систем аксиом в поисках непротиворечивой и полной системы этих самых аксиом.

Тебе это кто сказал? Убей его об стенку. Уже лет 80 как Гёдель доказал, что это невозможно.

Если у тебя сложная система, то сложность ты никуда не денешь. Где-то она все равно будет. Если упрощать составные части, усложнится логика их связи между собой.

Это если система (практически) замкнутая, т.е. то, что ты предлагаешь, - ОС в ОС. Ты, быть может, не заметил, но за тысячи лет люди таки научились «девать куда-то» сложность. Например, операционные системы вот изобрели. Так что тебе как прикладному программисту не нужно, например, думать о том, что в любой момент может произойти прерывание. Ты же этого просто не замечаешь. Ты не хочешь знать, как устроен мир, в котором ты живешь.

Доказывается не корректность кода, а корректность алгоритма.

А код - это и есть алгоритм, предельно детализированный. Кстати, давно ты в последний раз доказывал корректность алгоритмов, реализуемых твоим кодом?

grusha
()
Ответ на: комментарий от grusha

> Ты не объяснил, зачем твоим примерам работать одновременно.

Пусть их разрабатывают разные программисты, и каждый уверен что его программа единственная и работает монопольно.

Применимость математики - внематематический вопрос, а применимость программ - самый что ни на есть программистский. По этому математика тут не к месту, а к месту подход любой другой науки - эксперименты и подгонка.

Это если система (практически) замкнутая, т.е. то, что ты предлагаешь, - ОС в ОС. Ты, быть может, не заметил, но за тысячи лет люди таки научились «девать куда-то» сложность. Например, операционные системы вот изобрели. Так что тебе как прикладному программисту не нужно, например, думать о том, что в любой момент может произойти прерывание. Ты же этого просто не замечаешь. Ты не хочешь знать, как устроен мир, в котором ты живешь.

ОС - довольно простая и прозрачная штука, особенно «научные» типа миникса и план9. Кроме того сложность никуда не делась - она поделилась на сложность внутри ОС и на сложность юзерспейса к ней. Может быть ты видел идеальную безглючную ОС? я - нет.

А код - это и есть алгоритм, предельно детализированный. Кстати, давно ты в последний раз доказывал корректность алгоритмов, реализуемых твоим кодом?

Обычно я неформально доказываю для себя корректность алгоритма, что не предохраняет меня от периодических опечаток в коде, некоторые из которых приходится довольно долго выискивать. Ну или я реализую общеизвестный алгоритм, доказательство которого я знаю :)

farafonoff ★★
()
Ответ на: комментарий от cisco

> Если ты тупое быдло и не можешь отвечать, никого не оскорбляя, то молчи.

Я применил конструкцию «если». Если ее можно экстраполировать до безусловного утверждения, то это же применимо и к твоему высказыванию, и тогда рекурсивно получается, что ты - тупое быдло и должен молчать.

grusha
()
Ответ на: комментарий от farafonoff

> Пусть их разрабатывают разные программисты, и каждый уверен что его программа единственная и работает монопольно.

Так мы о программах или «плагинах к редактору»? Ты же сам недавно распинался, что самодостаточные программы не нужны, а бинарные плагины - наше всё.

«Программа единственная и работает автономно» - это давным-давно есть и используется, спасибо виртуальной памяти. Но ты предлагаешь от этого уйти назад в каменный век.

Применимость математики - внематематический вопрос, а применимость программ - самый что ни на есть программистский. По этому математика тут не к месту, а к месту подход любой другой науки - эксперименты и подгонка.

Цитируя всё того же Дейкстру: «Когда 25 лет назад разработчик логики стряпал электрическую схему, следующим его действием было построить и проверить ее, и если она не работала, он обследовал сигналы осциллографом и налаживал емкости. Когда она начинала работать, он начинал варьировать напряжение источника питания в пределах 10 процентов, подстраивал ее и т.д., пока не получалась цепь, корректно работающая во всем диапазоне заданных условий. Он делал продукт, для которого мог «убедиться, что он работает во всем диапазоне». Разумеется, он не испытывал ее во «всех» точках диапазона, но это и не было нужно, потому что многочисленные соображения непрерывности делали очевидным, что вполне достаточно проверить схему при весьма ограниченном количестве условий, совместно «покрывающих» весь диапазон.

Этот итеративный процесс проб и ошибок был принят как нечто столь неоспоримое, что его применяли в условиях, когда предположение о непрерывности процедуры проверки не является верным. В случае артефакта с дискретным «пространством выполнения», такого как программа, предположение о непрерывности не является верным, и в результате итеративный процесс разработки методом проб и ошибок становится неприменимым. Хороший разработчик программного обеспечения знает это; он знает, что из наблюдения, что при тестах программа выдает корректный результат, нельзя экстраполировать, что программа в полном порядке; поэтому он пытается математически доказать, что его программа удовлетворяет требованиям.

Даже простой намек на существование среды, в которой традиционный процесс разработки методом проб и ошибок не подходит и где, следовательно, требуется математическое доказательство, неприятен тем, для кого математическое доказательство лежит выше уровня понимания. Поэтому такое предложение встретило значительное сопротивление, даже среди программистов, которым следовало бы быть более осведомленными. Неудивительно, что в мире вычислительного оборудования понимание потенциальной неадекватности процедуры тестирования является все еще весьма редким.

Некоторые разработчики оборудования начинают беспокоиться, но не потому, что осознают фундаментальную неадекватность своего подхода к тестированию, а лишь потому, что «подстройка» становится слишком дорогой с момента появления технологии БИС. Но даже помимо этого финансового аспекта им следовало бы волноваться, потому что значительная часть их разработки приходится на дискретную среду. »

ОС - довольно простая и прозрачная штука

Ты таки уверен? Возьми напиши свою ОС (хотя нет, не надо, лучше изучи внутренности существующей), посмотри каково это в сравнении с клепанием энтерпрайз-поделок.

Кроме того сложность никуда не делась - она поделилась на сложность внутри ОС и на сложность юзерспейса к ней.

Ну да, сумма сложности в замкнутой системе - во всей вычислительной среде - сохранилась. Речь о том, что тебе таки реально не нужно мучаться со всей этой сложностью, а лишь с малой ее частью. О том, что абстракции ДЕЙСТВИТЕЛЬНО РАБОТАЮТ. Следующий шаг - аналогичное распределение сложности внутри юзерспейса, но ты почему-то этого не признаёшь.

Обычно я неформально доказываю для себя корректность алгоритма

А почему неформально, если код по определению работает с формальными объектами?

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

А вот я стараюсь все опечатки вылавливать с самого начала. Перед каждым коммитом я долго-долго смотрю на код, да и после коммита тоже много раз.

Ну или я реализую общеизвестный алгоритм, доказательство которого я знаю :)

Из корректности общеизвестного алгоритма не следует корректность твоей реализации.

grusha
()
Ответ на: комментарий от grusha

Заметьте, что не было утверждения, что Вы кого-то оскорбили своим «если», но если Вы считаете, что мое «если» было оскорблением и я тупое быдло, то тогда и ваше «если» было оскорблением, и Вы сами знаете кто.

А на «ты», кстати, я не обращаюсь обычно к незнакомым людям, чего и Вам желаю. И мое высказывание в данной теме было своеобразным наставлением Вам, что не стоило вообще горячиться и писать «если ты идиот и все такое прочее...». И после местоимения тире не ставится.

cisco
()
Ответ на: комментарий от grusha

Так эти файлы это и есть механизм расширения редактора, не?

На самом деле в большом диапазоне входных данных программа работает непрерывно. Задача тестировщика - выделить эти диапазоны, а также крайние случаи и убедиться в достоверности результатов, производительности, вызвать все типы предусмотренных ошибок, Получить все требуемые выходные состояния и.т.д.

Код ядра minix3 - всего 4000 строк. Код любой энтерпрайзной системы - в разы больше. Разница в том, что для ядра миникс надо еще сотню тысяч строк кода, чтобы он мог решать какие-то прикладные задачи, а энтерпрайзная система решает вполне конкретные прикладные задачи.

Следующий шаг - аналогичное распределение сложности внутри юзерспейса, но ты почему-то этого не признаёшь.

Я это признаю. Ты не признаешь того факта, что ОС - штука универсальная, используется всеми практически неизменно. Не так много программ можно создать с такими свойствами. Соответственно так или иначе создаются «велосипеды», а на самом деле программы нужные конкретным людям, которые затруднительно использовать в других условиях.

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

farafonoff ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.