Обсуждение проекта:Информационные технологии: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Содержимое удалено Содержимое добавлено
: новая тема
Строка 8: Строка 8:
== Разместить статью без конфликта интересов ==
== Разместить статью без конфликта интересов ==
Я работаю в компании [[Яндекс]]. Мои коллеги подготовили небольшую статью про сервис [https://travel.yandex.ru/ Яндекс.Путешествия], я оформил её черновик вот тут: [[Участник:Vasiliy Faronov/Яндекс.Путешествия]]. Мы остерегаемся [[Википедия:Конфликт интересов|конфликта интересов]] и не готовы разместить статью сами. Не мог бы кто-нибудь из участников проекта посмотреть и, если статья годится, выложить в основное пространство? (Как [[Википедия:Конфликт интересов#Запросы об изменениях в статье или создании новой статьи|рекомендует ВП:КИ]], пишу в самый близкий википроект, какой нашёл.) Спасибо. ~ [[User:Vasiliy Faronov|Василий Фаронов]] 15:49, 28 августа 2015 (UTC)
Я работаю в компании [[Яндекс]]. Мои коллеги подготовили небольшую статью про сервис [https://travel.yandex.ru/ Яндекс.Путешествия], я оформил её черновик вот тут: [[Участник:Vasiliy Faronov/Яндекс.Путешествия]]. Мы остерегаемся [[Википедия:Конфликт интересов|конфликта интересов]] и не готовы разместить статью сами. Не мог бы кто-нибудь из участников проекта посмотреть и, если статья годится, выложить в основное пространство? (Как [[Википедия:Конфликт интересов#Запросы об изменениях в статье или создании новой статьи|рекомендует ВП:КИ]], пишу в самый близкий википроект, какой нашёл.) Спасибо. ~ [[User:Vasiliy Faronov|Василий Фаронов]] 15:49, 28 августа 2015 (UTC)
: И да, там в конец надо добавить [[Шаблон:Яндекс]] и [[:Категория:Сервисы и инструменты Яндекса|Категории:Сервисы и инструменты Яндекса]], [[:Категория:Сайты, появившиеся в 2015 году|Сайты, появившиеся в 2015 году]] и [[:Категория:Туризм|Туризм]]. В черновике не могу этого сделать по очевидным причинам. ~ [[User:Vasiliy Faronov|Василий Фаронов]] 15:54, 28 августа 2015 (UTC)


== Буферы обмена и ввода/вывода ==
== Буферы обмена и ввода/вывода ==

Версия от 15:55, 28 августа 2015

Начинающим · Сообщество · Порталы · Избранное · Проекты · Запросы · Оценивание

Наука и техника · География · Общество · Культура · Спорт · Специальные

Пожалуйста, добавляйте новые темы сверху
Архив: 1|

Разместить статью без конфликта интересов

Я работаю в компании Яндекс. Мои коллеги подготовили небольшую статью про сервис Яндекс.Путешествия, я оформил её черновик вот тут: Участник:Vasiliy Faronov/Яндекс.Путешествия. Мы остерегаемся конфликта интересов и не готовы разместить статью сами. Не мог бы кто-нибудь из участников проекта посмотреть и, если статья годится, выложить в основное пространство? (Как рекомендует ВП:КИ, пишу в самый близкий википроект, какой нашёл.) Спасибо. ~ Василий Фаронов 15:49, 28 августа 2015 (UTC)[ответить]

И да, там в конец надо добавить Шаблон:Яндекс и Категории:Сервисы и инструменты Яндекса, Сайты, появившиеся в 2015 году и Туризм. В черновике не могу этого сделать по очевидным причинам. ~ Василий Фаронов 15:54, 28 августа 2015 (UTC)[ответить]

Буферы обмена и ввода/вывода

Так как это обсуджение имеет прямое отношение к проекту, прошу принять участие. Спасибо. Oleg3280 13:20, 16 августа 2015 (UTC)[ответить]

Snapchat !!??

Коллеги, у нас в рувики нет статьи про Снапчат (https://en.wikipedia.org/wiki/Snapchat), а он есть на всех других основный языках Вики. Предлагаю совметсными усилиями над этим поработать и создать хотя бы стаб статьи, а то как то неудобно :). Миша Карелин 06:03, 15 июля 2015 (UTC)[ответить]

@Миша Карелин: Стаб Snapchat. Пользуйтесь бета-функцией перевода - она удобна для стабов. --Сунприат 06:31, 17 июля 2015 (UTC)[ответить]
@Сунприат: Коллега, спасибо большое за Вашу работу. Со временем превратим стаб в нормальную статью :). Миша Карелин 09:35, 17 июля 2015 (UTC)[ответить]

Перенёс из основного пространства, так как это не дизамбиг (нет омонимов), а скорее координационный список по «типизация X». РоманСузи 10:05, 17 января 2015 (UTC)[ответить]

Есть предложение делать статью "Значения, индексированные типами", а "Класс типов" туда разделом (как встроенную в язык поддержку) и сам термин направлять на этот раздел. Для начала, конечно, можно просто английскую en:Type class перевести, остальное-то самим писать придётся. Всё ещё не могу вернуться к работе, но мысль пока закидываю. Arachnelis 19:51, 25 июня 2015 (UTC)[ответить]

upd: или наоборот. Arachnelis 20:20, 27 июня 2015 (UTC)[ответить]

Ещё предложение. Я давеча сделал статью Конструктор данных, но это название не-АИшечное. Положено переименовать в «Конструктор (функциональное программирование)» (по аналогии с «Конструктор (объектно-ориентированное программирование)»), но тогда хорошо бы подумать как её лепить в Шаблон:Типы данных и другие подобные места, где дисамбигов не предполагается (прежде всего под шапку Конструктор типов, где «не путать»), и не надо ли туда же ООПный вариант вставить, и как тогда их различить. Можно, конечно, в лобовую:
" • Конструктор (ФП)Конструктор (ООП) • ". Arachnelis 20:52, 30 июня 2015 (UTC)[ответить]

Перенос координационного списка

Уважаемые коллеги, прошу обратить внимание, что согласно итогу на КУ к вам в проект перенесён следующий координационный список: Проект:Информационные технологии/Списки/Список программ для скринкастинга.----Ferdinandus 07:23, 15 января 2015 (UTC)[ответить]

Команды Unix

Встречаю много статей вроде unset и подобных из

Есть ли у отдельных команд значимость (я лично сомневаюсь)? Некоторое время назад удалили (с моей подачи) список этих самых команд, так как он оброс не относящимися к POSIX командами. Нужно ли Википедии дублировать систему man или спецификации POSIX? На тему unset больше абзаца не написать: статья заведомо нежилец. Полагаю, что наиболее известные команды имеют право быть в Википедии (они в основном известны и для них выполняются требования по значимости), остальные нужно либо под каким-то зонтиком собрать, либо от них избавиться. Аналогично и команды других ОС. РоманСузи 08:28, 10 января 2015 (UTC) Может быть, больше подходит форма списка ВП:ГЛОССА, если использовать собирательный источник? РоманСузи 08:53, 10 января 2015 (UTC)[ответить]

Ещё из той же серии sstream и компания, из которых наиболее вопиющий string (C++). РоманСузи 13:33, 25 января 2015 (UTC)[ответить]

  • А не перебор ли писать целую пачку статей, да ещё со своим нав.шаблоном, по библиотеке одного языка? Если так можно, я тоже по SML забадяжу :P Arachnelis 14:47, 25 января 2015 (UTC)[ответить]
  • С одной стороны есть разные Диплатинатрииндий и звёзды оставляли при нахождении хоть одного исследования по ним. С другой - на эти статьи распространяется ВП:СОФТ, а описание в пару строк в учебниках по этому языку недотягивает до подробного рассмотрения в АИ. Пока применил бы шаблон на Значимость. Что скажете, у:Higimo? --Сунприат 19:02, 25 января 2015 (UTC)[ответить]
  • У:Сунприат, про STL есть книги, но вот конкретно по её частям, там наврятли написано. Классический случай «не значимо в отрыве от основной статьи». Вероятно, надо удалять сразу. Хотя считаю, что лучше всего написать на форум для привлечения внимания. Всё такие программистов достаточно много, авось у кого-то литература на руках. --higimo (обс.) 21:49, 25 января 2015 (UTC)[ответить]
  • Скажем, про sstream целый параграф в C++ in Nutshell с его 12 классами. Нужно ли оно в полном составе в Википедии? Кое-какие наиболее известные (типа vector) вполне, но весь Library reference? (при этом я не призываю тут же начать удалять массово — это больше к тому, чтобы такого больше не плодить, а выставить на удаление желающих найдётся) РоманСузи 04:47, 26 января 2015 (UTC)[ответить]
  • Доктор, меня все игнорируют. Ссылок на библиотеку SML Basis - как звёзд на небе, и не Хабре, а в академических статьях и диссертациях. Тем не менее, я счёл бы абсурдом написание более чем одной обзорной статьи по общей структуре и идеологии. Пачка статей про STL может быть разве что где-нибудь на Викискладе или чём там. Но в энциклопедии общего назначения ей не место. Arachnelis 19:16, 16 февраля 2015 (UTC)[ответить]
  • Давно сюда не заглядывал, так что пардон за почти некропостинг. За отдельные части STL на вскидку не скажу, но по крайней мере часть команд unix shell точно значима. И я не только о sed и awk, о многих командах попроще (без собственных языков программирования) пишут целые журнальные статьи. Но копия man-страницы, конечно, в ВП не очень нужна --be-nt-all 21:33, 27 июня 2015 (UTC)[ответить]

Листинги кода в статьях

Что делать с длинными листингами? Бывает листинги даже горизонтально не влезают и отображаются с прокруткой (BMP#Пример программы на C). Размещение их в сворачиваемых элементах не выход - трудно представить другую Энциклопедию с таким внутри. В англовики видел предложение убирать в Викиучебник(Викикниги) (en:Wikipedia:Articles for deletion/Bresenham's line algorithm C code) - можно будет ссылаться на главы в одной свободной книге - сборнике рецептов. Есть en:Wikipedia:WikiProject Computer science/Manual of style#Code samples. Какие будут предложения? На форумах ранее эта тема поднималась? ~Сунприат 12:44, 3 января 2015 (UTC)[ответить]

  • Соображения за и против. Вот конкретный пример: Алгоритм Коэна — Сазерленда. Пользы от такого листинга маловато, а мутоты с патрулированием хватает: кто-то вдруг меняет условие на обратное и поди разбери — вандализм или исправление. Но что считать длинным (и широким листингом)? Полагаю, что листинг должен быть не шире 80 символов (из исторических соображений). Но его ширина обычно растёт за счёт комментариев, которые в других изданиях сделали бы как-то по-другому, вне самого листинга. Кроме того, некоторые языки в несколько раз многословнее других (сравните APL, Python, C, ассемблер). С другой стороны, встречался с тем, что народ плохо воспринимает, когда алгоритм записан на сверхвысокоуровневом языке, да и алгоритмы часто формулируются для алголо-подобного языка (или некого псевдокода) и выглядят (в энциклопедии) на других нелепо… В тоже время, считаю, что листинги всё-таки должны быть в статьях или быть легко доступны из этих статей, как изображения с медиасклада. Другой пример: XML#Пример документа. В данном случае листинг можно сравнить с иллюстрацией, которой, конечно же, должно найтись место в статье. Войну против листингов развернуть очень легко, но без консенсуса о критериях допустимости это не будет продуктивным. Для иллюстрации тоже должно быть обоснование её применения, а уж размер — дело техники. То есть, должны быть содержательные критерии допустимости листингов (а может они и есть, замучаешься в правилах что-то подобное найти). РоманСузи 13:27, 3 января 2015 (UTC)[ответить]
  • Кстати, полагаю, что в моих двух примерах листинг допустим (у Алгоритм Коэна — Сазерленда после рефакторинга), в Вашем (BMP) — нет, так как это пример использования кучи библиотек для работы с форматом, а не, скажем, парсер формата. То есть, листинг несамодостаточен без знания API нескольких библиотек. Другое дело, Очередь с приоритетом (программирование) — там я вставил листинг на Python, так как он достаточно компактно иллюстрирует работу с типом данных. Конечно, туда требуется добавить хотя бы один листинг реализации, но на Python его писать нехорошо, так как у него слишком высокоуровневые конструкции для иллюстрации алгоритма (только затуманят дело). В общем, я полагаю, что только не более 20-25 процентов листингов в настоящий момент неадекватны. РоманСузи 13:35, 3 января 2015 (UTC)[ответить]
  • Википедия:Форум/Архив/Правила/2014/07#Википедия - не stackoverflow вот было. Попросил обзорный список Википедия:Запросы к ботоводам#Листинги. ~Сунприат 16:10, 3 января 2015 (UTC)[ответить]
    • К единому мнению никто там не пришёл, хотя предложения были отчасти логичные. По-моему, использование только псевдокода — слишком ограничивающее решение, нужное лишь для того, чтобы в статье не появлялись реализации на всех без разбора ЯП. Более того, листинги есть не только в статьях по алгоритмам, но и в статьях, для которых важен конкретный синтаксис. Например, на каком псевдокоде можно объяснить Метод расширения? То есть, когда получите список, пожалуйста проанализируйте и роль листингов в разных статьях. Например, когда я писал Erlang рецензент хотел убрать многочисленные примеры. Но я был против (как можно говорить о языке программирования без примеров кода?). С другой стороны, на базе Викиучебника можно создать новую книгу типа Cookbook (Справочник по реализациям алгоритмов) типа как раньше были справочники по расчетам на микрокалькуляторах, в которые будем собирать по-алгоритменно реализации на каких душе угодно языках! Вот только давайте сначала создадим такой ресурс, перенесём туда наиболее вопиющие случаи (например, Поиск в глубину), посмотрим реакцию сообщества. Причём, я предлагаю возможность оставить в статье возможность реализации на псевдокоде, а также наиболее подходящем языке, на котором АИ алгоритм приведён в АИ (ну и другие хорошие предложения в указанном Вами обсуждении и в этом обсуждении). РоманСузи 18:56, 3 января 2015 (UTC)[ответить]
    • Более того, такой учебник уже есть! Реализации алгоритмов. РоманСузи 18:59, 3 января 2015 (UTC)[ответить]
Здесь находятся завершившиеся обсуждения. Просьба не вносить изменений.
        • (Пока не уверен с консенсусом о переносе, хотя уже много чего до нас перенесли). Но технически наверное стоит оставлять некий комментарий, чтобы Реализации и не добавляли в статью? Или во всяком случае не на N+1-м языке? В общем, какой-то намёк, но где. Может, на СО (уже в ВП)? РоманСузи 22:22, 3 января 2015 (UTC)[ответить]
          По мне, лучшим указателем (тот "комментарий") послужит "а как это оформлено в других статьях". Первое, что представилось - смесь Ш:wikibooks и Ш:Внешние медиафайлы со справочной ссылкой на пояснение в ВП:ИТ, но это значит перелопатить все статьи, нужно подумать. ~Сунприат 22:57, 3 января 2015 (UTC)[ответить]
          • Но у проекта уже есть шаблон на СО многих статей (хотя в случае с алгоритмами там может быть и проект Математика). Может там какой «подвальчик» можно открыть? Кроме того, правила не обязывают участников следовать нормам какого-то проекта. Полагаю, что наиболее верный вариант — это продумать до конца процесс (критерии плохих листингов, инструкцию по переносу, какие шаблоны куда ставить) и включить в нормативные документы. РоманСузи 08:23, 4 января 2015 (UTC)[ответить]

Я считаю, следует выбросить листинги из статей на любом конкретном языке программирования. Мои аргументы: не видно подключенных библиотек, масса трудновылавливаемых без прогона на машине ошибок (см., например, Алгоритм Ли), любая нетривиальная правка любого участника в нетривиальных листингах ставит в тупик, или это реально улучшение, или ошибка/вандализм. Возможно, при их сохранении на листинге следует ставить шаблон типа: "прогнано на машине тем-то тогда-то с таким-то набором данных". Но, а как быть с другим набором данных с побочными результатами? Призываю оставлять в статьях только листинги на абстрактном псевдокоде, например, как в алгоритм Евклида. Д.Ильин 08:59, 4 января 2015 (UTC).[ответить]

@Д.Ильин: Псевдокод, конечно хорошо выглядит полностью на русском. Ещё есть возможность подсвечивать части цветом (например) В других статьях используют мега шаблоны, например Ш:Плей-офф/doc, вероятно можно из шаблонов собирать и блок-схемы Файл:Euclid_flowchart_1.png.проще рисунок вставить Можно выбрать способ создания анимаций (gif) прохода по алгоритму, есть несложные способы. Что-то такое представляется уместным использовать? ~Сунприат 09:51, 4 января 2015 (UTC)[ответить]
  • Приведённый пример (Алгоритм Ли), конечно, не ах, но я бы не стал столь радикально подходить к вопросу. Даже Кнут, который придумал свой псевдокод и MIX-машину, таки определил их формально. В этом смысле код на реальном ЯП обладает тем преимуществом, что семантика однозначна, так как язык обычно имеет определение каноническое определение. Например, алгоритмы типа XTEA лучше всего иллюстрировать на Си (из-за битовых операций). Кое-что лучше иллюстрировать в функциональном стиле, наконец, есть алгоритмы, для которых лучше подойдёт R, Octave и т. п. Также я бы сделал исключение (компромисс) для статей без алгоритма на псевдокоде. Но в целом я с Вами согласен, что за некоторыми исключениями алгоритмы лучше всего представлять в псевдокоде. И ещё одно соображение. Последнее время некоторые источники дают не только алгоритм, но и его обоснование, например, на языке доказателя теорем (типа Coq). В идеале ВП:ПРОВ наилучшим образом бы удовлетворялось, если к алгоритму шло бы доказательство. В этом случае копипастишь доказательство в coq — и вуаля! (но в этом случае пример должен быть на диалекте ML или Haskell). Но такой подход, полагаю, дело не столь близкого будущего. К листингу, кстати, можно приложить цифровую подпись того, кто делал сверку. Извините, если размечтался. Коллега Сунприат заказал ботоисследование, и полагаю, будет правильным сначала изучить масштаб проблемы. И ещё. Мы пока что касаемся только реализаций алгоритмов. У листингов есть и другие применения: иллюстрация синтаксиса, иллюстрация концепций языков программирования и значимых фреймворков, иллюстрация применения API, библиотек, работы со структурами данных и прочее РоманСузи 10:12, 4 января 2015 (UTC)[ответить]
  • Кстати, кроме упорядоченного переноса в викиучебник-справочник, есть еще и дикие попытки переноса. Например, b:Редакционное предписание перенёс под сень учебника. Не знаю, правда, сколько таких, и как их выявить. РоманСузи 11:27, 4 января 2015 (UTC)[ответить]
Здесь находятся завершившиеся обсуждения. Просьба не вносить изменений.

Пригодится ли категория К:Статьи с примерами кода на псевдокоде, как К:Статьи с примерами кода? ~Сунприат 18:21, 8 января 2015 (UTC)[ответить]

  • Сложно сказать: я бы поставил +0. В некоторых случаях сложно понять, имеем ли дело с псевдокодом или же с математической нотацией. Если будет точный критерий, позволяющий их разделить, то проблем не вижу, хотя и особой надобности тоже. Если бы псевдокод был унифицированным, тогда другое дело. (В какую категорию она войдёт?) РоманСузи 18:56, 8 января 2015 (UTC)[ответить]
  • Ещё один кладезь листингов — шаблоны проектирования, например: Декоратор (шаблон проектирования). Эти тоже предполагается выносить, оставлять один (на каком языке?). И если выносить, то тоже в Реализации алгоритмов? РоманСузи 04:42, 16 января 2015 (UTC)[ответить]
    Вывод: 1) схожесть оформления позволяет использовать поиск mw:Help:CirrusSearch/ru, например по "пример реализации". 2) добавления/оформления/удаления отслеживаются в истории. Крестовый поход против кода мы в одиночку не объявляем. Предлагаю участникам из истории расставлять на личной странице обсуждения приглашение сюда в виде "приглашаю присоединиться к проекту. сейчас в проекте обсуждается оформление кода в текстах, где нам интересно ваше мнение." 3) Это проблема не только нашего раздела (см. французский) нужна консультация в англовики и уровня мета-вики. Посмотрю, что можно сделать. / В более развитом en.wikibook шаблоны собраны в отдельную книгу. Пока проще сделать по их подобию, а перекомпоновать всегда успеем. --Сунприат 05:29, 16 января 2015 (UTC)[ответить]
    Предложили такой план: перевод англовики, организация по его пунктам опроса, создание рекомендации по результатам. Каждое сообщество должно решать само что делать - попробую им на форумы что-нибудь написать. --Сунприат 09:48, 21 января 2015 (UTC)[ответить]
    Не совсем понял: перевод книги или чего? И по пунктам чего опрос (там был какой-то опрос)? Забавно, в англовики en:Adapter_pattern по качеству хуже, чем b:en:Computer_Science_Design_Patterns/Adapter. А реализации и там, и там... Мне кажется, что до сих пор листинги вообще не снабжают источниками: если листинг из источника скопирован, то это копивио, а если не скопирован, то что с ним делать? Переименовывать переменные и функции. Или это fair-use? (извиняюсь за отклонение от темы, но я уже около двух десятков алгоритмов перевёл в Викиучебник, в том числе выковырял из Истории правок (BioMaxHazard любил удалять реализации) и такой вопрос о соответствии листинга заявленному всегда крутится в голове. То есть, хотелось бы в Википедии иметь шаблоны проектирования по источникам, а не то, что Вася Пупкин посчитал написанным по шаблону. РоманСузи 14:20, 21 января 2015 (UTC)[ответить]
    Перевод части про код из рекомендаций по стилю из англовики как основу для своей рекомендации. Опрос/обсуждение (RFC запрос на комментарии) по тому подходят ли нам эти части и есть и чем их дополнить. Написал в примерно 10 вики с примером декоратора или прототипа. В трёх сказали, что их статьи это перевод англовики и в англовики есть такие листинги при том, что в англовики есть упомянутые рекомендации. В некоторых сказали, что это не проблема. Кстати, в польской совсем нет кода (в статьях о шаблонах), а в немецкой только на одном языке и там пока ответили что это больше нормально, чем нет. Посмотрю, разовьется ли в других вики обсуждение. Пока количество заинтересованных сторон можно сузить до нашего раздела и проекта в англовики. Все ваши ответы держу на виду, но хочу менее голословно подойти к ответам, т.к. задаюсь теми же вопросами. --Сунприат 21:17, 21 января 2015 (UTC)[ответить]
    В основном обсуждение не пошло, не восприняли всерьёз. Кое-где [2] подошли радикально. В некоторых вики (вроде pl и de) видел мало кода в противовес количеству кода по другим интервикам на тех же статьях. Значит они где-то обсуждали - поищу. --Сунприат 07:23, 24 января 2015 (UTC)[ответить]
    Нашёл - способ de-вики de:Liste von Singleton-Implementierungen, способ pl-вики s:pl:Singleton (wzorzec projektowy)/kod - в Викитеке! --Сунприат 07:47, 24 января 2015 (UTC)[ответить]
    В англоВикиучебнике на 4-х языках, в статье на двух. Так в нескольких статьях видел - два в статье, остальные в учебнике. Требовать ссылку на код (подобный) имеет смысл в сложных/длинных случаях. По fair-use вопрос интересный, т.к. текст из Википедии далее может использоваться в коммерческих целях. Копировать - плохо, пригодилась бы подборка ссылок на тему лицензий - стоит рассмотреть отдельно; после замены стиля/названия переменных код считается тем же. --Сунприат 07:23, 24 января 2015 (UTC)[ответить]
    Код считается тем же после эквивалентных преобразований? Но тогда он может считаться подобно математической формуле: en:Idea–expression divide. РоманСузи 07:42, 24 января 2015 (UTC)[ответить]
    • О крестовом походе никто и не говорит. В каждом конкретном случае, в том числе в случае длинного листинга, следует рассматривать его энциклопедическую ценность для статьи. С другой стороны, у нас есть ВП:ПРОВ, и я могу прямо сейчас отметить большинство листингов из шаблонов требованиями источников, потому как почему без АИ я должен верить, что приведённый листинг является реализацией шаблона, даже если ВП:ПДН, автор может ошибаться? Конечно, для каких-то языков АИ найдутся и более того, пример на реальном языке может много дать читателю (псевдокод тут будет выглядеть несколько странно), но сразу на нескольких? В любом случае, пока ничего с этим не делаем за исключением вопиющих случаев, если таковые найдутся. РоманСузи 07:11, 16 января 2015 (UTC) Добавил в черновик, посмотрите пожалуйста, что добавление имеет смысл. РоманСузи 07:18, 16 января 2015 (UTC)[ответить]
  • Ещё 1) в комп. журналах, конференциях, сборниках, наших/зарубежных, куда отдаются статьи, есть правила публикации и оформления и там может быть про цитирование кода. 2) Тут en:Software design pattern#Documentation примеры кода и реализация разделены - можно этот момент развить на одной статье и дать как пример. Вообще, попадающиеся хорошо оформленные статьи (о, можно посмотреть по хорошим/избранным) в других вики стоит упоминать в наших рекомендациях как ориентиры. --Сунприат 02:26, 24 января 2015 (UTC)[ответить]

@РоманСузи: По букве правила.

Подборки исходных материалов и информации, находящейся в общественном достоянии,

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

Полные тексты оригинальных источников (в том числе исходные коды программ) помещайте в Викитеку.

ВП:НЕАРХИВ

По этому: 1) является ли приведение примеров на 6-и - 8-и языках "подборкой" 2) в общем виде здесь о полных и законченных документах. в этот ряд тот кусочный код, что сейчас в статьях, не совсем подходит (т.е. выходит, что букве "ВП:ЧНЯВ не противоречит") 3) из s:Викитека:Описание „не может быть помещено в Викитеку: Исходные коды программ.“ и Викитека „Викитека может хранить следующие материалы только при условии, что они являются частью более общей публикации: Исходные коды программ.“ Т.е. к последней части тоже кусочный код не совсем подходит. Отсюда вопрос - не подразумевается ли тут "полный исходный код программы, например, Блокнота"; к кусочному коду подходит ВП:НЕАРХИВ или же его следует рассматривать относительно к другому правилу подобно иллюстрациям (количеству картинок на статью). --Сунприат 08:43, 26 января 2015 (UTC)[ответить]

Пограничные случаи (к применимости критериев)

Случаи, в которых вопрос о листингах не совсем тривиален:

  • Двоичный поиск — нет псевдокода, часть текста опирается на листинг. С другой стороны, смахивает на инструкцию по правильной реализации алгоритма.
  • Задача о восьми ферзях — часть текста опирается на пример кода. Но реализаций слишком много, по идее, нужно переносить.
  • Я считаю, надо убрать два С++, C# и Бейсик, оставив Си и Java. Не вижу смысла в Ерланге. Зато обязательно надо добавить на констрейнах - либо с Пролога (классика), либо с AliceML (тогда и Хаскел убрать можно). SQL удивил, честно, даже думал тоже лишнее (экзотичное же решение), но подумал, что для proof of concept очень даже полезно в дидактическом смысле. Извините, что не беру на себя. Arachnelis 19:25, 24 января 2015 (UTC)[ответить]
  • Не вижу смысла в таком количестве. Достаточно показать императивный на псевдокоде, ФП - на ML (пока пусть Erlang или Хаскел), логическое - Пролог. Остальное вынести в Викиучебник. Проблема с этой статьёй ещё в том, что там слишком много листингов, слишком мало объяснительного материала. РоманСузи 20:46, 24 января 2015 (UTC)[ответить]
  • Мне кажется, три - это уж очень скромный верхний порог. Могу такую циферку дать - человек одновременно способен усваивать семь плюс-минус две единицы информации. Например, если я назову 10 слов и повторю этот ряд несколько раз, то большинство людей запомнит 5-9 слов. Поэтому, например, эргономические стандарты требуют меню в программе дробить по 7: не более 7 групп, в каждой не более 7 пунктов, если не хватат, то делается вложенное меню. Т.е. с точки зрения науки больше 9 листингов - это точно перебор, их никто никогда не прочитает. А 5-7 - вполне допустимо. Arachnelis 14:53, 25 января 2015 (UTC)[ответить]
  • Листинги в неограниченных количествах пусть в викиучебник идут читать или сюда. В статье же самая суть и средства её иллюстрации. Ну что поделать, enwiki, dewiki, ruwiki у нас есть, а cwiki, pythonwiki, prologwiki — у Викимедии нет, интервики не поставишь. РоманСузи 15:22, 25 января 2015 (UTC)[ответить]

Конкретные предложения

  • Кому нужно, найдут. По-хорошему, нужно каждую программу проверить, сделать тесты, снабдить объяснениями и т. д. и т. п. Может, кто-то там когда-нибудь и займётся, а когда займётся, увидит, откуда ноги растут (я полагаю, что у части примеров ноги вообще из англовики растут). К сожалению, шаблоны я делать не умею, а так сделал бы для Викиучебника стандартный шаблон, в котором можно было нужные нити дать. РоманСузи 21:07, 8 января 2015 (UTC)[ответить]
  • Осмелюсь вставить пять копеек, хоть и начал уже было отрекаться от залезания в правила. Народ, вы забыли провести самую главную разграничительную линию: примеры кода в статье о языке и примеры кодов на разных языках в статье об алгоритме (паттерне, пр, нужное подчеркнуть). ИМХО, эта вилка должна породить не одно, а два правила. Что по первому, то вобщем-то очевидно: не слишком длинно, не слишком мудрёно алгоритмически, и чтобы давало представление о языке. Псевдокод тут ни при чём — это как зубы удалять по фотографии. С недетерминированными языками псевдокод читателя так запсевдокодит, что тот без алкоголя спать не ляжет. По второму я предлагаю пройтись по АИшечкам и составить список языков, которые считаются достаточно легко читаемыми для демонстрации алгоритмов. Есть классические примеры — C (но не С++), Pascal (но не Delphi), Java (но не С#), Python, SML (или OCaml), Haskell (но не Scala). Лиспы лучше не трогать, ибо синтаксис ваистену (не в обиду Лиспу), в крайнем случае Scheme. Могу заметить, что когда в литературе по ФП рассматривают ИП/ООП, то примеры приводят на Java (пример). upd: Ещё нужно требовать либо обходиться без API совсем, либо использовать только «самые стандартные» библиотеки, идущие от корней до самых кончиков <^_^>. Нужно выбрать по одному языку для демонстрации определённого рода концепций, чтобы предельно чисто и предельно однопарадигменно (никаких Oz’ов), и вместе с тем более-менее популярно в смысле количества литературы (то есть Ocaml, а не Eiffel). Вилка «Си или Java» — как раз пример, почему не С++. Тогда кол-во примеров в статьях будет заведомо ограничено, а желающие будут направляться в Викиучебник или куда там. Надо всё-таки добавить CLOS как (АИшно-доказуемо) самый первый и при том самый мощный стандарт ООП, либо Smalltalk. Вобщем, если моё предложение встретит одобрение, надо будет затеять отдельное обсуждение, что куда. upd2: А ещё пункт типа "Разрешается использовать любые из этих N языков, но не более пяти примеров на статью". Arachnelis 19:23, 23 января 2015 (UTC)[ответить]
  • Это (апдейты) уже слишком. Полагаю, вместо всех этих конкретностей для начала достаточно сказать, что язык реализации должен наилучшим образом подходить для иллюстрации алгоритма. В англовики за критерий взяли читабельность кода. Конечно, если статья о колмогоровской сложности, то полагаю, что unlambda вполне хорош. И т. д. РоманСузи 21:05, 23 января 2015 (UTC)[ответить]
  • А сама идея списка "избранных языков"? Критерий "читабельности" я считаю некорректным возводить в правила. Во-первых, получится, что примеры на Перле недопустимы, даже если задача аккурат под регулярки. Во-вторых, на эту тему холиварят только так - кому-то темплейты нечитабельно, кому-то Хаскел. Arachnelis 12:46, 24 января 2015 (UTC)[ответить]

Найденные обсуждения

Словники

Нужно бы сделать тематический словник, а лучше несколько. Может есть какие-то нормальные (дотягивающие до АИ) тематические энциклопедии или книги с алфавитным указателем, но таким, чтобы на каждое слово можно было создать по статье или перенаправлению? Год не важен. ~Sunpriat 04:30, 14 декабря 2014 (UTC)[ответить]

  • По всей теме информационных технологий или более конкретно? Полагаю, что это неподымная задача. Самое близкое, что видел: Воройский Ф. С. Информатика. Новый систематизированный толковый словарь-справочник, Терминологический словарь по основам информатики и вычислительной техники / Ершов А. П., Шанский Н. М., Толковый словарь по вычислительным системам / Под ред. В. Иллингуорта и др. — М.: Машиностроение, 1990. — 560 с. В начале 1990-х было много попыток выпускать что-то подобное. РоманСузи 08:14, 14 декабря 2014 (UTC)[ответить]
    @РоманСузи: В целом, да, выглядит тяжёлой задачей. На деле же, даже если посмотреть на словари, есть общие и спец. по областям и чтобы сравнить с Википедией нужны и те и другие. Например, по существующим статьям Википедии, берём общую книгу, за её пределами остается большой кусок программирования, который покрывается уже другим словариком. Все темы охватить будет сложно, поэтому приоритет и цель на сейчас - некий общий словник и 1-3 спец. словника, тему которых нужно взять исходя из посещаемости и популярности редактирования тематических групп статей, если это можно как-то предположить. Тоже сначала подумал о словарях, в процессе нашёл Першикова с его 10к терминами..., поэтому и спросил, может есть что-то отличное от словарей. Два словарика 90х выглядят убедительно, а вот воройский, хоть и поновее, но труд одного автора без рецензентов под редакцией непонятно кого... ~Sunpriat 08:57, 15 декабря 2014 (UTC)[ответить]
  • Про Воройского — посмотрите материал, а не рецензентов. Он с точки зрения библиографа труд написал, имея, скорее всего, доступ к большой библиотеке. Это полезно тем, что у него были все источники под руками. Вам же слова нужны, а не конкретные определения? РоманСузи 10:33, 15 декабря 2014 (UTC) PS. Собственно, этот справочник уже 3-е издание и по качеству (с точки зрения Википедийного материала) на мой взгляд выше двух других. РоманСузи 10:42, 15 декабря 2014 (UTC)[ответить]
    Попробовал его начать Проект:Информационные технологии/Словники/Воройский (русский). ~Sunpriat 15:03, 16 декабря 2014 (UTC)[ответить]
    • По-моему, очень даже неплохо (визуально где-то 10-12-я часть статей даже нашлась в таком виде, или подрихтованы?). Конечно, не все понятия значимы для Википедии до уровня отдельной статьи, кроме того, не факт что названия даны в наиболее узнаваемой форме, как принято в Википедии. РоманСузи 17:44, 16 декабря 2014 (UTC)[ответить]
      Часть не туда попала(атака асо), часть под другими названиями (эль гамаль был). А вообще полезно разукрашивает гаджет «Выделить другим цветом ссылки на перенаправления» из настроек - часть попала на перенаправления, сделанные в 2007-09 годах - так что в них есть смысл :) ~Sunpriat 18:00, 16 декабря 2014 (UTC)[ответить]
    • По-моему, алфавитный способ следует сочетать с тематическим. Задача — построить достаточно полный словник. Тут надо как-то объединить данные из разных источников. --OZH 20:25, 16 декабря 2014 (UTC)[ответить]
      @OZH: Проект:Словники существует опираясь на отдельные издания и создавая ядра - пересечения словников. Взять пару небольших общих словников - их пересечение будет словник общей тематики. Вычитая это пересечение из словников по специальным узким темам останется некий тематический словник. Ботоводы или табличные редакторы с таким могут справиться. Для этого всё равно нужны списки-алфивитные указатели из отдельных книг. Или как вы представляете тематический способ и полный словник? ~Sunpriat 09:48, 17 декабря 2014 (UTC)[ответить]
      • Просто когда в одном списке всё-всё-всё, то труднее работать. Да, действуя подряд, можно выяснить, как Википедия покрывает этот словник. Наша цель, как я её понимаю, это развитие Википедии, а тут удобно действовать по темам. То есть: взяли какую-то тему и собрали по этой теме кусты из предметного указателя — вот вам и примерная структура того что и как описывать в Википедии. --OZH 12:27, 17 декабря 2014 (UTC)[ответить]
        @OZH: Таки да, словари с их over 10k охватом раздуты. Вопрос в том, есть ли такие кусты, (может иерархические тезаурусы [3]?) или что можно взять, чтобы не заниматься оригинальными исследованиями. ~Sunpriat 13:16, 17 декабря 2014 (UTC)[ответить]
        • По теме программирования — возьмите Одинцова, там прекрасные «кусты» по всей технологии программирования. Предлагаю найти подобные обзорно-систематизирующие источники по всем темам проекта. В Воройском тоже есть кусты, для более прозаичных тем. Но надо бы что-то еще. Может, какие вузовские учебные планы могут для выявления самого верхнего уровня или существующая категоризация Википедии? Или на худой конец какой продвинутый библиотечный каталог? РоманСузи 19:49, 17 декабря 2014 (UTC)[ответить]
          Огромное спасибо за Воройского. Я нашёл: 1) Воройский Ф. С. Информатика. Новый систематизировансистематизированный толковый словарь-справочник (Введение в современные ининформационные и телекоммуникационные технологии в терминах и фактах). — 3-е изд., перераб. и доп. — М.: ФИЗМАТЛИТ, 2003. — 760 с. — ISBN 5-9221-0426-8. и 2) Воройский Ф. С. Информатика. Энциклопедический словарь-справочник: введение в современные информационные и телекоммуникационные технологии в терминах и фактах. - М.: ФИЗМАТЛИТ, 2006. - 768 с. - ISBN 5-9221-0717-8. — Видимо, это различные варианты одного и того же. Нам будет очень полезно использовать ещё и оглавление/содержание. Думаю, что Воройский нам пригодится в первую очередь. --OZH 18:07, 19 декабря 2014 (UTC)[ответить]
  • Ещё есть вот такой: Кочергин В. И. Англо-русский толковый научно-технический словарь по системному анализу, программированию, электронике и электроприводу. — Томск: ОАО «НПЦ «Полюс», 2008. — Т. 1. — 652 с. — (В 2-х т.). — ISBN 5-7511-1937-1. (но уже не помню, насколько качественный) РоманСузи 11:09, 15 декабря 2014 (UTC)[ответить]
  • Я набросал свой список на страннице Проект:Информационные технологии/Литература. Особенно примечательны (в плане составления словника) книги Бауэра и Дейтела, где можно найти сопоставления терминологий, а также, книга Шуракова, в которой нашёл отражение советский подход. Я буду последовательно викифицировать пункты своего списка, дописывать аннотации, сканировать оглавления-содержания и предметные указатели и пополнять список другими доступными мне источниками. Можете составит на указанной странице свои списки с аннотациями, и тогда мы сможем сделать первичный обзор по информационным технологиям и наметить план для реализации проекта. --OZH 17:11, 15 декабря 2014 (UTC)[ответить]
  • Забыл ещё одного хорошего кандидата (из своего списка):
    • Одинцов И. О. Профессиональное программирование. Системный подход. — 2-е изд.. — СПб.: БХВ-Петербург, 2004. — 624 с. — ISBN 5-94157-457-6. — все понятия, связанные с программированием в широком смысле, удобно разложены по полочкам, то есть, систематизировано. РоманСузи 18:45, 15 декабря 2014 (UTC)[ответить]
    • И ещё один важный источник забыли: стандарты. Например, ГОСТ Р ИСО/МЭК 12207-99 Информационная технология. Процессы жизненного цикла программных средств РоманСузи 10:29, 19 декабря 2014 (UTC)[ответить]

Нашёл у себя вот что:

А. Б. Борковский. Англо-русский словарь по программированию и информатике. — М.: Московская международная школа переводчиков, 1992. — 335 с. — ISBN 5-8234-0003-9.

В конце (С. 284—333) есть указатель русских терминов. Пожалуй, с него и начну: тут и русские термины в последней стабильной версии (со времён СССР), и соответствующие им английские. Лучшего нельзя и придумать. Если, конечно, позже не был издан аналогичный словарь. (Я ещё не проверял данные вами здесь ссылки.) --OZH 21:06, 16 декабря 2014 (UTC)[ответить]

Коллеги, если будут конкретные задачи по сканированию и выверке словников (по доступным нам книгам) - рутинная и средней сложности интеллектуальная работа, то я мог бы в следующем году предложить такую работу отстающим студентам. Неотстающие пишут вот эти статьи: Участник:AKA MBG/Todos :) -- Andrew Krizhanovsky 11:47, 17 декабря 2014 (UTC)[ответить]
@Andrew Krizhanovsky: Нужны словники по отдельным областям. Можно оттолкнуться от этого (стр. 20) - взять отдельный пункт(ы), учебник (рекомендуемая литература/аи), который идёт по ней и из него оглавление (уточнение, что охватывает) (как Проект:Информационные технологии/Литература/Воройский, 2003) и алфавитный перечень (словник). Затраты времени на проверку можно посмотреть здесь https://ru.wikipedia.org/w/index.php?title=Проект:Информационные_технологии/Словники/Воройский_(русский)&action=history (т-я это ту, ф-я уже были готовы) +распознавание +оглавление. ~Sunpriat 12:51, 23 декабря 2014 (UTC)[ответить]
@Andrew Krizhanovsky:, в Математическом энциклопедическом словаре есть раздел «Словарь школьной информатики» (стр. 805—846), полагаю, был бы неплохой и довольно базисный словник. Тогда же (четверть века назад) выходили ещё такие книги:
  • Владимир Иванович Першиков, Владимир Макарович Савинков. Толковый словарь по информатике: более 10,000 терминов. — М.: Финансы и статистика, 1991.
  • Андрей Петрович Ершов, Николай Максимович Шанский. Терминологической словарь по основам информатики и вычислительной техники. — М.: Просвещение, 1991. — 158 с.
  • Иллингуорт В., Глейзер Э., Пайл И. (ред.). Толковый словарь по вычислительным системам. — М.: Машиностроение, 1990. — 560 с. bezik° 13:52, 4 января 2015 (UTC)[ответить]

WANTED: Computing Classification System, 2012 Revision - перевод

А ещё студентов (может, и не отстающих, и, может даже, и не студентов) можно было бы озадачить таким творческим делом: перевести и оформить статейными ссылками предметную классификацию ACM [4]. Это будет и отличный словник, и подсказка по вопросам системы категорий, bezik° 13:52, 4 января 2015 (UTC)[ответить]
  • Может, с этим сначала боты поработают по алгоритму: 1) читай строку 2) смотри в enwiki (или на викиданных?), учитывая редиректы 3) если найдена статья на русском, пиши оба варианта, иначе только на английском 4) если не найдено - лезем за переводом (куда-нибудь? multitran?) и пишем его как fuzzy 5) если файл не закончен, goto 1. К тому, что боты не переведут, нужно уже специалистов подключать... РоманСузи 14:03, 4 января 2015 (UTC)[ответить]

Воройский

Подготовил, пока, страницу «Проект:Информационные технологии/Литература/Воройский, 2003». --OZH 10:30, 20 декабря 2014 (UTC)[ответить]

Справочное руководство «Компьютеры»

Есть ещё:

Хеллерман Г. и др. Компьютеры. Справочное руководство. В 3-х т.. — Пер. с англ.. — М.: Мир, 1986.

У меня есть только первые два тома. Третьего тома не видел. --OZH 19:15, 29 декабря 2014 (UTC)[ответить]

WANTED: По компьютерной графике

В теме компьютерной графики особенно острый недостаток в словниках на русском (в статьях пишут английскими, например: Рельефное текстурирование). Надежды найти мало, но всё-таки. РоманСузи 21:17, 3 января 2015 (UTC)[ответить]

Краткое описание информатики

Кстати, для подтемы информатика в англовики есть готовое краткое содержание: en:Outline_of_computer_science. У нас списков, конечно, не любят но может быть как-то поможет. РоманСузи 15:06, 24 января 2015 (UTC)[ответить]

2010 Mathematics Subject Classification

И ещё один источник таксомонии (правда, на английском): 2010 Mathematics Subject Classification. Информационных технологий касается краешком: например, классификация алгоритмов 65-XX, computer science 68-XX. (Интересно, что они раз в десять лет пересматривают классификацию). РоманСузи 15:25, 24 января 2015 (UTC)[ответить]

Из книги «Введение в теорию языков программирования»

Книга: Довек Жиль, Леви Жан-Жак. Введение в теорию языков программирования. — М.: ДМК Пресс, 2013. — 134 с. — ISBN 9785940749134. Добавил небольшой словник после некоторой обработки: Проект:Информационные технологии/Словники/Введение в теорию языков программирования. РоманСузи

Навигация по вычислительной науке

Предлагаю пересмотреть набор навигационных шаблонов по ИТ.

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

Такой набор имеет кучу недостатков:

1) Он избыточен. Много мелких нав.шаблонов - это всё равно что никакой навигации. Если, находясь, скажем, в статье "типобезопасность", я не могу быстро найти ссылку на "параметрический полиморфизм первого класса", то я должен либо крутить статью в её поисках, либо набирать название в ручную. В некоторых случаях дополнительно приходится пользоваться поиском или разрешать дисамбиги. Т.е. вместо прямой навигации мы имеем чистый гуглёж.
2) Он не полон. Отсутствует какая бы то ни было навигация по тематике ООП, по лямбда-кубу и теориям типов (обратите внимание, что "у них" шаблон зовётся "type systems", а не "data typing", т.е. теории типов в него не вклеить), по организации памяти ЭВМ. "Стратегии вычисления" - узковатый список, по параллелизму и управляющим конструкциям навигация отсутствует.

Сочетание двух этих свойств уже плохо: "что не надо - сделано; что надо - не сделан Википедия:Форум/Вниманию участников#Шаблон НП". Но это ещё не всё.
Шаблон "типы данных" имеет собственные недостатки:

3) иная структура: он не вертикально-боковой, а подвальный. Прежде всего, это как-то отрывает его от "систем типов". Далее, подвальная таблица хороша, когда список в ней настолько широк и иерархически сложен, что вертикальные не справляются. В данном же случае мы видим, что она не только абсолютно плоская, даже не требующая каких-либо свёрток, но к тому же верхняя её половина справа пустует, и заполнять её ровным счётом нечем, т.е. это лишняя трата экранного пространства.
4) верхняя строка не имеет никакого отношения к нижним. Я ни разу не встречал контекста, где бы одновременно фигурировали монады и нибблы, или рекурсивные типы и биты. Это потому, что эта верхняя строчка собирает темы, связанные вовсе не с типами в абстрактном (теоретическом) понимании, а с машинным представлением типов. Причём список ещё и не полный: в нём, например, отсутствует "выравнивание (alignment)", но в такой шаблон его вставить тем более трудно: в верхнюю строчку было бы некорректно, а в нижнюю - опять же будет диссонировать с конструкторами типов.

Я предлагаю отказаться от копирования английской структуры навигацию и продумать её с нуля. (Глядишь, со временем можно будет и "им" предложить новое решение). Проект нового набора шаблонов в моём черновике:

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

Прошу оценить идею, рассмотреть предлагаемые эскизы, указать на ошибки, предложить дополнения.Arachnelis 08:08, 5 декабря 2014 (UTC)[ответить]

  • @Arachnelis:И эти узкие предлагаете ставить в начало статьи? Так добавляется много "прямо не относящейся" к объекту статьи информации. Съедая полезное пространство для текста/изображений + недовольство длинными шаблонами часто поднимается на форумах (недавний пример Википедия:Форум/Вниманию участников#Мегакарточки на пустых страницах, уже упомянутое Википедия:Форум/Вниманию участников#Шаблон НП , Википедия:«Болезни» википедистов#Шаблонность мышления). Вашу структуру разносит до непонятности в мобильной версии. Что-то по оформлению можно подчерпнуть отсюда en:Wikipedia:Navigation templates. ~Sunpriat 06:12, 9 декабря 2014 (UTC)[ответить]
    • Аналогия с географией совершенно не в тему: в статьях о программировании рисунки не встречаются. И речь не о пустых таблицах «ради самих таблиц», а о навигации. Я не изобрёл велосипед: есть, например, Шаблон:Парадигмы программирования. Что же касается «отношения информации к объекту статьи», то повторяю вопрос: ваши конкретные замечания по навигационным спискам? Я собрал то, что я соотношу тесно, и что мне частенько приходится набирать вручную при разборе некоторой темы. Узколобый подход "Ничего не хочу знать кроме того, что непосредственно запросил" - дело субъективное, читать никто не заставляет, а запрещать любознательным права нет, Вики - это по определению собрание информации. Что там в мобильном исполнении — не ко мне, а к разработчикам движка, я мобильный интернет не признаю религиозно. Если с вертикальными шаблонами есть технические проблемы — так и скажите, я подумаю, как сделать эти таблицы горизонтально. Arachnelis 09:37, 9 декабря 2014 (UTC)[ответить]
  • Крайне любопытно, но… тут и вправду придётся действовать «с нуля». Мне очень импонирует, когда в книге приводится предметный указатель. Нам, в Википедии, не помешает иметь некий аналог предметных указателей. Другое дело, что у нас есть страницы разрешения неоднозначностей и навигационные шаблоны. Навигационный шаблон не так просто составить. Попытка участника Arachnelis поучительна: есть о чём размышлять. Спасибо. --OZH 20:32, 9 декабря 2014 (UTC)[ответить]

Статьи о языках программирования

Было бы неплохо иметь в Википедии качественные статьи, посвящённые языкам программирования. Я предлагаю использовать для написания таких статей одну и туже структуру, которая приводится ниже. Смысл предлагаемой структуры в том, чтобы, во-первых, задать общий стиль оформления, в-вторых, максимально упростить и упорядочить написание самих статей (всегда будет ясно, что и где писать, а само изложение всегда будет заранее нейтральным), и, в-третьих, упростить написание сравнительных статей (если, конечно, речь идёт о значимых сравнительных статьях, вроде статьи «Сравнение C Sharp и Java»). В моих ближайших планах — работа над статьями, посвящённым таким языкам программирования, как

«C++»
«C Sharp»
«Java»

Я предлагаю организовать команду для совместной работы над этими статьями. Цель — написать к Новому году три качественные статьи, обладающие энциклопедической полнотой и точностью изложения. В одиночку такие статьи не пишутся. Заодно, следует обратить внимание и на другие языки программирования, и на другие статьи, посвящённые информационным технологиям. --OZH 05:29, 21 ноября 2013 (UTC)[ответить]

Раз уж предлагается такая массивная работа над статьями, давайте в качестве ещё одной конечной цели возьмём достижение статуса хорошая, а потом избранная. ~Нирваньчик~ øβς 10:09, 21 ноября 2013 (UTC)[ответить]
Создал ВП:ИТ для сбора рекомендаций. ~Sunpriat (обс) 16:18, 23 ноября 2013 (UTC)[ответить]
Попробую в пятничный вечер выделить туда из обсуждения черновой вариант. ~Sunpriat (обс) 19:36, 27 ноября 2013 (UTC)[ответить]

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

«Erlang»

При этом попробую всё-таки придерживаться выработанной структуры (не уверен, что дословно), о которой мы здесь почти договорились. @Нирваньчик: надеюсь, что будет по крайней мере хорошая статья. РоманСузи 20:41, 23 ноября 2013 (UTC)[ответить]

Erlang

  • Спасибо, исправил о функ. парадигме. Структуру можно попробовать на другом языке, для которого еще нет хорошей статьи (работа над Erlang несколько измотала). РоманСузи 18:25, 22 марта 2014 (UTC)[ответить]
  • Если хотите, можете помочь мне с переводами "фундаментных" статей (значения, типы, операторы и т.п.). Я сам на них отдыхаю от "ЯОП" третий месяц. Работа ненапряжная, а пользы для проекта не меньше, к тому же много нового для себя узнаётся, но главное, что это поможет устранить дублирование текста по статьям. Arachnelis 08:50, 26 марта 2014 (UTC)[ответить]
  • У меня в личке - могу разместить отдельным подразделом здесь, или скажите как оформить по правилам. Я не выкладывал потому как особо не надеялся, что кто-то возьмётся. Сам я иду по списку снизу вверх, желающим помочь предлагаю идти сверху вниз. Arachnelis 13:10, 26 марта 2014 (UTC)[ответить]

Типовая структура статьи

1

Структура статьи в целом должна содержать следующие разделы:

  1. История [языка программирования] — раздел, содержащий обзор истории развития языка (историю создания языка, историю стандартов и историю компиляторов).
  2. Введение в [язык программирования] — обзорный раздел, содержащий общую характеристику языка, и который сожжет быть написан как аннотация к основному тексту статьи.
  3. Синтаксис [язык программирования] — раздел, содержащий описание основных синтаксических конструкций.
  4. Элементы [языка программирования] — раздел, содержащий описание основных изобразительные средства, которые предоставляет язык (встроенные типы переменных, структуры, функции)
  5. Реализация [языка программирования] — раздел, содержащий описание того, какие именно реализации (компиляторы) есть и что является «комплектом поставки» (библиотеки подпрограммы, библиотеки классов и прочее)основных этапов создания программ на рассматриваемом языке программирования (например: кодирование, компиляция, трансляция, сборка).
  6. Программирование на [языке программирования] — раздел, содержащий описание того, какие парадигмы программирования поддерживает рассматриваемый язык программирования, а, также, в целом описание того, каковы изобразительные средства имеет рассматриваемый язык программирования для решения прикладных задач.
  7. Применение [языка программирования] — раздел, содержащий описание того, для решения каких прикладных задач используется рассматриваемый язык программирования (например, системное программирование, программирования под Windows/Unix и т.д. и т.п.).
  8. [Язык программирования] и другие языки программирования — раздел, содержащий описание всех связей языка программирования с другими языками программирования:
    Связь с другими языками программирования — раздел, содержащий исторические связи с другими языками программирования (в частности, влияние одного языка на другой).
    Сравнение с другими языками программирования — раздел, содержащий анализ сходства и различия рассматриваемого языка программирования с другими языками программирования.
  9. Примеры на [языке программирования] — раздел, в котором приводятся примеры, призванные продемонстрировать наиболее важные аспекты рассматриваемого языка программирования.

Это — лишь некоторый набросок, и я буду ещё уточнять его. Я оформлю предполагаемую структуру на отдельной подстранице проекта, где и вы сами сможете что-либо добавить, уточнить или, наоборот, убрать. Я хочу сделать эту заготовку таким образом, чтобы провести ревизию основных понятий, связанных с программированием, проверить отражение этих понятий в статьях Википедии, и, затем, существенно их улучшить, полностью прояснив для себя что и каким образом надо описывать в Википедии. --OZH 05:29, 21 ноября 2013 (UTC)[ответить]

  • Рекомендую посмотреть избранную статью по языку программирования Python на предмет неотраженных в данной схеме пунктов (типы данных, семантика, библиотеки, разработка языка) и относительного порядка разделов. Кроме того, не все разделы следует жестко фиксировать. У Python есть признанная философия, а у Java — возможно она так не называется. В целом я за стандартизацию и предложенный вариант. РоманСузи 06:43, 21 ноября 2013 (UTC)[ответить]
    • Да, в статье Python можно найти многое из того, чего хотелось бы иметь в статье о любом языке программирования. --OZH 11:57, 21 ноября 2013 (UTC)[ответить]
    • Я привёл только разделы верхнего уровня. Типы данных, семантика, библиотеки — это всё — должно располагаться на следующих уровнях. Если каждый такой объект рассмотрения найдёт своё место в предлагаемой мною схеме, то хорошо. Если схема окажется в чём-то искусственной, то откажемся от искусственности. --OZH 11:57, 21 ноября 2013 (UTC)[ответить]
      • Не совсем понимаю, почему элементы не относятся к синтаксису? Какие средства кроме синтаксических могут быть? Визуальные оболочки? Также такое важное на мой взгляд замечание: заголовки структуры верхнего уровня должня хорошо смотреться и в виде отдельных статьей. Как минимум, я бы убрал Элементы и назвал раздел Синтаксис и семантика. КРоме того, реализация на мой взгляд слишком близка к началу. Можно ее немного вниз сдвинуть. РоманСузи 14:26, 21 ноября 2013 (UTC)[ответить]
        • Очень хорошая мысль про отдельные статьи! Я так и думал. Не стоит бояться некоторого дублирования, тем более, что статья про язык программирования — это б-о-оольшой обзор, и было бы самонадеянным отделаться парой строк там, где в источниках написаны целые главы (а то и целые книги!). Но у каждой статьи в Викиепдии свой предмет. Вот и у раздела статьи тоже должен быть свой предмет. Синтаксис — это набор тех средств, при помощи которых программист вводит те объекты, которые ему нужны. Таким образом, в разделе про синтаксис мы описываем, например, как определить класс, а в разделе про элементы описываем классы как таковые. Вполне возможно, что разделение синтаксиса и семантики несколько притянуто за уши, но я хочу попробовать их развести (что, мне кажется, более отвечает энциклопедичности) и посмотреть, что получится. А аргумент про отдельные статьи — это ещё один аргумент в пользу разделения синтаксиса и семантики. --OZH 10:49, 22 ноября 2013 (UTC)[ответить]
        • Как примеры элементов, не имеющих отношения к синтаксису: ленивость и типизация Хиндли-Милнера. Arachnelis 09:52, 23 ноября 2013 (UTC)[ответить]
        • Новые объекты программист вводит далеко не только при помощи синтаксиса. Между "int a = 5;" и "(define a 5)" разница существенная, и кажется сугубо синтаксической лишь по незнанию. Arachnelis 09:55, 23 ноября 2013 (UTC)[ответить]
    • Да, про Python весьма неплохая статья. Arachnelis 10:49, 23 ноября 2013 (UTC)[ответить]
  • а где раздел про краткий обзор имеющихся библиотек? я про наличие хороших библиотек для той или иной области применения. например, если язык не имеет библиотеки для работы с базами данных, то для работы с ними (каким бы он не был замечательным) он будет с практической точки зрения бесполезен. потому что, на практике, мало какой менеджер отвечающий за проект согласится специально выделить время разработчикам для написания отсутствующих библиотек. то же самое и с другими областями практического примения(Idot 10:14, 21 ноября 2013 (UTC))[ответить]
    • Тут вопрос в том, являются ли библиотеки частью реализации. Часть функций являются реализацией стандарта. Некоторые библиотеки поставляются с конкретным компилятором. Я предполагаю упоминать библиотеки в трёх разделах: Реализация [языка программирования], Программирование на [языке программирования] и Применение [языка программирования]. Но это всё будет ясно, когда я попробую уложить в эту схему статью «C++». Также не вижу ничего предосудительного в том, чтобы в статье существовал раздел, в котором говорится, что такой-то вещи в данном языке программирования нет. Это тоже важная энциклопедическая информация: раз нет, то и бессмысленно искать. --OZH 11:57, 21 ноября 2013 (UTC)[ответить]
      • В статье про Go так и написано: «В Go отсутствуют такие возможности как: …» РоманСузи 20:51, 24 ноября 2013 (UTC)[ответить]
      • Наиболее значимые библиотеки должны быть в статье. Насчет «отсутствует», то, наверное, следует заострять внимание только на самые яркие вещи (множественное наследование в Java, goto в Python, …). Было бы хорошо, если бы во введении были указаны принципы проектирования языка — какие цели стояли перед разработчиками. РоманСузи 14:26, 21 ноября 2013 (UTC) Попробую сделать анализ структур существующих статей о языках программирования де-факто в Википедии. РоманСузи 14:31, 21 ноября 2013 (UTC) Проанализировал: "введение", "элементы" и "программирование" не встречаются — предлагаю заменить. О парадигмах можно в преамбуле, элементы - наверное в синтаксис. Мой вариант выглядел бы так:[ответить]

2

См. Участник:РоманСузи/Структура статьи по языку программирования

  1. История (в том числе влияние других языков на данный)
  2. Философия, Основные принципы/концепции, Обзор, Парадигмы программирования или т. п., где среди прочего описываются цели создания, теоретические основы и тп
  3. Основные понятия (подразделы в зависимости от количества материала: семантика, элементы: алфавит, лексемы; синтаксис, структура программы, структуры данных, определения, выражения, операторы, директивы, области видимости, пространства имен, модули, пакеты и т.п.)
  4. Библиотеки (здесь о стандартной библиотеке и об устройстве библиотек вообще, включая средства дистрибуции)
  5. Реализации, в том числе связь с аппаратными реализациями (если есть), портируемость
  6. Программирование и среды разработки (о стиле, документировании, тестировании, а также наиболее значимых инструментах)
  7. [Язык программирования] и другие языки программирования
    Связь с другими языками программирования (встраивание, использование библиотек, влияние и т.п.)
    Сравнение с другими языками программирования (возможности, производительность, тренды, распространение и т.п.)
    Критика (иначе участники все равно будут упорно это добавлять и будут правы)
  8. Применение (в том числе приложения и библиотеки, которые сделали язык популярным. Например, Ruby on Rails для Ruby).
  9. Версии и стандарты
  10. Примеры кода, Hello, world и т.п. (если статья маленькая - иначе при разборе синтаксиса-семантики выше)

Тем не менее, в зависимости от языка могут потребоваться и другие разделы. Например, Perl имеет раздел о поэзии. РоманСузи 19:42, 21 ноября 2013 (UTC) Пожалуйста, заметьте, что я попытался сделать структуру на основании того, что фактически делается в Википедии, чтобы предлагаемая «стандартизация» была более консенсусной. Кроме того, чтобы из названий было в основном ясно, о чем где писать. РоманСузи 19:47, 21 ноября 2013 (UTC) Есть такая книга "Профессиональное программирование. Системный подход" Игоря Одинцова. Там все так хорошо разложено по полочкам, что выдумывать ничего не нужно: классификация, характеристики, семейства языков и т.д. РоманСузи 19:59, 21 ноября 2013 (UTC)[ответить]

Думаю, это хороший ход - посмотреть и отчасти заимствовать структуру из печатных изданий (можно сюда выписать «полочки» из Одинцова?), или, для начала, список книг-аи, в которых можно посмотреть структуру. Стоит поискать обсуждения в en-вики и учесть оформление их статусных статей, чтобы проще ориентироваться после перехода по интервикам. ~Sunpriat (обс) 08:17, 22 ноября 2013 (UTC)[ответить]
  • У Одинцова нет конкретно по языку программирования, скорее у него хороший материал для структурирования знаний по программированию вообще (и он дает первоисточники) (в Википедии со структурирование знаний на тему программирования большая проблема!). Но для примера приведу Языковые абстракции:
  • Абстракция данных
  • Абстракция управления
  • Абстракция модульности
В статьи их можно называть так или эдак, но все три вида абстракций должны быть в статье. Кроме того, где-то нужно описать характеристики языков: уровень языка, мощность, концептуальная целостность, и другие (надежность, удобочитаемость, полнота, гибкость, переносимость, эффективность реализации и т. п., место в эволюции языков, классификация: по поддерживаемым методологиям (императивное, ФП, ООП, логическое, в ограничениях), принадлежность к семействам (универсальные, уникальные, параллельного программирования и т. п.), по ориентации на предметные области (от языков разметки до языков описания аппаратуры), по степени абстракции от аппаратуры (низкий — ассемблер, и выше). Конечно, эта классификация — творение одного автора, но я не видел попыток столь грандиозной классификации, и кроме того, эта классификация не является его исследованием: он обобщает источники. РоманСузи 09:12, 23 ноября 2013 (UTC)[ответить]
Как раз хорошая абстракция - это когда абсолютно невозможно из контекста использования понять, что это - данные, или методы, или ещё что. А "Сравнение с другими языками программирования" и "Критика" - порой могут тесно пересекаться (в случае с С++ это вообще одно и то же), так что лучше, как в статье про Python - "критика" входит в состав "сравнения". Попробуйте поглядеть на моё творение: Предметно-ориентированный язык - это, конечно, набросок, но, надеюсь, поможет. Arachnelis 10:49, 23 ноября 2013 (UTC)[ответить]
Возможно, я не совсем точно донёс смысл абстракций. «Хорошесть» абстракции, конечно, можно понимать по её близости к спецификации результата (и отдалении от вопроса «как»). Однако, от этого наша задача по описанию языков программирования не облегчается: языки остановились на определённых методологиях и в статье по C рассуждения о концепциях обобщённого программирования с крутыми абстракциями едва ли будут хорошо восприняты. Критика может быть и в составе сравнения, но межъязыковая критика — это одно (и она достаточно дешева), а есть ещё критика внутреннего развития. Например, разработка от Python 2 к Python 3 была отчасти вызвана критикой Python 2. То есть, когда сам автор языка и сообщество осведомлены о проблемах. РоманСузи 15:43, 23 ноября 2013 (UTC)[ответить]
Со сказанным по большей части согласен. Единственное - в Си средства абстрагирования особо и не претендовали на то, чтобы быть качественными и сильными - он же разработан в качестве кроссплатформенного ассемблера, а тут не до абстракций. Arachnelis 16:12, 23 ноября 2013 (UTC)[ответить]
IDE (если есть) там же где и стандартные библиотеки? (так как, после распространения визуальных средств разработки, нередко на них завязан) Idot 10:56, 22 ноября 2013 (UTC)[ответить]
Я стараюсь максимально развести разнородные аспекты и советую другим тоже избегать смешения. Выводить библиотеки и среду разработки на верхний уровень в статье о языке — не очень удачная идея. Я же предлагаю найти оптимальную структуру. Но об этом всём довольно трудно разговаривать без живого примера. Надо будет сначала посмотреть, как это будет выглядеть на практике, а то многие вопросы возникают из-за того, что наши рассуждения — это рассуждения из общих соображений. Постараюсь за выходные переписать статью «C++» по новой форме, и тогда наш разговор станет предельно предметным. --OZH 11:09, 22 ноября 2013 (UTC)[ответить]
  • Это может быть и так, но следует учитывать, что статья про С++, Java — монстры. Если ставить более общие цели, то иерархию стоит продумывать с расчетом и на языки, по которым будет написано не так много. Кроме того, структура статьи не должна вызывать удивления — иначе люди заблудятся в ней. Поэтому я и предложил свой вариант, в котором минимум искусственных авбстрактных структурообразующих пунктов. Например, у Вас есть Элементы и есть Синтаксис. Я посмотрел в книжках и руководствах по языкам — элементы языка — это алфавит, лексемы и т. п., то есть, это тесно связано с синтаксисом, а не с функциями и т. п. Разумеется, можно придумать какую угодно структуру для статьи, но легче всего люди (как редакторы, так и читатели) будут воспринимать что-то знакомое, узнаваемое. Например, а какие библиотеки есть для языка и откуда их получать? А какие циклы и вообще основные конструкции? (синтаксис) И в длинной статье оглавление служит этой цели (без примечаний типа «раздел, содержащий описание того, какие парадигмы программирования поддерживает…»). И т. п. С другой стороны, редактор, который хочет дополнить статью, должен как можно более однозначно найти нужную полочку в структуре. Заметьте, что я не хочу затягивать обсуждение - но в предложенной Вами структуре есть 3-4 проблемы, которые я указал. РоманСузи 08:36, 23 ноября 2013 (UTC) PS. Скопируйте в личное пространство C++ и перекидайте материал крупноблочно в соответствии с предложенной Вами структурой - это уже много даст для размышления. РоманСузи 08:40, 23 ноября 2013 (UTC) Не заметил Вашей последней фразы: конечно, перепишите на месте — это статью не испортит! РоманСузи 09:15, 23 ноября 2013 (UTC)[ответить]
    • Вы всё правильно пишете, даже то, что я ещё не написал, но ещё подразумеваю. И, конечно, я не буду вводить какие-либо дополнительные разделы без чёткого понимания того, что должно быть в вводимых мною разделах. Проблема написания статьи про «C++» заключается в необходимости сначала написать статью про «Си». Я посмотрел статью про «Си» и обнаружил, что это ещё только заготовка статьи о языке программирования, и, в первую очередь, необходимо описать аспекты, связанные с языком программирования «Си», и уже при написании статей, связанных с языком программирования «C++» существенным образом опираться на уже существующие статьи по «Си». Наиболее важный аспект — это синтаксис, с него и придётся начать в первую очередь. --OZH 09:41, 23 ноября 2013 (UTC)[ответить]
    • Попробуйте с вашим подходом к структуре языка изучить Рефал. Для того, чтобы начать писать на нём, вики-статьи хватает, а мощь языка колоссальна - парсер Виртовского Паскаля пишется out-of-a-box (т.е. безо всяких сторонних библиотек) играючи за полчаса-час. Однако, все опытные программисты на императивных языках, которых я наблюдал, приходят к выводу "у меня нет такой травы, чтоб понять". Arachnelis 11:19, 23 ноября 2013 (UTC)[ответить]
      • Понятно, что Лисп или Forth имеют простой синтаксис. Тем не менее, структура статьи от этого может и не зависеть (только пропорции объёма разделов), так как Основные понятия будут расти на более крупноблочных конструкциях кода. Какой «универсальный» (это короче, чем каждый раз «общего назначения») язык ни возьми, в нём будут «вырастать» «идиоматические» решения, адекватные решаемым задачам. Парсер напишется ещё быстрее на специализированном языке или при помощи специализированной библиотеки в универсальном, и что теперь? Сложность никуда не девается. Когда я предлагал свою структуру, я рассматривал структуры статей по разным языкам, в том числе и Лиспу (про Форт забыл, но там структура весьма посредственная). Есть ещё такой момент. Если бы статья в Википедии была учебником, то абстракции управления и данных следовало бы рассматривать параллельно, по нарастанию сложности. В статье Википедии порядок может быть иным, так как здесь можно раскладывать по полочкам и делать ссылки. Цель настоящей дискуссии выработать типичную структуру, чтобы редакторы могли на неё ориентироваться. РоманСузи 16:14, 23 ноября 2013 (UTC)[ответить]
        • К разделам "история", "реализации" и т.п. претензий нет. Но это всё окружение, вода, так сказать. Вот "мясцо" - это проблема. Возможно даже, проще окажется для него не задавать единую структуру. Возможно, будет резонно пересекать описание сразу с критикой (описали множественное наследование классов, и сразу объяснили связанные с ним сложности). Arachnelis 20:55, 23 ноября 2013 (UTC)[ответить]
        • Они "там" не ленятся всегда писать "general purpose". Я нигде, ни разу, ни в одной самой замшелой статейке не встречал словосочетания "universal programming language". Даже специально гуглом проверил — нашёл лишь один мутный проект "язык мечты UPL" (Universal Programming Language), где авторы целенаправленно взялись за это гиблое дело. Больше никто эти слова рядом не ставит. Предлагаю отвыкать, а в статье "Язык общего назначения" мельком приписать, что дескать "в угрёбищной русской литературе можно встретить такой неправильный термин".Arachnelis 11:10, 27 ноября 2013 (UTC)[ответить]
  • Кстати, в книге по Эрлангу, которую я сейчас читаю (Cessarini et al. Erlang Progrmming) в разделе о сравнении С++ и Erlang, если замечательные слова к нашей дискуссии:

When comparing programming languages, however, you must benchmark whole systems in the application domain for which those languages were designed, not code snippets or simple functions.

РоманСузи 10:44, 24 ноября 2013 (UTC)[ответить]

    • Разумеется. На хеллоуворлдах все языки примерно одинаковы. В связи с чем я весьма негодую, что нельзя сослаться на независимый бенчмарк ЯЗЫКОВ с ffcounsultancy - там хоть и тоже не шибко большая задача, но бенчмарка на более крупной мы ещё не скоро дождёмся. Arachnelis 15:46, 24 ноября 2013 (UTC)[ответить]
      • бенчмарки нужно делить на группы: на многпроцессорный и на одном процессоре, потому что на одном процессоре и C и Forth уделают любой язык паралельного програмирования, а вот в на многопроцессорной системе - наоборот (Idot 15:52, 24 ноября 2013 (UTC))[ответить]
        • В этом есть резон. Но есть и языки, семантика которых имеет огромный потенциал к оптимизации, и для таких языков могут появляться компиляторы, способные утереть нос всем остальным на любой машине. Пример - компилятор MLton для SML, доказательство - на ввв-ffconsultancy-дотком/languages/ray_tracer/ Arachnelis 11:10, 27 ноября 2013 (UTC)[ответить]
  • В наших структурах отсутствует (или неочевидно), в каком разделе описывать вопросы, связанные со стилем программирования (style guide), тестирование, документирование, профилирование и т. п. периферийные темы, которые тем не менее являются очень зависимыми от языка и для полноты изложения требуют упоминания. В своей структуре добавил к средствам разработки. Встретился с этим, уже почти заканчивая статью Erlang к (надеюсь) подходящему для избранной статьи виду. РоманСузи 06:49, 2 декабря 2013 (UTC)[ответить]
    • В "неформальном описании" - оно как раз и подразумевает определение элементов с немедленным рассмотрением возможностей их использования. Arachnelis 13:15, 8 декабря 2013 (UTC)[ответить]

3. Трудности структуризации

Раздел «Введение» и раздел «Программирование на [языке программирования]»

Пришёл к следующему выводу: очень нужен обзорный раздел, предшествующий описанию синтаксиса, реализации и примеров применения языка, и содержащий краткий обзор того, что же это за язык и с чём его едят, какие стили, подходы и парадигмы он поддерживает. Отсюда вытекает и назначение раздела «Программирование на [языке программирования]»: в таком разделе следует описывать то, какие задачи решаются при помощи описываемого языка программирования, и какие изобразительные средства (как на уровне синтаксиса, так и на уровне реализованных библиотек функций и/или классов) предлагает рассматриваемый язык программирования. Этот раздел было бы удобнее оформить в виде тематических блоков, соответствующих решаемым задачам. --OZH 09:53, 23 ноября 2013 (UTC)[ответить]

Раздел «Возможности»

У меня пока затык в другом месте. Пока что не нашел ничего лучшего, чем использовать раздел Возможности (как это сделано в статье Python) для «изюминок», о которых говорят источники по Erlang. Подумываю добавить к структуре. РоманСузи 14:26, 24 ноября 2013 (UTC)[ответить]

4. Подструктура неформального описания

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

== Язык ==
=== Общая характеристика ===
==== Философия, идиоматика, идеология ====
==== Поддержка верификации программ ====
==== Результативность разработчиков ====
=== Система типов ===
=== Значения и модель вызова ===
==== Конкурентность ====
=== Абстракция данных ===
=== Абстракция функций и полиморфизм ===
=== Модульность, инкапсуляция, проектирование ===
=== Метапрограммирование ===
=== Синтаксис и синтаксический сахар ===

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

=== Модульность, инкапсуляция, проектирование] ===
С++

В С++ нет специальных средств обеспечения модульности и инкапсуляции, их роль играют средства абстракции данных. Дополнительно доступна конструкция выделения пространства имён, позволяющая нестрого инкапсулировать глобальные и статические определения в идентификаторе, полностью устраняемом в процессе трансляции. С++ не поощряет "проектирование прототипированием", как ML, Haskell или Erlang. При использовании в разработке С++ становится очень важным внимательно продумать все детали архитектуры перед началом собственно кодирования (см. Waterfall), и для этой цели традиционно применяется UML. Ошибки, допущенные при проектировании, обходятся дорого (цитата Линуса Торвальдса). нет отделения интерфейса от реализации, всё описывается в едином публичном блоке кода и изменения требуют рекомпиляции всего проекта (Joyner, loc=3.34, с.34) бла бла бла

Standard ML

Язык ориентирован на разработку больших и сложных программных систем. Для обеспечения модульности и инкапсуляции поверх ядра языка (Core Language) предусмотрена развитая система модулей, косметически повторяющая модель значений и вызовов ядра. Определения ядра инкапсулируются в структуры, а их абстрагированием можно гибко управлять при помощи сигнатур. Абстракция структур, в свою очередь, осуществляется посредством функторов, за счёт чего изменение интерфейса модуля требует перекомпиляции не всего проекта, а лишь зависимых от него функторов. В SML, как и во многих ФЯ, практикуется "проектирование прототипированием". бла бла бла

Arachnelis 08:33, 26 декабря 2013 (UTC)[ответить]

Забыл добавить, что у такой структуры есть одно преимущество с т.з. тех, кто со мной не согласен, и одно с т.з. тех, кто меня поддерживает.
Второе - это то, что и сама наукообразная структура, и страшные слова в ней, скорее всего, отпугнут большинство быдлокодеров, что обеспечит статьям несколько лучшую стабильность. Например, перегрузка операторов в С++ здесь имеет строго определённое место - как средство ввода синтаксического сахара в программу - а не размазывается по нескольким параграфам, будто бы на ней свет клином сошёлся. Определённое строго место полиморфизма также не даёт права на типичную для Алголоподобных языков ложь в этом вопросе (ибо полиморфизм - это значит полиморфное поведение, т.е. единообразное использование разнотипных данных; данные же полиморфными не бывают).
Первое же преимущество - то, что в спорном разделе "Достоинства и критика" отпадает нужда. Выделение в шаблонную структуру языковых (а не синтаксических) элементов поощряет к тому, что особенности их реализации будут неотъемлемо зашиваться в текст со ссылкой на идейные предпосылки к их появлению и к хронологии их наследования из языков-предков. Что и даст нам эту вашу непредвзятость и нетрибунность. Например, сразу проявится, что С++ от Симулы наследован со значительными искажениями, что ООП в С++ вовсе не точно такое же, как в Симуле, да и конструкции конкурентного программирования кудай-то затерялись - недостатки выплыли, но обвинить критиков в предвзятости тут уже не удастся (зато предвзятость фанатов станет видна невооружённым глазом, если они начнут лепить оправдания или просто удалять текст). Объём и сложность статей также не будет подлежать обвинениям в предвзятости - бОльший объём текста будет выплывать лишь из объективной сложности самого языка - и тогда не придётся ни критиковать, ни вкручивать формулировки типа «расплаты за то-сё» - читатель из холодного энциклопедического текста сам увидит, что язык А тяжелее в использовании, чем язык Б, потому что надо следить за бОльшим числом деталей, и сам сделает вывод, является ли скорострельность веским оправданием за это.
Если в конкретном языке напрочь отсутствует что-то из этой структуры - раздел не убирается, а в нём прямо и пишем об отсутствии. Для HTML/XML в разделе "Значения и модель вызова" указываем, что язык не Тьюринг-полный, так что никаких вызовов нет. Для VB/Delphi в разделе "Метапрограммирование" пишем, что возможности МП в самом языке отсутствуют, зато IDE накатывают поверх него всякие GUI-билдеры, ORM и прочую лобудистику, как слабые формы порождающего программирования. Для Эрланга или Рефала их ключевые особенности, очевидно, попадут в "Значения и модель вызова" - т.о. экзотические языки не будут нарушать строй статей. Для каждого метаязыка в разделе "Метапрограммирование" первой строкой пишем, что он для него непосредственно и предназначен, второй - что компиляторы для любых языков на нём пишутся как два пальца обосфальт, в следствие чего bootstrap весьма распространён.
Для С++ философия не размазывается по каждой строчке - можно чётко написать, что это один из немногих языков, где автор диктует помимо самого языка ещё и правила его применения, но его советы не всеми соблюдаются, так что общая идеология С++ размыта. Каждый элемент языка определяется "как есть", и какие бы демагогии не подписывались фанатами, утаить отличия от аналогов в других языках не удастся, равно как и степень необходимости/лишнести. Унаследованные от Си элементы С++ выбросить из рассмотрения оказывается невозможно - каждый упоминается как унаследованный, и если это наследие для данного элемента оказывается "тяжёлым", то от этого тоже никак не уйти. Например, в "Значения и модель вызова" пишем так: «В С++ доступны call-by-value и call-by-reference, выбор для каждого контекста осуществляется программистом явно. Кроме того, в определённых случаях при вызове функции осуществляется копирование параметра (вызов конструктора копирования), после чего копия передаётся по ссылке. В Си был только вызов по значению и для эмуляции вызова по ссылке использовался специальный тип - указатели. С++ унаследовал и их, в результате чего модель вызова утратила очевидность при использовании (в одних случаях приходится искусственно избегать копирования объекта, в других, напротив, явно создавать временный объект)» - и поднимите руки, кто может оспорить такую формулировку. Про раздувание кода полиморфизмом - непредвзято уже написано в статье "полиморфизм", так что "спор ссылок" о том, значительно это раздувание или терпимо, становится бессмысленным: в С++ оно просто есть, а в некоторых других языках (даже в Си) его нет.
Эволюция С++ опять же станет видна объективно (сиречь как недостаток), без иезуитской демагогии про «да, раньше было плохо, но теперь всё будет по-новому». Лично я считаю, что в энциклопедии изложение должно идти в стиле "о вечном". А это значит, что надо писать, что С++ является непрерывно эволюционирующим языком, т.е. пока он жив, всегда будут проблемы обратной совместимости, и всегда будет необходимость изменять уже отлаженные программы. OCaml имеет те же недостатки - непрерывная эволюция и страшно громоздкий синтаксис - но на него и стандартов не выпускается, и реализация всего одна, портабельная подо что угодно сама по себе безо всякого стандарта. Т.е. вместо громких деклараций «вот так вы все должны писать компиляторы, но формальную спецификацию мы вам определять не будем», его разработчики определяют формальную семантику и собственноручно следят за её реализацией. Не нравится - не ешь. То же самое и в Python. И ни окамлисты, ни питонисты не станут обижаться на критику в вопросе эволюции. В С++ же сейчас изложение идёт примерно так: «вот, наконец, дождались... нет, вот, теперь наконец дождались... ой, тут придётся исправить старую проблему... нет, эта проблема определена стандартом, а значит она не проблема... а, теперь проблема устранена, можно признаться, что она была... ой, тут ещё проблема... но зато язык стандартизирован!!! И будет ещё неоднократно стандартизирован! Самый стандартный язык из всех, с чётко определёнными стандартом проблемами!».
Заметьте: в структуре не предусмотрено место для "стандартной библиотеки". Это не упущение. В С++ без STD - как в анекдоте - всё равно что опять за ЕС садиться. Зато для метаязыков её можно легко выбросить и переписать с нуля, а то и вообще обойтись без. Во многих языках (даже в Java) стандартная библиотека бутстрапится над языком, который в голом виде почти ничего не умеет, зато является целостной самодостаточной системой. Кроме того, одни и те же возможности в одних языках зашиты в примитивы (и при выбрасывании примитивов никак обратно в язык не вводятся); в других воплощаются естественным образом (т.е. при выбрасывании примитивов или стандартных библиотек тут же воспроизводятся собственноручно); в третьих подключаются через громоздкие библиотеки, которые адепты держат под стеклом и берегут как святыню; в четвёртых - раз за разом кодируются паттернами (т.е. нужно проектировать то, что в других языках записывается одной строкой или даже не записывается вообще, а просто подразумевается). И в каждом случае характеристики качества свои. В С++ язык темплейтов не предоставляет никаких средств для оптимизации, поэтому эффективность библиотек заведомо ограничена, и ad hoc решение в частном случае может оказаться эффективнее. И это всё важно отмечать, не позволяя перечислять "широту возможностей" STD на правах достоинств языка. Достоинством в этом смысле является низкая трудоёмкость собственноручного переписывания возможностей STD и её расширения.

Имеет смысл добавить отдельным разделом "конкурентность" подразделом в "модели вызова". В Симуле и Аде для неё есть примитивы, но С++ её не унаследовал, и надо городить городушки (проектировать то, что в других языках пишется одной строкой). В Lisp-ML-Haskell конкурентность делается при помощи продолжений. Эрланг основан на пи-исчислении, так что непосредственно под заголовком "Значения и модель вызова" пишем о данных, потом говорим, что все вызовы конкурентны, и входим в подраздел (само использование пи-исчисления в качестве основы для Эрланга раскрываем в "Общей характеристике").

Сим прошу голосовать (но только тех, кто знает чуть побольше, чем всего лишь набор одинаковых и однообразных потомков Алгола).
И ещё у меня есть отдельное предложение: для каждого (без исключения) языка в название статьи добавить постфикс «(язык программирования)», а ещё лучше - более общий постфикс «(информатика)». Имена в информатике дублируются не так часто, и в случае дисамбига разрешаются более полным наименованием, зато дисамбиги с другими сферами возникают спонтанно, и в результате сейчас "кто в лес - кто по дрова". Более того, согласно изоморфизму Карри-Ховарда (лучше на английском), proofs can be run, т.е. доказательство корректности балансирует на грани между теоретической моделью и языком программирования. Аналогичную двойственность имеют и ΤΕΧ, и денотационная семантика, и БНФ, и ещё много чего, даже M$Excel - см. DSL. Бывает, что в старых статьях появляются красные дисамбиг-полоски, ведь за всем не уследишь. С не-Тьюринг-полными языками типа XML или SQL обратная проблема - скажи "язык программирования", и найдутся негодующие. А заголовки типа «XML (информатика)» в большинстве случаев будут "раз и навсегда". Arachnelis 14:02, 26 декабря 2013 (UTC)[ответить]

  • Как-то раз я присутствовал при спора двух участников о том, какой должна быть конкретная статья (по статистике). Один городил максимально абстрактные формулы, другой настаивал на сильно прикладном подходе (они, кажется, даже умудрились править каждый свою статью на одну и ту же тему). Поэтому, не читая сильно других обоснований, считаю эти обоснования серьёзно нарушающими ВП:ПДН ("страшные слова в ней, скорее всего, отпугнут большинство быдлокодеро"). Общая направленность (насолить С++) не придаёт обоснованию веса, так как создаётся впечатление, что структура специально придумана для дискриминации C++. Будем считать, что мы пишем для обычного читателя, а ему нельзя навязывать понимание неких произвольно выбранных теоретических построений от computer science. Уверен, что язык программирования можно описать без сильной теоретизации (сам этим страдаю) и в то же время энциклопедично. Кстати, что за "конкурентность"? Это от concurrent что-ли? На русском, конечно, нет удачного перевода, но этот коробит слух. Я против и добавления "(язык программирования)" ко всем названиям - это часто излишне. Здесь предложено уже три структуры. В рецензии по Erlang рецензентом высказаны и другие мысли. Я всё больше начинаю думать, что может ли в принципе быть единая структура? РоманСузи 16:05, 26 декабря 2013 (UTC)[ответить]
    • С++ я приводил в пример как горячую тему, и постарался на конкретных частных примерах фрагментов текста показать, что как раз стараюсь максимально поднять объективность и пресечь излишне предвзятые правки (с ним проблема именно в превалировании фанатизма). Конкурентное программирование - широко используемый термин (по крайней мере, в англоязычном сообществе), и меня удивил перевод "конкуренции" в "параллельность" - почти в антоним. Некоторые названия коробят слух и по-сильнее, но мы же должны быть объективны? Про Эрланг статью ещё не глядел, посмотрю потом. Думаю накидать в личке грубые наброски пятка статей для демонстрации подхода (передеру текст из имеющихся) - пока решил предложить структуру для осмысления другими участниками. Arachnelis 17:48, 26 декабря 2013 (UTC)[ответить]
      • Собственно, противосиплюсплюсный пафос как раз и мешает воспринять структуру, так как здесь мы обсуждаем большое множество языков и такая завязка на С++ сильно искажает. По поводу concurrency — я не смог найти упоминания в солидных источниках (которые не дружат с ложными друзьями переводчика) перевода «конкуренция». Поэтому и интересно, где Вы взяли такой перевод? По существу структуры: модульность, инкапсуляция, проектирование — это так или иначе «Сокрытие данных» в той или иной степени (по Дэвиду Парнасу, если память не изменяет)? Где сферы применения и «надсистемы»? Где нефункциональные аспекты (надёжность, например)? Юзабилити? Что значит «Результативность разработчиков»? Раздел критика, как я уже где-то говорил, не упрячешь: сразу спросят, если статью выше уровня 3 пишешь. Это обычно то, что ищут и спрашивают. Как систему типов отделите от абстракции данных в энциклопедической статье (какой язык ни возьми, модель данных, управления и модель сокрытия/организации кода/данных — его определяют, но нужно ли это явно вычленять, чтобы разделить?)? Такая структура хороша для академической диссертации, но в Википедии нужно писать более просто, не с высоты башни из слоновой кости. Ещё один аспект. Структура должна не только быть эффективной «по чтению», но и писать по ней должно быть просто. Некоторые вещи днём с огнём в источникам не найдёшь. Например, с Erlang повезло — кто-то написал на тему «метапрограммирование» страницу. Но я в статью по Erlang включить не могу, так как даже при указании источника будет выглядеть ориссом, как и рассуждение целых двух гуру о том, что Erlang — самый ООПэшный язык в мире, так как именно передачу сообщений (и изоляцию), а не классы Алан Кэй (третий гуру) имел в виду главным в своих принципах ООП. Де-факто, раз уж взялись за дизайн статьи по языку программирования вообще, давайте учитывать реалии, как читателей, так и имеющихся источников. И, как я говорил, сейчас Erlang проходит рецензирование на избранную статью, и я надеюсь, что ход этого процесса будет полезен для данной дискуссии. И ещё. Куда у Вас раздел История делся? Он — самый распространённый в статьях по ЯП, на эту тему отдельные конференции проходят en:HOPL. Полагаю, что нужно взять какой-нибудь язык программирования, который приглянулся, и официально довести статью до уровня хорошей/избранной. Поэтому я пока не готов сильно спорить. От этой «горячей темы» C++ уже просто тошно. Забавно, что по многим обсуждениям у нас взгляды обычно сходятся, за исключением понимания методов работы в Википедии. РоманСузи 18:37, 26 декабря 2013 (UTC)[ответить]
        • Ну, за методы необессутьте - я таки тут новичок. Я не против использовать в рассуждениях любые примеры - можно и Питон брать, он тоже мультипарадигменный. То, что инкапсуляция и сокрытие - не одно и то же, источников много: в аспекте нашего набившего аскомину языка миф о тождественности этих понятий развеивает Джойнер, а в ФП кортежи ничего не скрывают (инкапсулируют без сокрытия). В Питоне сокрытие вообще отсутствует. Надёжность у меня есть - "поддержка верификации". Там как раз следует писать и про встроенное док-во корректности в ФЯ, и про внешние статические анализаторы. Юзабилити языка - это что? Я, уж извините, этот термин привык в иных целях использовать. Удобство и элегантность как инструмента, как я сказал, раскрываются по ходу. Сводную критику, если надо, можно и приписать - но до сих пор меня за неё ругали, так что я и постарался от неё избавиться. Стиль же изложения я не навязываю - структура призвана упорядочить изложения и защитить от "каши". Про конкурентное программирование поищу что у нас тут есть переводное (я же обычно английские работы читаю), но международный общепринятый термин, повторюсь, "concurrent programming" или "concurrency". Arachnelis 19:09, 26 декабря 2013 (UTC)[ответить]
          • Не имею в виду, что инкапсуляция и сокрытие — одно и то же. Я к тому, что сокрытие — это более общий термин, а «проявления» сокрытия в разных ЯП разные. Я просто пытался спросить, означают ли три сложенные вместе термина как раз сокрытие? Верификация — это как-то очень жёстко, если Вы имеете в виду формальная верификация. Usability of programming languages - например http://www.cl.cam.ac.uk/teaching/1213/R201/, можно погуглить, но в общем-то удобством можно назвать. Заметьте, что в этом плане стоит понимать, что, скажем, на Java код могут писать кодогенерацией из UML и т. п., поэтому кому-то может быть странным вообще постановка вопроса об элегантности синтаксиса и т. п., что важно для тех, кто пишет на языке непосредственно. О сводной критике — я даже не знаю. Ругали за обилие критики, наверное. Об английских терминах я не спорю (речь о переводе). Например, не нахожу ни одного примера или фразы, скажем, при помощи http://www.multitran.ru . Мы не можем вводить в Википедии свои переводы терминов, даже более удачные. См. также Параллелизм (компьютерные науки). РоманСузи 20:00, 26 декабря 2013 (UTC)[ответить]
  • Про раздел "История" я вовсе не забыл - напоминаю, что это были подразделы описания собственно языка, а не структура статьи целиком. Какой термин брать за основной для конкурентности - решим отдельно (кстати, Лингво тоже мне дал перевод "concurrency" как "параллелизм"), но как минимум есть смысл сделать два редиректа - "Конкурентное программирование" и "Конкурентность (информатика)" (или "Конкурентность (программирование)") - ибо раз я пытался искать именно по ним, то и другие могут. А почему сейчас "Параллелизм (компьютерные науки)", а не "Параллелизм (информатика)"? Кстати, я могу сам создавать редиректы, или лучше не стоит? Я многое поправил, приведу структуру полностью:
= Место и роль в информатике =
= История, философия, терминология =
= Критика = /или/ = Общая характеристика =
== Удобство ==
== Результативность ==
= Язык =
== [[Система типов]] ==
=== Значения и модель вызова ===
==== [[Параллелизм (программирование)|Параллелизм]] ====
=== Агрегатные типы и [[абстракция данных]] ===
=== Абстракция функций и [[Полиморфизм (программирование)|полиморфизм]] ===
=== [[Модульность]] и [[проектирование]] ===
== [[Метапрограммирование]] ==
== [[Синтаксис]] и [[синтаксический сахар]] ==
= Реализации =
= Примеры программ =
= См.также =
= Примечания =
= Ссылки =
= Литература =
"Инкапсуляцию" из структуры убрал, ибо она действительно блуждает между просто агрегатными типами и модульностью/проектированием. Но вот абстракция данных - это не во всех языках опора для модульности. Если в языке нет отдельных средств для модульности - так и запишем (и это будет повышение объективности, т.к. отсутствие не будет ускользать от внимания безо всякой дополнительной критики), а если есть - для этого нужно место. Примитивные типы не требуют отдельного раздела - при их наличии в языке они прекрасно разместятся в разделе "Значения и модель вызова", при отсутствии - в "Агрегатные типы и абстракция данных".
Характеристики качества (в т.ч. "надёжность", согласен на такой вариант, и "юзабилити") будут в разделе характеристики/критики, как бы мы его не назвали. Кстати, понятие "критика" не обязательно подразумевает "ругание" - критическая оценка бывает и положительной, а объективная критика вообще обязана в полной мере раскрывать достоинства и недостатки. Я думаю, в нём самое главное выделить характеристики при взглядах изнутри (от программиста) и снаружи (от заказчика) - зачастую раскрывается лишь первое, хотя конкретный читатель может как раз искать второе. Сложность менеджмента может отмечаться и здесь, и в "Модульность и проектирование", в зависимости от текста для конкретного языка.
Можно назначать структуру жёстко лишь на 1-2 уровне, и по мере спуска к подразделам всё лояльнее позволять их склеивать или дробить, но только в случае действительных на то оснований со стороны семантики языка. Т.е. по умолчанию структура назначается на копипасту целиком, но если в процессе заполнения её текстом неизбежно возникают неэлегантные пересечения разделов, то по итогам обсуждения нижний уровень может слегка подвигаться.
Плохо, что сейчас "Примеры программ" идут "кто в лес - кто по дрова" и изобилуют выводом строки "Hello, world". В энциклопедии гораздо показательнее и полезнее для читателя будут полноценные решения канонических задач длиной хотя бы в пол-экрана - только так можно оценить лаконичность языка. Как я уже сказал, их можно брать с shootout.debian и подобных ресурсов (ведь там их тоже не случайно выбирают, а ради объективности), и изобретать свои лишь при их отсутствии. Думается мне, что примеры лучше поместить в самый низ, чтобы текст было удобнее прокручивать, если вдруг читатель не намерен въедаться в коды. "Реализации" можно и присоединить к "истории", но выделенное перечисление компиляторов весьма удобно (история может быть громоздкой).
  • Насчёт инкапсуляции/сокрытия/проектирование добавлю показательный пример в развитие темы. В ML есть три вида модулей: сигнатуры, структуры и функторы (в Окамле дополнительно к ним ещё и классы, помощнее Smalltalk'овских). Определения языка инкапсулируются в структурах. Сигнатуры - это интерфейсы структур, т.е. модули, управляющие сокрытием определений, инкапсулированных в других модулях. Одна структура может "фильтроваться сквозь" разные сигнатуры, а "сквозь" одну сигнатуру можно "пропускать" разные структуры. Типы можно определять как прозрачно, так и с управлением видимостью (например, можно решать, допускает этот тип проверку на равенство, или нет). Так что сокрытие - это вовсе не "более общее понятие", а совершенно самостоятельное. Да, оно используется при проектировании, но не неизбежно. Вообще в ФП "принцип чёрного ящика" заменяется на "принцип абстракции", и это не одно и то же. В ФП скрывают только реализацию, а "приватные методы" практически не встречаются (вложенные функции - это другое).
    Далее, функторы - это модули, которые получают на входе (как функции) одну структуру и порождают на выходе другую. Это то, для чего в С++ придуман статический полиморфизм на шаблонах, только на порядки проще. Входной параметр функтора задаётся сигнатурой как типом, и конкретная структура на входе - как значение этого типа. Чтобы реализовать "наследование классов", надо сделать структуру, определяющую "родительский класс", и функтор, порождающий "потомка". Т.о., механизм сигнатур позволяет управлять расширением функциональности и перегрузкой (сокрытие при наследовании). Всё это независимо от полиморфизма (читать про параметрический полиморфизм), т.е. каждая функция и каждый тип, определённые в структуре, являются полиморфными сами по себе (а "полиморфизм при наследовании классов" - это на самом деле размножение неполиморфных функций). Когда в ООЯ надо создать 5 похожих иерархий классов по 5 поколений (итого 25 определений классов), эквивалентный код в ML будет содержать лишь 5+4=9 определений модулей плюс 20 копипастных строк инстанцирования, и изменения в определениях "родительских" структур не обязательно потребуют перекомпиляции всего проекта. А если эти 25 классов только для полиморфизма и делаются (как это часто бывает, особенно если предполагается вкручивать паттерн Visitor), то в ML хватит одной структуры из одного полиморфного ADT и нескольких функций над ним (в 25 раз меньше кода и проще управление проектом). Всё это по скорострельности идёт ноздря в ноздрю с С++ (это не Питон и не Хаскел), по скорости компиляции оставляет его далеко в очковой зоне, портируется без напрягов и физически не может содержать глюков. Теперь скажите мне, что я предвзят в отношении С++.
  • Вообще вы меня затроллили, я поддался и потерял тему. То, что от С++ тошнит, я сказал ещё раньше вас, но увы, отталкиваться мы таки обязаны именно от него и его братьев-близнецов Java, C#, Delphi, Php. Ибо именно от них по проекту расползается вирус безграмотности. Уверен, вам обидно, что Википедию называют Педивикией - а вы не задумывались, почему? Мне, например, в своё время стоило огромных усилий собрать информацию про то, что такое хорошее программирование - куда ни плюнь, я всюду врезался в кирпичную стену Алгольной безграмотности, везде было написано по схеме «Камаз хороший, только собаки быстро устают» (типа того, что некий паттерн изначально встроен в язык). Т.е. этот ваш ВП:ВЕС не просто перевешен, а лежит одной чашей на полу. Писать статьи по-быдлокодерски, чтобы, как вы изволили выразиться, быдлокодерам было легче их читать,- это гонять из пустого в порожнее. Я пытаюсь дать обществу ту информацию, которой в своё время аццки не хватало самому мне. Написать энциклопедию «как правильно», а не «чтобы дурачкам не было обидно» - это значит сэкономить время и силы тем, кто любознателен и усердно саморазвивается. Нерадивых же учеников надо сечь розгами. Подчёркиваю - надо, это закон морали. Тех, кто сейчас в школах двойки отменил, тоже надо высечь розгами, желательно публично. И не говорите мне здесь про непредвзятость и нетрибунность - если у них есть право приносить вред науке и обществу, то у меня равно есть право защищать науку от профанации - это и есть ВП:ВЕС. Я начинал было развивать критику, но быстро увидел, что это попытка носить воду в решете. Критика вторична, начинать надо со структуры статей, а дальше всё пойдёт естественным образом: грамотные люди легко и с радостью поддержат грамотную структуру в своих статьях, если увидят, что весы вернулись в ровное состояние. А если в сообществах сразу нескольких хороших языков возникнут одни и те же замечания к структуре статьи - мы получим адекватную обратную связь и внесём коррективы. Единая структура может спускаться сверху вниз, но не может подниматься снизу вверх - ибо писать "VB/С++/Delphi/Java-программу на Smalltalk, Lisp/ML, Forth" - это всё равно что программу с Фортрана переводить на Си, используя всё те же кружева из GOTO. То есть, да, единой структуры не будет, если писать "от простачка". Но будет, если не стесняться подкидывать простачкам ссылки на что-то, что существует за границами их маленького мирка. Нет желания изучать - не изучай, но и не называй себя потом "квалифицированным программистом". Сейчас у нас кухарки управляют наукой вместо академиков, и тем, кто мне скажет, что это и есть непредзятость, я посоветую смотреть Дару О'Бриена.Arachnelis 13:44, 28 декабря 2013 (UTC)[ответить]
  • upd: А, ещё надо операторы воткнуть. Придётся немного ещё пересмотреть - не в систему типов же их запихивать. А параллелизм, наверно, должен быть поближе к операторам. Arachnelis 14:14, 28 декабря 2013 (UTC)[ответить]
  • upd2: Сделал черновик, чтобы не писать тут структуру раз за разом: Участник:Arachnelis/PL (язык программирования) Arachnelis 14:44, 28 декабря 2013 (UTC)[ответить]
  • Извиняюсь, если затроллил. Я стараюсь только только сэкономить Ваши усилия, так как литература про «близнецов-братьев» уже пришла к общему знаменателю (я тут по ошибке добавил к статье ООП один пример… Сразу не раскусил, теперь у меня на mysafari будет месяц слот занимать), и назвать её безграмотной сложно — она просто ограничена и причина этого в сложившейся надсистеме (в ТРИЗовском смысле): пойди найди кодера на Хаскеле (даже как-то сочетание не звучит), а для C++/Java/C#/VB — целая армия за воротами стоит! Они звезд не хватают, но вполне предсказуемы. Слишком грамотные — дороги, их сложно заменять и т. д. К сожалению (или счастью), я последние N лет «братьями» не интересовался, поэтому и не заметил, что они (и литература по ним) пришли к такому единству. Учитывая, что все вместе они — подавляющее большинство, очень сложно просветительством/подвижничеством заниматься в Википедии. И структура здесь не поможет, так как даже литература по «правильным» языкам ориентируется на представление материала для тех, кто знает одного «из братьев». Теперь Вы представляете, что задача, которую Вы поставили, очень сложна и на грани выполнимости? ВП:ВЕС в этом смысле инструмент большинства, то есть с этой лысенковщиной в информатике он бороться не поможет. Надежда остаётся в этом проекте авторам прийти к консенсусу о том, что полезно, а что вредно в статье по ЯП. Но так как тут три с половиной землекопа, нужно просто писать статьи. Я (кажется) уже предлагал собрать библиографию из действительно представительных источников. Да, туда необходимо попадет и «Лысенко» (и мы не сможем не отразить эту линию), но по крайней мере будет виден ландшафт. Что же я сейчас наблюдаю, так это каждый ЯП погрузился в свою «идеологию», и лишь некоторые авторы пытаются строить «мосты» (особенно запомнилась мне книжка по Java, Python, Prolog — и было обрадовался, но быстро огорчился, так как часть про Пролог фактически состояла из небольшого описания всех этих прологовских «чудес», после чего с большим облегчением было сказано: в современном прологе можно писать в императивном стиле — и весь остаток был этому и посвящен). С другой стороны, я не предлагаю упрощать: Википедия не должна быть популярной литературой, я предлагаю искусственно не вносить «наукообразности»! У редакторов остается выбор источников. Что касается предложенной выше структуры, то она, по-моему, лучше, хотя я бы поставил Критику ближе к концу. С другой стороны, по опыту написания статьи по Erlang скажу, что некоторые ключевые Особенности могут быть в начале — обычно источники их тоже выделяют как таковые. Еще один вариант — напишите аналитическую статью в какой-нибудь журнал (типа Открытых систем), где будет изложена вся сложность ситуации с призывами к революции, со ссылками на гуру и т. д. В отличие от Вас, я не верю в непробиваемость ваших «быдлокодеров» — такова надсистема и конъюктура, и, уверен, многие развиваются и расширяют кругозор за пределы принятых сегодня промышленных технологий (эти технологии обладают к тому же огромной инерцией, так как там уже не только надсистема, там и наднадсистема выстроена). РоманСузи 15:56, 28 декабря 2013 (UTC)[ответить]
  • Что усилия могут быть апстенку горохом - я понимаю. Но ортодоксальность часто приводит к хорошим результатам, если удастся сместить общество хоть на три с половиной процента. Текущая структура (посмотрите ещё раз) уже весьма многообещающая, подходит для самых разных языков, и для семейств языков, и даже парадигм и сравнительных статей. Она не противоречит политике большинства, и уже даже не столь витиевата - только что с намёками. "Критику" можно переименовать в "Общую характеристику", если нет статистических данных о том, что публика часто ищет именно "критику" - тогда это слово не будет мозолить глаза в начале статьи. Уйму библиографии я дал в ЯОП, внутри каждой статьи ещё фамилий море, отличная отправная точка. Лет несколько искал, а как нашёл, получил лавину инфы, пользуйтесь наздоровье. Arachnelis 22:23, 28 декабря 2013 (UTC)[ответить]
  • Существование единой структуры очень удобно - становится возможным изучить лишь нужную сейчас часть от содержания. Становится очень удобным сравнение языков, семейств языков и парадигм (теоретически можно будет даже написать движок, который динамически составляет таблицу для выбранных путём выдирания соответствующих фрагментов текста). Что касается моего предложения насчёт постфиксов в наименовании: текущие статьи с названиями без постфиксов остаются, в них просто ставится редирект. Со временем редирект может замениться на дисамбиг, а постфиксные названия никуда не денутся. Т.е. написать "[[XML]]" по-прежнему можно, но читатель попадает на статью "XML (программирование)", например.
  • Переименуйте что ль "Параллелизм (компьютерные науки)" в "Параллелизм (информатика)". Arachnelis 22:30, 28 декабря 2013 (UTC)[ответить]
  • Кстати, мы что-то при обсуждении сокрытия ушли в Высокие Материи и забыли про Си. А ведь даже в Си соотношение инкапсуляции с сокрытием совершенно не то же, что в С++. Структуры инкапсулируют без сокрытия, а для сокрытия функция или переменная убираются из заголовочного файла, и при изменении интерфейса чего-то скрытого перекомпилируется только модуль, но не весь проект. Глобальные переменные являются нормой при проектировании и там, и там, только в Си они называются честно "глобальными переменными", а в С++ "паттерном Синглтон". В С++, согласно идеоматике, если мы хотим видеть "чистый С++", а не "гремучую смесь из Си и С++", мы должны все определения инкапсулировать в классы, а они целиком определяются в заголовочных файлах, и только реализация методов уходит в "истинную скрытость". В результате не важно, что какой-то метод в класс скрыт (приватен) - стоит измененить его интерфейс (просто переименовать), и будет пересобран весь или почти весь проект. Сокрытие оно такое сокрытое, ага.Arachnelis 08:46, 30 декабря 2013 (UTC)[ответить]

Компетенция

Писать статьи про языки не должны люди, которые о языках ничего не знают. Те, чей "кругозор" ограничивается рамками стандартного набора одинаковых и однообразных родичей Алгола (чтоб их всех не стало разом!) - Basic/Pascal/VB/C++/Delphi/Java/C#/Oberon/Ada... - а также низкоуровневых (Ассемблер x86, Си, Фортран), не должны в этом участвовать - иначе будет постоянно возникать вздорная чушь вроде того, что "полиморфизм - значит, один интерфейс, много реализаций", и нарушаться структура (типа того, что типизация рассматривается отдельно от семантики, а элементы языка входят в синтаксис). Как говорится, умелый автор сможет на любом языке написать программу на Фортране. Я видел, как человек написал на Хаскеле программу со сложностью O(n^2) на задаче, предполагающей O(n), просто за счёт того, что использовал Хаскелевские структуры данных по-С++овски. Кроме того, разные языки допускают разные подходы к проектированию системы на макро-уровне, так что, если уж разрабатывать единую структуру статей о языках, то проектирование должно учитываться на верхнем уровне. VB/C++/Delphi/Java предполагают ровно один подход к проектированию - программирование в Королевстве Существительных. Русскоязычную литературу по программированию лучше не использовать - хорошей просто не существует, кроме Колмогорова и Турчина. Наши быдлокодеры чего только не пишут - и вводят термин "универсальный язык программирования", и классифицируют абстракции (что само по себе противоречит определению термина "абстракция")... Так что лучше не торопитесь, а то улучшений не будет. Arachnelis 11:02, 23 ноября 2013 (UTC)[ответить]

СССР
А кто тогда должен писать статьи? Те, кто не программировал, ничего в этом не понимают и не захотят писать. Или это те, кто не программировал на перечисленных языках? Я не знаю таких. ~Нирваньчик~ øβς 11:15, 23 ноября 2013 (UTC)[ответить]
"Русскоязычную литературу по программированию лучше не использовать" - хаха, я даже не знал что такая существует) Всё что я встречал по программированию - переводы с англ. языка. ~Нирваньчик~ øβς 11:15, 23 ноября 2013 (UTC)[ответить]
почему же? например, Боресков (steps3d.narod.ru) вполне авторитетный автор по OpenGL и CUDA (Idot 11:53, 23 ноября 2013 (UTC))[ответить]
Речь не об "авторитетности" и уж тем более не о библиотеках. Arachnelis 12:26, 23 ноября 2013 (UTC)[ответить]
А статьи об атомной энергетике может писать любой, кто умеет включать утюг в розетку? Arachnelis 12:26, 23 ноября 2013 (UTC)[ответить]
Я говорю не об административном запрете, я взываю к совести. Лично я бы не осмелился писать про атомную энергетику, хотя разводку на розетки я прокладывал. Аналогично, я пытаюсь указать на узость, однобокость и заблуждения мейнстримного "программирования", в надежде, что те, кто считает его Данностью, скромно отойдут в сторону. Arachnelis 13:08, 23 ноября 2013 (UTC)[ответить]
предложение "Русскоязычную литературу по программированию лучше не использовать" слишком категорично, так как в случае языков советского и российского авторства (например, ДРАКОН) - оно абсурдно (Idot 12:51, 23 ноября 2013 (UTC))[ответить]
Лично я хороших книг от русских авторов не видел. Переводные хорошие есть, но их единицы. Пример хорошей книги, после беглого ознакомления с которой, как мне кажется, ни один С++-ник/паскалист не осмелился бы уже писать про языки - Larry Paulson, ML for the working programmer. Переводные: Структура и интерпретация компьютерных программ; Siebel, Practical Common Lisp. upd: Чтобы Полсон легче воспринимался, можно сперва почитать переведённого Харпера "Введение в стандартный ML" - для изучения Харпера недостаточно. Arachnelis 13:08, 23 ноября 2013 (UTC)[ответить]
в данном случае я не про иностранные языки вроде C++, а про те что созданы в СССР и после (Idot 13:12, 23 ноября 2013 (UTC))[ответить]
В СССР был создан один замечательный язык, оказавший влияние на всю Computer Science - Рефал. Есть работы по Прологу, но это - очень узко специализированная сфера, и русские проложисты зачастую отмечены тем, что всё, что выходит за рамки Пролога, они делают на Delphi. Ну Душкин неплохо про Хаскел написал, но по сути это калька с Хьюдака, так что можно отнести к "переводной литературе". Arachnelis 16:31, 23 ноября 2013 (UTC)[ответить]
PS а так я видел прекрасную книгу "OpenGL. Графика в проектах Delphi." авторства Краснова (Idot 13:15, 23 ноября 2013 (UTC))[ответить]
Delphi - это очень, очень плохой образ мышления. Дейкстра говорил, что людей с отпечатком Бейсика невозможно обучить хорошему программированию - так вот это в полной мере применимо и к Дельфи. Arachnelis 16:31, 23 ноября 2013 (UTC)[ответить]
Вы случайно его с Visual Basic не перепутали? lol Delphi это дальнейшее развите Borlnad Pascal (с радикально переделанными классами), а Pascal создан Виртом, как воплощение идей Дейкстры, на которого Вы сослались lol ну, а RAD, который и воплощает Delphi крайне практичен, потому даёт надёжный результат в приемлимые сроки (Idot 18:15, 23 ноября 2013 (UTC))[ответить]

В Delphi есть уже готовые и весьма разнообразные средства работы с БД (всякие там ADO, FIB+, ODAC и прочие AnyDAC, за которые нужно выложить приличную сумму), до которых C++нутым еще фапать и фапать (и которые типовому С+±ку в голову вообще не придет использовать в повседневной работе — он сразу-же начнет свои писать, особо оптимизированные велосипедные, затратив сразу своего времени на сумму, раз в двадцать превышающую стоимость какого-нибудь AnyDAC, а потом потратив еще по столько-же раз десять, но уже в последующие лет пять исправлений постоянных глюков своего чудного велосипеда, вместо того, чтобы делом заниматься). В результате, пока красноглазики на C++ сидят со своим говнокодом, дельфикодеры обычно сидят уже с гешефтом, правда небольшим, но уже!


PS ну, а сама книга Краснова хороша именно для изучения OpenGL (а вот для практической работы с графикой Delphi слишком медленен, тут уж лучше C++, а Delphi оставить для задач скорость в которых зависит от обработки сервером запросов, то есть для клиентов) Idot 18:22, 23 ноября 2013 (UTC)[ответить]

Ничего не путаю. Чрезмерный опыт во всех клонах Бейсика и Паскаля очень вреден. А Виртовский Паскаль - всего лишь учебный язык, он создан быть первым, но плохо, когда он же остаётся и последним. Керниган очень чётко объяснил, почему он не подходит для практического использования. Arachnelis 20:26, 23 ноября 2013 (UTC)[ответить]
это всё теория про Pascal, на практике же Delphi для многих практических задач даёт хороший результат за минимальный срок разработки - быстро и надёжно, а не долго и глюкаво :-D Idot 06:28, 24 ноября 2013 (UTC)[ответить]
Не знаю таких абсолютных величин как "быстро и надёжно" - знаю "быстрее и надёжнее, чем то-то". Так что вопрос - насколько быстрее и надёжнее разрабатывать десктоп-гуи-СУБД приложения на Дельфи в сравнении с Lisp, SML, OCaml, Haskell, Scala, Nemerle, Python, Tcl? Про задачи, которые на Дельфи физически не решаются, говорить не будем, так уж и быть. Arachnelis 06:49, 24 ноября 2013 (UTC)[ответить]
а всё что Вы перечислили содержит средства RAD? если нет, то Ваш вопрос странен (Idot 07:14, 24 ноября 2013 (UTC))[ответить]
Всё, что я перечислил - языки настолько высокого уровня, что их легко можно портировать на любую платформу или компилировать в другие языки (в Си - обычная практика). Можно и в JVM и в .Net. Ведь RAD, кроме громких слов - это дотНет, я правильно понимаю? Просто я эту фигню никогда не использовал, т.к. перечисленные языки обеспечивают разработку в несколько раз быстрее и качественнее, чем дельфи. В частности, слова "концепция rapid developement" рядом не валяются с "rapid prototyping". 100 строк кода на Хаскеле и день работы - это больше результата, чем тысяча строк на RAD Delphi и неделя работы. Arachnelis 15:51, 24 ноября 2013 (UTC)[ответить]
не поясните сказанное Вами применительно к написанию клиента баз данных? :-) при типичном использовании Delphi, сам код на Delphi занимает 5-10% времени, всё остальное время (90-95%) уходит на SQL или PL/SQL (Idot 16:04, 24 ноября 2013 (UTC))[ответить]
Про СУБД: В Common Lisp код запроса пишется просто руками, с нормальной реляционной идеологией, не искажённой чьими-то готовыми компонентами, и на этапе компиляции подключается к серверу и оптимизирует запрос на основе полученных данных. Всё это делает сам язык, без участия программиста и тем более IDE. Учебник тут раскатывать не буду - всё нужное вы найдёте легко. Про GUI: для него я возьму Tcl. На Хаскеле, если вы погуглите, гуйня в основном на кроссплатформенной wxWidjets, а не квадратно-гнездовых компонентах посредственного качества. Если что, есть SML-Tk. Если скорость не критична, то выгоду вы получите, уже пересев на Python с Tkinter. Теперь встречный вопрос: допустим, нужен сервер в режиме работы 24/7 без перезагрузки годами, но с возможностью апгрейда логики и отката назад. Стойки должны отключаться на профилактику. Программа должна в рантайме мигрировать между железками со всеми динамическими данными. Можете не отвечать - на Дельфи такое не пишется чисто физически.Arachnelis 16:27, 24 ноября 2013 (UTC)[ответить]
я что предлагал на Delphi писать сервер?! речь о клиенте который обеспечивает интерфейс, а всё остальное делается на сервере через стандарный PL/SQL (Idot 16:35, 24 ноября 2013 (UTC))[ответить]
насчёт Tcl для интерфейса, судя по статье Вам придётся писать код для каждой кнопки, в случае Delphi я не пишу кучу кода для рисования каждой кнопочки, а просто рисую кнопочку, затем кликаю на неё и указываю что делать - что явно быстрее чем написанние кода по рисованию каждой кнопки на супер-Tcl :-D Idot 16:35, 24 ноября 2013 (UTC)[ответить]
кстати, насчёт отладки: как Вы отлаживаете запрос к базе данных на LISP? в случае Delphi я каждый SQL-запрос могу нормально отладить, стандартными SQL-инструментами, и в Delphi вставляется уже готовый запрос, который легко заменить (а то и вовсе читать запросы из файлов) Idot 16:42, 24 ноября 2013 (UTC)[ответить]
Давайте не будем превращать энциклопедический совет в консультативный форум. Я дал общее понятие. А за что я больше всего изначально ненавидел Delphi/Builder - так это за жёсткое навязывание абсолютно неправильного подхода к проектированию человеко-машинного взаимодействия. Советую вам почитать книгу Алана Купера "Психбольница в руках пациентов" - это популярная работа про мышление Algol style программистов (он не говорит об Алголе, но портрет характерен). Насчёт визуального программирования а-ля Дельфи там хорошая фраза: "с таким же успехом оператор бетономешалки мог бы сказать плотникам, что они могут начать строить каркас после того, как он закончит заливать бетон". Arachnelis 16:55, 24 ноября 2013 (UTC)[ответить]
почему "жёсткое навязывание"? если Вам абсолютно нечем заняться на работе, то Вы и на Delphi можете в ручную создавать кнопочки и в ручную игнорируя компоненты подключаться к базе данных, а если совсем нечем заняться работе, то писать с нуля свои библиотеки по работе с базами данных...
но обычно начальство требует предъявить их глазам результат, а не кучу строк неотлаженного кода (Idot 17:08, 24 ноября 2013 (UTC))[ответить]
и всё таки как Вы отлаживаете запрос к базе данных на LISP, из того как Вы старательно уходите от ответа, я могу заключить, что Вам для этого приходится запускать всю програму и добираться до того места, где у Вас запрос (Idot 17:08, 24 ноября 2013 (UTC))[ответить]
а насчёт "с таким же успехом оператор бетономешалки мог бы сказать плотникам, что они могут начать строить каркас после того, как он закончит заливать бетон" - один фиг эти кнопочки приходиться рисовать на стадии обсуждения ТЗ. и если Вы сначала рисуете их сначала в Word'е (или ещё где), а затем пишете код, и только затем озабочиваетесь созданием интерфейса, то Вам эти кнопочки приходится рисовать дважды! в случае же визуального програмирования c RAD эти кнопочки уже готовы к моменту утверждения ТЗ, и при написании кода уже не придётся их рисовать, потому что они уже готовы, что даёт существенный выйгрыш времени (Idot 17:16, 24 ноября 2013 (UTC))[ответить]
Я вижу вы вообще не имеете ни малейшего представления о проектировании человеко-машинного взаимодействия, поэтому повторяю совет - прочитайте Купера. Кнопочки тут ни при чём, совсем. То, что программа была написана на Дельфи, видно всегда извне невооружённым взглядом, т.к. в обращении они омерзительны. Я не понимал, почему у меня AIMP вызывает такое омерзение, пока случайно не узнал, что он написан на Дельфи. Arachnelis 19:36, 24 ноября 2013 (UTC)[ответить]
ну и альтернативный пример использования Delphi: мне понадобилось написать удобный в пользовании редактор материалов, вся суть которого сводится к удобному интерфейсу с кнопочками и скроллерами с отрисовкой стандартного чайника, и поскольку вся программа более чем на 90% это интефейс (ну и запись циферок на интерфейсе в файл и чтение циферок из файла), а на скорость в данном случае наплевать, я его написал не на C++, а на Delphi, ну так вот мне интересно куда Вы приткнёте тут Хаскель, если вся программа это интерфейс и рисование чайника :-D Idot 16:22, 24 ноября 2013 (UTC)[ответить]
Здесь находятся завершившиеся обсуждения. Просьба не вносить изменений.
ответа как я вижу Вы тщательно избегаете => слив засчитываем? :-) Idot 17:08, 24 ноября 2013 (UTC)[ответить]
Ваш троллинг защщитан. Здесь не место для подобных споров. Вы что, думаете, что на Хаскеле невозможно написать всё то же, что на Дельфи? Arachnelis 19:36, 24 ноября 2013 (UTC)[ответить]
я такого не утверждал, я про Ваше утверждение о то что на Хаскеле обязательно будет в 10 раз меньше строк кода :-) Idot 05:03, 25 ноября 2013 (UTC)[ответить]
а спор и флейм подняли - Вы, в ответ на приведённый пример книги, так кто тут флейм разводит? (Idot 05:05, 25 ноября 2013 (UTC))[ответить]
(UTC)

Очень прошу избегать личных выпадов! Здесь вам не форум по обсуждению языков программирования, а место для обсуждения статей. --OZH 05:36, 25 ноября 2013 (UTC)[ответить]

Вы уж извините, дам одну ссылку, чтобы избежать обвинений в голословности: Haskell GUI. Эквивалентный код на Delphi будет экранов в двадцать (здесь и одного экрана нет). Больше по техническим деталям отвечать здесь не буду. Arachnelis 17:56, 27 ноября 2013 (UTC)[ответить]
Поглядел про ДРАКОН. Умных обещаний много, мелькают идеи ЯОП. "Двумерность" сразу намекает на заблуждения - у Пролога, Хаскела и даже Питона двумерный синтаксис (т.е. код нельзя записать в одну строчку, как в Си или Паскале). А дальше - императивные блок-схемы, которыми невозможно описать, например, Хаскел-программирование (да вообще семантику, основанную на континуэйшенах). Т.е. мы приходим к тому же Algol style программированию, только с кучей псевдопсихологии. Так что незачот. Arachnelis 16:41, 23 ноября 2013 (UTC)[ответить]
upd: Кстати, Ф.Брукс в книге "Мифический человеко-месяц" (если не путаю) отметил, что программисты вообще ненавидят блок-схемы - они их рисуют уже после того, как код написан, но не перед.Arachnelis 20:50, 23 ноября 2013 (UTC)[ответить]
зависит от внутренних правил, в некоторых кампаниях ТЗ изначально содержит блок-схему и рисовать её программеру не надо :-) Idot 15:53, 25 ноября 2013 (UTC)[ответить]
upd2: Статью про ДРАКОН я бы урезал раз в шесть, а то она похожа на рекламную презентацию, приписывающую гамбургеру лечение глаукомы и остеопороза. Arachnelis 06:49, 24 ноября 2013
Сердитая точка зрения
  • Весьма сердитая точка зрения, однако. И слишком крайняя, чтобы быть близкой к истине. Если оставить в стороне выпады на большую группу авторов оригинальной русскоязычной компьютерной литературы и, по всей видимости, почти всех российских теоретиков, спрошу по существу для расширения кругозора, так сказать:
    • Чем плох термин "универсальный язык программирования", если его понимать в смысле не узко специализированный?
      • "Универсальный" - это значит не просто Тьюринг-полный, а применимый вообще везде, в любых условиях под любую задачу. Таких не бывает и быть физически не может. У любого, без исключения, языка всегда будут ограничения применимости, сколь бы Тьюринг-полным он ни был. Arachnelis 16:31, 23 ноября 2013 (UTC)[ответить]
        • По-моему, универсальный язык программирования — это синоним языка программирования общего назначения = general purpose programming language, но может быть еще и «многоцелевой». Другой нагрузки у этого слова я не нашёл (если у Вас есть на эту тему что-нибудь серьёзнее записи в блоге - прошу дать ссылку). Полнота по Тьюрингу может быть и у языков специального назначения (eg, Postscript). РоманСузи 18:16, 23 ноября 2013 (UTC)[ответить]
          • "Универсальный" - не синоним "многоцелевому". Опасно заменять одно на другое. Низкая грамотность русской CS - тому подтверждение: изучили дети один универсальный язык, и не видят необходимости изучать другие - тут ведь вам и GUI, и СУБД, и все прочие вкусности. Как только мы отрезаем саму гипотетическую возможность существования универсального инструмента - сразу возникает вопрос о границах применимости, о пересечении границ применимости разных инструментов и сразу тянется вся остальная наука. Arachnelis 20:39, 23 ноября 2013 (UTC)[ответить]
    • Что Вы понимаете под элементами языка?
      • То же, что все люди понимают под словом "элемент" - неделимую составную часть от целого. В случае с языками это система типов, модель вызова (нормальная, аппликативная, с передачей продолжений), детерминированность (языки бывают строгие, ленивые, вообще с непрямым порядком вычислений, как Пролог), средства модульности и абстракции (в С++ это классы, в ML это сама система типов плюс три вида модулей, в Рефале нет вообще ничего кроме функций), и т.д. и т.п. Arachnelis 16:31, 23 ноября 2013 (UTC)[ответить]
        • Слово «элемент» настолько нагружено, что я бы не стал его использовать в структуре статьи. Элемент (системы), элемент синтаксиса, элемент контейнера, наконец (в Вашем понимании) — элемент семантики-синтаксиса-прагматики. Несколько просмотренных мной (не претендую на полноту анализа) описаний языков используют слово «элемент» на уровне лексемы, алфавита.
          • Для всех этих значений есть свои термины. "Элемент синтаксиса" - это строка БНФ. Элемент языка - более сложное понятие. Arachnelis 20:39, 23 ноября 2013 (UTC)[ответить]
          • upd: но я не настаиваю на использовании этого слова в структуре. Вполне достаточно сделать "Описание языка", или "Будь мужиком, прочти суть" :), или как-то ещё. Arachnelis 05:55, 24 ноября 2013 (UTC)[ответить]
    • Допустимо ли по-вашему вообще рассматривать семантику оторванно от синтаксиса?
      • В целом - да. Семантика, разумеется, может накладывать некоторые ограничения на синтаксис, но обычно их можно обходить. Есть языки вообще с неопределённым синтаксисом. Например, у Окамла синтаксис параметрический, настраивается путем работы с модулем компилятора CamlpX. Common Lisp теоретически можно превратить в почти любой язык (а если уйти от стандарта, то в любой вообще). Тысяча строк кода на Лиспе - и Лисп становится Хаскелем. Точно также можно добиться того, что Лисп станет С++ом, и любой С++ник сможет программировать на Лиспе, не замечая разницы (но этот аццкий труд вряд ли кто-нибудь когда-нибудь реально выполнит). Вот связи семантики с синтаксисом важно отмечать. Например, алфавит Рефала похож на алфавит Си, но грамматика Си принципиально несовместима с семантикой Рефала. (Для примера: у каждой функции ровно один аргумент, который не имеет ни имени, ни типа, и вообще не записывается, и при этом может представлять из себя что угодно, любую структуру данных). А вообще, к любому языку можно "приделать" почти любой другой синтаксис, и преобразование реализуется несложно. upd: И кстати, уже только поэтому VB/C++/Delphi/Java/C# можно смело считать за ОДИН язык - у них почти одинаковые AST, так что эквивалентный преобразователь программ сделать не так сложно (для случаев, когда не используются своеобразные библиотеки). Могу предложить лёгкое чтиво: RSDN: Синтаксический сахар или C++ vs. Nemerle Arachnelis 16:31, 23 ноября 2013 (UTC)[ответить]
    • Что плохого в классификации абстракций? (ок. выше Вы объяснили, хотя и не очень убедительно)
      • Смотря что под этим понимать. Выше вы отметили, что очень важно в каждой статье разделить все абстракции на три группы. Если вы сделаете это для Хаскела, бы убъёте половину возможностей языка и распрощаетесь с эквациональными рассуждениями. Т.е. одно дело - раскрывать СПОСОБЫ абстрагирования, и другое дело - описывать "чем использование абстракций типа А отличается от использования абстракций типа Б" (ну, как в С++) Arachnelis 16:31, 23 ноября 2013 (UTC)[ответить]
        • Три абстракции, возможно, не самый удачный пример. Я только хотел подчеркнуть, что когда мы имеем дело с языковыми абстракциями, то обычно у нас есть понимание того, относятся ли они к данным, инструкциям или же к системе модулей. Хоть в Haskell, хоть в Лисп, хоть в языке для системы с Гарвардской архитектурой мы имеем дело с ними в той или иной степени. Эти вещи настолько фундаментальны, что будут иметь место даже в совершенно дикой архитектуре (которая занимается универсальными вычислениями), так как они берут начало от базовых алгоритмических моделей (будь то абстрактная машина Тьюринга, лямбда-исчисление, алгорифмы Маркова). Другой вопрос, нужно но ли использовать это основание для текстуального разделения описания языка программирования? Тут я не уверен. На настоящий момент императивный и ОО подходы все-таки в большинстве, поэтому вводить в язык программирования нужно с известных понятий, а не чего-то «верного». Конечно, меня лично коробит, когда в книге про Пролог или Лисп с гордостью пишут почти от начала до конца в императивном стиле, но мы не сделаем статью о языке программирования без наведения понятийных мостиков. РоманСузи 18:38, 23 ноября 2013 (UTC)[ответить]
          • Я предлагаю идти строго от "что" к "как", т.е. начать с вопроса "насколько мы вынуждены программировать вообще", затем "насколько мы вынуждены использовать такой-то способ декомпозиции и разделения труда", и т.д. до отдельных строк БНФ. Прямо сейчас не предложу конкретно, но постараюсь дать свой вариант в ближайшее время.Arachnelis 20:39, 23 ноября 2013 (UTC)[ответить]
          • upd: Поясню - я говорю о том, чтобы фокус делать на "способах реализации абстракций", а не "способах использования абстракций" - т.е. абстракции можно классифицировать изнутри, но не снаружи. Снаружи, повторюсь, хорошие абстракции должны образовывать чёрный ящик, столь же целостный и неделимый, что и элементы, встроенные в язык. В языках, основанных на лямбда-исчислении (потомки Lisp и ML), стандартной практикой является моделирование данных посредством поведения - т.е. состояния в абстракции как такового и нет, но при использовании её извне кажется, что оно есть.Arachnelis 06:00, 24 ноября 2013 (UTC)[ответить]
            • Это интересно пожелание начать с вопроса "насколько мы вынуждены программировать вообще", затем "насколько мы вынуждены использовать такой-то способ декомпозиции и разделения труда", однако, мы можем идти в этом направлении только настолько, насколько источники позволяют, иначе мы можем уйти в ВП:МАРГ, если начнём выпячивать какую-то точку зрения. Ведь дело в истории языков программирования происходило так (на примере ООП): жил-был язык императивный структурный. ООП стало получать популярность. В язык решили привнести эту парадигму, насильно. И все во имя того, чтобы "не программировать". И что? По Вашей логике нам следует в статье на ассемблере максимально забыть про MOV и DEC и написать о том, скажем, как на нем родимом заниматься метапрограммированием (или другим текущим супер-пупером)? Или я чего-то не понял в Вашем предложении? Давайте новое вино не заливать в старые меха (если на то нет источников РоманСузи 11:34, 24 ноября 2013 (UTC)[ответить]
              • Историю рассмотрят в разделе "история" статьи про конкретный язык. Я же говорил о построении структуры повествования от "что" к "как", а не наоборот. Ассемблер же строится изначально, ставя "как" во главу угла, он не для человека, а для машины - т.е. к нему такой подход не факт что применим. Должен признать, это меткое замечание. Arachnelis 15:38, 24 ноября 2013 (UTC)[ответить]
А вообще говоря в Википедии есть основополагающие принципы, в соответствии с которыми в Википедию должны попадать энциклопедические знания из авторитетных источников. Такими русскоязычная литература, прошедшая редакционное редактирование, является. Разумеется, есть исключения, и выбор литературы за редактором статьи, но статью всегда можно расширить за счет более качественного источника (если, конечно, источник не является маргинальным). Другими словами, Ваша изначальная реплика несёт очень мало смысловой нагрузки без приведения контр-аргументов в виде: «абстракции нельзя классифицировать»<ref>Признаный гуру, Известная книга, 2012</ref> РоманСузи 15:27, 23 ноября 2013 (UTC)[ответить]
Это понятно. Меня беспокоит, на чём будет сделан акцент. Одно дело - раскрыть в статье верные сведения и потом уделить абзац на ссылку на неверные - и совсем другое дело поступить наоборот. Arachnelis 16:31, 23 ноября 2013 (UTC)[ответить]
Вообще в Википедии нет принципа "надо выбирать эти источники, потому что они правильные" (хотя вообще это хорошее стремление), тут главный принцип "надо выбирать эти источники, потому что их написали общепризнанные эксперты и научные авторитеты, или издало старое авторитетное издательство". ~Нирваньчик~ øβς 18:42, 23 ноября 2013 (UTC)[ответить]
+ источники могут использоваться не обязательно для написания всего текста статьи сключительно по ним, а бывает нужно подтвердить всего-лишь один малозначительный фактик, одну буковку/циферку, по которому/-рой могут быть сомнения, и для таких целей любой бульварный роман типо "Изучи С++ за 3 дня" может сгодиться. ~Нирваньчик~ øβς 18:42, 23 ноября 2013 (UTC)[ответить]
Я не уверен что здесь есть профи, способные написать на таком уровне, как вы говорите. Да и задачи такой нет - писать (в прямом смысле). Мы просто пересказываем то, что пишут профи в других источниках. Главное грамотно составить этот пересказ. Я немного разделяю ваши опасения. Но не уверен что мы должны на таком уровне писать. Лучше описать язык простым и доступным языком, для интересующегося человека, без "высокой философии", которую понимают только академики. Иначе статья станет скучной и нудной. ~Нирваньчик~ øβς 18:48, 23 ноября 2013 (UTC)[ответить]
Само собой. Просто не следует забывать, что для многих людей Вики является именно источником новых знаний, а не возможностью перепроверить забытую формулу, так что у размеров статей должен быть предел, а значит, надо стараться распределять её доли. Кстати, самое главное - создать структуру, основываясь на правильных источниках, а уже к ней дописывать абзацы со ссылками на "так себе". Arachnelis 20:39, 23 ноября 2013 (UTC)[ответить]
Ну, если составлять структуру по источникам, тогда непонятно по каким источникам это делать. Обычно структуру статей составляют из здравого смысла. Иногда само название статьи это диктует. Иногда статья в другой Энциклопедии. В данном случае - трудно. Учебники по языку - не факт что подходят на 100%. Их задача - обучить языку программиста. У нас такой цели нет. У нас скорее дать общий взгляд, не вдаваясь в детали. Это нужно какой-то специальный обзорный талмуд по языкам программирования найти. ~Нирваньчик~ øβς 12:18, 25 ноября 2013 (UTC)[ответить]
«Хорошее» и «так себе (ad hoc)» программирование

Хочу объяснить две вещи.

Прежде всего, причину споров насчёт синтаксиса/семантики/элементов языка. Я даже где-то видел это в литературе, надеюсь, отыщу ссылку - будет АИ. Все алголоподобные (они же мейнстримные) языки претендуют на то, чтобы называться "высокоуровневыми" (ЯВУ), но в действительности содержат лишь те "высокоуровневые" конструкции, которые однозначно компилируются в блоки машинного кода. Т.о. фактически они все представляют собой разновидность макро-ассемблера. Так вот, поэтому и получается, что любой "элемент языка" соотносится с единственным "элементом синтаксиса". Такой путь построения языка приводит к языкам, емнип, второго-третьего поколения, не дальше. В языках более высокого уровня (четвёртого-пятого поколения) это уже неверно - зачастую элементы языка не имеют в принципе синтаксического отражения, но компилируются (сложным, неоднозначным образом) в большие объёмы кода. Причём в одних случаях это - промежуточный код, который сильно влияет на оптимизацию, и почти полностью удаляется из машинного, в других это целевой код. Пример: выведение типов по Хиндли-Милнеру избавляет программиста от необходимости вводить типы вручную и повышает лаконичность кода. Просто так встроить его, например, в С++, невозможно - он требует нескольких проходов по AST, и потому может быть лишь фундаментальным элементом семантики целостного языка. Применение алгоритма выведения возможно, только если программа уже типизирована в соответствии с моделью типизации Хиндли-Милнера, а она даёт возможность строго проверить корректность на этапе компиляции и убрать всякий контроль из целевого кода. Т.е., например, в Си при переборе массива программист вручную задаёт длину перебора и имеет возможность выйти за границы (семантика чётко соответствует синтаксису). В Паскале длина перебора также задаётся вручную, но выход за границы контролируется рантаймом языка (уже имеем неявно порождаемый код - т.е. элемент языка, скрытый под синтаксисом). В ML невозможно даже написать код, выходящий за границу (т.е. наоборот, границы программист не указывает, целевой рантайм их не контролирует, но семантика языка защищает от ошибки).

Теперь насчёт отличия "хорошего" программирования от неквалифицированного (на жаргоне - "быдлокодирования"). Оно фактически вытекает из вышесказанного. Быдлокодер действует следующим образом: получает ТЗ от заказчика, долго согласовывает с ним детали того, что заказчик желает увидеть, вычленяет из ТЗ объекты, которыми оно манипулирует, выстраивает каркас кода, описывающий эти объекты, исходя из недюжинного опыта работы с ЭВМ выдумывает ещё бОльшее число объектов вокруг них, выстраивает сложную систему взаимосвязей между ними, распараллеливает работу на подчинённых, затем запускает отладку. И тут происходит следующее: звонит заказчик и говорит: «да, я забыл, ещё мне нужны суммы по такому-то показателю при группировке по такому-то в реальном времени. Это всего лишь ещё одно окошко к программе, так что несложно и недорого.» Тот факт, что этих данных для суммирования гигабайты, и лопатит их кластер, и как их синхронно в реальном времени суммировать, никто никогда не думал — его не волнует. И 90% работы программист переделывает за свой счёт. А сам виноват. Ведь 90% работы он выполнил сам, в своей голове, со всеми вытекающими последствиями. Хороший же программист с самого начала направляет 90% усилий на то, чтобы устранить себя и своих подчинённых из процесса программирования. Он старается объяснить компьютеру все особенности предметной области задачи, с тем, чтобы ТЗ компилировалось сразу в машинный код. Тогда при изменении ТЗ ему нужно будет только нажать кнопку перекомпиляции. Это известно уже лет 40 и восходит к докладу Джона Бэкуса «Можно ли освободить программирование от стиля фон-Неймана». После этого вся академическая CS была направлена на развитие формальных методов, и хотя цель ещё недостигнута (и даже есть её низвержения), она очень существенно приближена. Поэтому важно писать статьи про языки исходя не из позиции «мы уже знаем этот язык, так давайте же рассмотрим, какой он замечательный и что мы в него ещё добавить можем», а из «а нужен ли нам этот язык вообще?». Arachnelis 06:07, 24 ноября 2013 (UTC)[ответить]

Вы хотите заменить информацию о языках программирования (история создания/синтаксис-семантика/библиотеки-реализации/области применения/производительность и т.д.) на размышления о полезности данных языков? Не понимаю мысль. ~Нирваньчик~ øβς 08:45, 26 ноября 2013 (UTC)[ответить]
как я понял он хочет написать что Delphi - "вреден", а Хаскель - "до жути полезен", то есть статьи рискуют превратиться в срач (Idot 14:57, 26 ноября 2013 (UTC))[ответить]
За Хаскел особо не радею (моим любимым языком общего назначения, если уж на то пошло, является StandardML) - я делаю акцент на том, что вред для образа мышления от Бейсика уже давно известен (и на это есть АИ - Дейкстра), и что это в равной степени применимо к Дельфи (на это АИ, увы не дам - но и вы не дадите АИ, который бы доказывал, что разница между VB и Delphi столь уж существенна). А вот "заменять на размышления о полезности" я не предлагал, нет в моих словах такого. Arachnelis 11:21, 27 ноября 2013 (UTC)[ответить]
Справедливости ради, Дийкстра писал не о алголоподобном «modern basic’е», а о старом-недобром спагетти-бейсике с номерами строк. Высказываний Дийкстры против алголоподобных языков как-то не помню. Бэкус в тьюринговской лекции пропагандировал отказ от «традиционного» программирования в пользу функциональщины и (кстати) конкатенативщины, но это вопрос другой. --be-nt-all 12:31, 9 апреля 2014 (UTC)[ответить]
а Вы способны дать источник доказывающий что разница между Вороной и Верблюдом существенна? :-D а так если Вы утверждаете, что разница между VB и Delphi не существенна, то доказывать это должны именно Вы! (Idot 11:43, 27 ноября 2013 (UTC))[ответить]
PS такое очущение что Вы никогда не видели памятный в своё время (до моды на Джаву) срач VB vs Delphi --Idot 11:43, 27 ноября 2013 (UTC)[ответить]
Не буду сейчас искать источник, объясню своими словами. Ни в Бейсике, ни в Паскале нет средств для построения ADT и абстракции функций (сиречь функций высшего порядка). Т.е. в системе типов этих языков нет ничего похожего на функциональный тип. Даже в Си есть, хотя он не претендует на разработку прикладных приложений. По этой причине создание программных "продуктов" посредством VB/Delphi имеет такое же отношение к программированию, как включение утюга в розетку - к атомной энергетике. Arachnelis 18:04, 27 ноября 2013 (UTC)[ответить]
то есть по твоим Машина Тьюринга словам тоже "имеет такое же отношение к программированию, как включение утюга в розетку - к атомной энергетике"?! и это не говоря уже от такой классике програмироавния как Fortran и C, да и Fort тоже отнюдь не функциональный язык програмирования, то есть фактически ты хочешь форсить функциональное програмирование откровенно наплевав на ВП:НТЗ и ВП:НЕТРИБУНА, и ради своей цели намерен наполнять статьи ОРИССом под видом "логики" => (−) Против (Idot 18:28, 27 ноября 2013 (UTC))[ответить]
Ну нет этого в моих словах, хоть убейте. Я говорю, что Дельфи для мозга вреден, я не говорил такого про Форт. Наоборот, Форт рулит, как и все метаязыки. На Форте любой ADT строится играючи. Вы очень сильно перевираете мои слова. Типичные для дельфина когнитивные искажения... Arachnelis 18:52, 27 ноября 2013 (UTC)[ответить]
upd: Машина Тьюринга не делает различий между "кодом" и "данными". В Форте, в Лиспе и в функциональных языках "код" - это "данные, предназначенные для исполнения". Для Бейсика и Дельфи это не верно, так что они воплощают лишь частный, очень убогий и уродливый подвид машины Тьюринга. Чем дальше вы спорите о том, в чём не разбираетесь, тем глупее выглядите. Вам оно надо? Arachnelis 18:58, 27 ноября 2013 (UTC)[ответить]
Вы вообще в курсе об истории этих языков? Basic это упрощённый Fortran, зная который легче овладеть Fortran'ом - именно для этого он и разрабатывался. нуа Delphi как и Pascal - живое воплощение Структурного Програмирования (Idot 03:48, 28 ноября 2013 (UTC))[ответить]
История-то тут при чём? Скажу иначе: Бейсик и Паскаль при компиляции задействуют лишь некоторое подмножество возможностей машины Тьюринга, оставляя за кадром такую важную вещь как изоморфизм кода и данных. Это лишает программиста возможности строить алгоритмы, основыванные на манипулировании алгоритмами. Такая банальная вещь как GUI-меню на Си реализуется банальным массивом указателей на функции, а поскольку и массивами, и указателями можно играться динамически, то для построения модифицируемого в рантайме GUI достаточно написать одну простую функцию. Раз что-то делается просто, то это становится стандартным трюком и попадает в состав "идеологии языка". В VB/Delphi эту проблему за вас уже решили разработчики библиотек компонентов, и вы её не замечаете. Но стоит переключиться на задачку по-интереснее, скажем, на какое-нибудь агентное моделирование, и нехватка изоморфизма кода и данных сразу скажется на принципиальной возможности решить задачу, не говоря уже о трудозатратах. И ФП тут тоже ни при чём. Агентную модель можно и на ФЯ, построить, конечно же, но вполне нормально она строится и на Smalltalk'е (т.е. и на Objective-C тоже). Классификация языков на "структурные, ООПные" и т.п. - это детский сад. Языки делятся по типу семантики (операционные, денотационные), по полноте системы типов, по детерминированности... Не думайте, что ФВП есть только в ФЯ - указатели на функции в Си - это тоже в чистом виде ФВП. А Бейсик вы, стало быть, таки используете не на основании технических характеристик, а как историческую ценность? Раз от Фортрана произошёл - то удобнее и выразительнее, чем любой другой язык? Arachnelis 15:28, 28 ноября 2013 (UTC)[ответить]
RE: "Но стоит переключиться на задачку по-интереснее...", не понял, а зачем писать на Delphi то в чём он мало эффективен? (O_O) он хорош именно в своей нише и в неё идеально вписывается :-) Idot 16:24, 28 ноября 2013 (UTC)[ответить]
RE: "А Бейсик вы, стало быть, таки используете...", поскольку я на Fortrane давно уже не пишу ;) то я его использую только, если мне приспичило вывести результа в Excel-овский или Word-овский файл, да и то я пишу не на самом VB, а вызываю VBA-скрипты из Delphi! :-D Idot 16:24, 28 ноября 2013 (UTC)[ответить]
RE: "В VB/Delphi эту проблему за вас уже решили разработчики библиотек компонентов, и вы её не замечаете": чтобы послать что-то на принтер мне не нужно знать о том как устроен драйвер принтера, и прочие подробности, а чтобы вывести что-то на экран нет нужды знать о том как устроен драйвер видеокарты. то что мне нет нужды знать такие подробности и нет нужды каждый раз создавать велосипед писать собственный драйвер, позволяет абстрагироваться от подобных low-level деталей и сосредоточиться на выполнении поставленной задачии и скорейшего получения надёжно работающего результата (Idot 16:32, 28 ноября 2013 (UTC))[ответить]
Если вопрос ставить так - то да, у VB/Delphi есть своя ниша - низкий порог вхождения. Но не надо манипулировать направлениями беседы: я начал с того, что это слишком низкий порог вхождения, и потому знающие только их люди не могут считаться достойными участниками обсуждений данного рода. Используйте эти языки, ваше право, но не кричите здесь, что ненавидящие их предвзяты и ненейтральны. Кстати, мне показалось, или вы путаете Forth и Fortran? Arachnelis 13:08, 8 декабря 2013 (UTC)[ответить]
что касается тех претензий, что Pascal был создан для учебных целей, то для рабочих целей Вирт создал Modula, только вот он на практике не прижился и эту нишу сначала занял Object Pascal, а затем его дальнейшее развитие - Delphi (Idot 16:24, 28 ноября 2013 (UTC))[ответить]
А также Java и C#. Не будем забывать, что весь мейнстрим основан на творениях Вирта (хотя хорошего в этом мало). Arachnelis 13:08, 8 декабря 2013 (UTC)[ответить]
  • «Уровневость» определяется от отдаленности от аппаратной архитектуры. Наверное, Вы правы, что сейчас это уже больше анахронизм. Что касается подхода к программированию в сторону «программирования в ограничениях» (в широком смысле) и использования ЯОП, то выбор методологии здесь зависит от предметной области. Сейчас уже не могу вспомнить где я видел интересную диаграмму из четырех позиций, где в начале была hardcoded конфигурация, промежуточные пункты не помню (XML кажется и еще что-то), а четвертым пунктом было создание DSL. Посыл же там был, что важно правильно остановиться в выборе гибкости конфигурирования, так как для некоторых проектов DSL — выстрел из пушки по воробьям. РоманСузи 11:26, 24 ноября 2013 (UTC)[ответить]
    • Про "Уровневость" правильно. Что касается DSL, то он должен идти первым, иначе попросту теряет смысл и превращается в громкое слово. Хьюдак приводит график грубого сравнения ЯОП с классическим подходом, на котором есть точка перехода на выгоду. Arachnelis 15:34, 24 ноября 2013 (UTC)[ответить]

Нашёл обещанную ссылку:

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

Larry Paulson, ML for the Working Programmer, с.1

{{книга |автор = Lawrence C. Paulson |заглавие = ML for the Working Programmer |издание = 2nd edition |страницы = 478 |isbn = 0-521-57050-6 (hardback), 0-521-56543-X (paperback) |год = 1991, 1996 |место = Cambridge |издательство = University Press |ref = Paulson }}Arachnelis 11:15, 27 ноября 2013 (UTC)[ответить]

Я составил свой вариант структуры статей, применимый и к Ассемблеру i86, и к предметно-специфичным языкам типа TeX, и к языкам общего назначения:

1. Место и роль в информатике (можно как общую часть, хотя под этим заголовком будет нагляднее)
2. Неформальное описание (или просто "Язык", как в английских статьях) — собственно описание общих черт и элементов семантики, синтаксиса («неформальное описание» (informal description) — это принятый термин, обычно противопоставляемый «формальному определению» (formal definition) или «спецификации»)
3. Примеры кода — не обязательный на мой взгляд раздел (т.к. предыдущий не обойдётся без мелких примеров), но он много где уже есть, поэтому от себя лишь доработаю требования к нему: не изобретать велосипедов, а выбрать пяток-десяток классических алгоритмических задач, на которых обычно оценивают языки (например, отсюда) и приводить во всех статьях полноценные решения одних и тех же задач, плюс одно-два специфичных, которыми язык может похвастаться (например, изменение синтаксиса в метаязыках, фокусы с битами и адресами на Си, квайн для интерпретируемых, и пр.).
4. История и философия развития — понятно.
5. Реализации — понятно.
6. Оценка характеристик — анализ особенностей, достоинств и недостатков, сравнение с альтернативами (если они есть)

Известные проблемы портируемости следует перечислять в разделе "Реализации". Общую оценку потенциальной портируемости языка рассматривать в "оценке характеристик". Историю с философией разделять считаю ошибкой, т.к. с одной стороны, философия как раз историю и предопределяет; с другой — глядя на историю, можно оценить правдивость заявленной философии. Кроме того, философия может эволюционировать вместе с языком. Я уверен, что история и философия развития должны идти ПОСЛЕ собственно описания того, что есть на данный момент, т.к. это либо сведения для любознательных, либо отчаянная попытка самооправдания, и так или иначе, имеет сугубо вторичное отношение к объективному результату. Это особенно важно для пары Си — С++: многие С++ники упорно отсылают читателя к Си, отказываясь рассматривать язык С++ как самостоятельную единицу (это при том факте, что на чистом Си они больше тысячи строк за всю жизнь не написали и его философию видят в искажённом сквозь призму С++ свете). Если история (последовательность выхода стандартов) не будет предшествовать описанию, то неполнота описания С++ в современном виде сразу станет видна невооружённым взглядом. Почему так важно помещать в статью о С++ даже всё то, что он унаследовал из Си? Для тех, у кого слабовато с аксиоматикой теории множеств, опишу наглядный мысленный эксперимент. На пол кладём конфету, на конфету сверху роняем коровью лепёшку, в результате чего получаем кучу, подмножеством которой является конфета. Согласно логике среднестатистического С++ника получается, что из того факта, что конфета изначально сладкая, прямо следует, что и накрывающий её навоз будет столь же сладким — в каком бы количестве мы его ни навалили, и чем бы корова до этого ни питалась. Тем, у кого слабовато и с проведением мысленных экспериментов, предлагаю самостоятельно поставить этот опыт и сравнить вкус конфеты до объединения множеств и после. Инструмент, в отличие от предмета антиквариата, выбирается перед началом работ на основании объективных технических характеристик, а не потому что имеет богатую историю. Поэтому всё, что С++ получил от Си, должно содержаться в статье про С++ (хотя и в другом порядке изложения, и совсем иначе влиять на оценку характеристик). Если выкинуть наследие Си, то можно с равным успехом выкинуть и наследие и Симулы, и ML, и тогда всё описание языка в статье будет состоять из одной строчки: «С++ является суммой Си, Симулы и плохо украденных идей ML, принципиально не совместимых с Си, вот и представьте себе результат.» Т.е. или не выкидываем элементы НИ ОДНОГО предка, или выкидываем все на равных. Arachnelis 11:15, 27 ноября 2013 (UTC)[ответить]

А что вы скажете по поводу фразы в статье C++: «C++ не является надмножеством C и не включает его в себя» ? (Честно говоря я немного удивлен, прочитав это, хорошо что АИ там не указано). ~Нирваньчик~ øβς 12:52, 27 ноября 2013 (UTC)[ответить]
Я думаю, вы и так предугадаете мой ответ ;) Arachnelis 18:04, 27 ноября 2013 (UTC)[ответить]

Если идея уже нравится, хочу сразу поднять вопрос об использовании следующих двух строк в разделе "Место и роль в информатике":

  • Standard ML: « Язык ориентирован на разработку больших и сложных программных систем. »
  • С++: « Язык часто используется в разработке больших и сложных программных систем, хотя и плохо подходит для этого. »

Проблема с формулировочкой в том, что второе утверждение полностью доказуемо, но повесить один конкретный АИ может оказаться затруднительным, а тянуть гирлянду ссылок прямо в голову статьи не хотелось бы. То, что С++ плохо подходит для сложного проектирования, будет рассмотрено в анализе его системы типов и средств абстрагирования - ссылки на Джойнера (до страниц) для этого есть. Но этот анализ составит экран текста, а в голове статьи нужна общая фраза. Обязательно ли вообще вешать ссылку, если далее по тексту вся необходимая информация точно будет? Или написать «(см.ниже)»?Arachnelis 11:15, 27 ноября 2013 (UTC)[ответить]

  • Второй пункт должен быть снабжен ссылкой на АИ. Такие резкие высказывания нужно подтверждать АИ обязательно. Я например первый раз слышу про это и для меня это смахивает на маргинальную теорию. Хотя я не занимался большими системами и некомпетентен в этом. А требуется ли АИ, если такой вывод можно сделать из самого текста статьи - это хороший вопрос, я бы и сам хотел узнать ответ. Надо наверное на Форуме спросить. ~Нирваньчик~ øβς 12:52, 27 ноября 2013 (UTC)[ответить]
  • В "маргинальных теориях" написано "Представляя то или иное явление в Википедии, не следует делать его более значимым, чем оно есть на самом деле". Значимо то, что С++ часто используется в разработке больших и сложных программных систем. Очевидно, тот факт, что он для этого плохо подходит, малозначим для тех, кто разрабатывает большие и сложные программные системы на С++. Экспоненциальный рост трудности разработки по мере укрупнения и усложнения проекта на С++ общеизвествен и ни у кого сомнений не вызывает. Увеличение проекта в два раза требует не удвоения персонала и/или сроков - усложняется работа каждого из разработчиков, усложняется менеджмент проекта, и общая сложность разработки подскакивает раз в восемь. Просто адепты С++ уверены, что такой рост сложности присущ программированию как таковому, а не специфичен для С++, т.к. никогда не видели крупных проектов на языках с развитыми средствами абстрагирования. Они не представляют себе, как 8 человек могут вести качественный, безглючный проект в 140 тыс.строк, например (я говорю о разработчиках MLton, который на С++ составлял бы под миллион строк). Но если обобщить (мы же тут говорим про все статьи о языках сразу), то энциклопедически некорректно было бы для одного плохого языка вместо "плохо" говорить "хуже, чем все остальные" или вешать примечание "а во всех остальных лучше". Беспристрастная формулировка такова, что С++ объективно плох в проектировании, но использующих его это мало волнует. Arachnelis 18:16, 27 ноября 2013 (UTC)[ответить]
  • Спасибо, хорошо разъяснили. В принципе, в таких формулировках можно этот кусок прямо в статью и вписать) только бы АИ найти). Просто, в своё время С++ создал себе негласную репутацию, что "лучше С++ ничего нет", что и ставило логический барьер... Хотя в моей голове он уже разрушен после знакомства с Java и Python. Т.е. каждому языку - своё место применения, своя ниша. ~Нирваньчик~ øβς 07:24, 28 ноября 2013 (UTC)[ответить]
  • Можно ещё так переформулировать, по-строже. В математике подвыражение всегда можно обозначить переменной (т.е. вынести в отдельную формулу), что обеспечивает возможность модифицировать это подвыражение без затрагивания общего выражения, благодаря чему изменение мат.модели на 50% требует переписывания лишь 50% формул. Усложнение мат.модели в десять раз собственно в десять раз её и усложняет, пардон за тавталогию. Если усложнение ТЗ на разработку (сиречь мат.модели) в десять раз приводит к усложнению разработки на С++ даже в двадцать раз (а на деле как минимум в тысячу), то с проблемой сложности С++ справляется по факту плохо (хуже голой математики). Какой язык справляется лучше - это уже другой вопрос. В гипотетической вселенной, где С++ реально является единственным способом программирования, найдётся кто-то, кто напишет, что это «программирование плохо справляется с ростом сложности ТЗ», и эту ошибку можно было бы счесть естественной, раз программирование - это ровно то же самое, что реализация математики посредством С++. У нас всё же есть и другие языки, и с проблемой сложности программирования они - о чудо! - справляются лучше. Вот как-то так. Добавлять такие сравнения в статью или нет - пусть решат администраторы. Лично мне всегда хватает одного упоминания, что где-то есть что-то другое - я сразу отправляюсь ознакомиться с этим "чем-то" - а вот предотвратит ли одно упоминание войну правок... Arachnelis 15:20, 28 ноября 2013 (UTC)[ответить]
Логика

Теперь я повторю вопрос насчёт очевидности, на который до сих пор не получил ответа.

Есть такая наука — логика. Во-первых, я не верю, что логические рассуждения в статье нельзя строить самостоятельно на основе АИ, а не цитировать откуда-то. Если в одной книге делается утверждение "A", в другой "B", а из "A+B" логически следует "C", которое не обнаружено ни в одной публикации — то разве нельзя прямо так взять и описать всю эту логику самостоятельно? Можно только цитировать, никаких рассуждений? Во-вторых, согласно законам логики, утверждение об отсутствии чего-либо по своей природе само не может подкрепляться доказательными примерами и может только опровергаться контр-примерами. Ну так, так ли уж обязательно ссылаться на конкретного Авторитетного Дядю, который на это отсутствие пожаловался в Научном Труде? Я считаю, что даже в случае войны правок можно составить абзац из двух частей — (1) ссылку на любого автора, упомянувшего хотя бы вскользь важность наличия этой вещи где бы то ни было и (2) собственно утверждение об отсутствии её в предмете статьи (уже, по определению, без ссылки). Обычно это сделать как минимум проще, чем перелопачивать всю библиографию всех изданий.

Вопросы эти важны, ибо имеет место фундаментальная проблема: реально потрудился опубликовать и закопирайтить обилие критики на С++, похоже, один только Ян Джойнер. Это не потому что на самом деле на С++, кроме Джойнера, никто не жалуется — любой профессионал может легко разнести в пух и прах С++ со всеми его идеями, обещаниями и фактами, и можно привести мириады постов с форумов — нет, этому есть конкретные причины. Во-первых, для профессионала утруждаться критикой лень, ему проще выбрать для себя удобный инструмент и работать себе в своё удовольствие; во-вторых, он считает, что спорить с дураками — значит, опускаться на их уровень, т.е. считает критику ниже своего достоинства; в-третьих, в современной академической науке, к сожалению, вообще нет практики обливать чужие творения помоями, даже если все в редакции данного научного журнала согласны, что это вещь из рук вон плоха — они дружно вернутся к первому пункту. Как следствие, в мире столько лженауки, словоблудий и паразитизма (один Фаулер чего стОит). В частности, малограмотные адепты С++ с остекленелым взором могут продолжать завлекать в свою тотально-деструктивную секту молодняк, продолжая приносить вред обществу, и потому нормального ПО до сих пор так мало и кругом одно говно (что С++ники наотрез отказываются хоть как-то соотносить с природой самого С++ — дескать, «это вот та конкретная группа была из криворучек, а сам С++ превосходен!»). Всвязи с этим я настаиваю, что совершенно корректным будет писать проверяемые ЛОГИКОЙ утверждения, в т.ч. сравнения («вот язык А так может, а С++ не может»), даже если их неоткуда процитировать. Я утверждаю, что если сторонник С++ захочет подобное утверждение удалить, то он должен сделать это строго следующим образом: перенести опровергаемое утверждение в особый раздел в обсуждении, повесив конкретную опровергающую ссылку — либо «С++ тоже так может», либо «на самом деле язык А тоже так не может». Только так! Никаких «а С++у этого и не требуется, потому что бла-бла-бла!». С++у требуется абсолютно всё — так его Автор Сказал — С++ прямо претендует на универсальность. Если конкретной опровергающей ссылки нет, то администраторы должны игнорировать жалобы от С++ников, что мол «этот обидный факт ни в одном АИ не отмечен, значит он не важен, удалите его». Вопрос общий, но я фокусирую его на С++ по причине того, что НИ К ОДНОМУ языку просто не будет столько критики, и сторонники НИ ОДНОГО ЯЗЫКА приводимую критику не будут столь отчаянно оспаривать.

Прошу администраторов проголосовать за согласие с этим.Arachnelis 11:15, 27 ноября 2013 (UTC)[ответить]

  • Не вступая сейчас в дискуссию по существу затрагиваемых здесь вопросов, хочу напомнить о том, что все языки эквивалентны машине Тьюригна. (Если я, конечно, ничего не путаю.) Различаются языки своими выразительными средствами. Чем выше уровень языка программирования, тем больше в нём выразительных средств. Когда средства хорошо развиты, то решение задачи можно предоставлять в естественных терминах. Если язык требует написания низкоуровнего кода, то, да, конечно, это можно назвать недостатком. Если бы был ровно один универсальный язык программирования, то все на нём и писали бы. Но здесь, в Википедии, задача не создать этот самый универсальный язык, а, всего лишь, грамотно описать существующие. Не в смысле, научить программировать (для этого давайте напишем несколько Викиучебников), а в том, смысле, чтобы дать чёткое представление о каждом языке. И тут надо не копья ломать, а статьи делать. А это уже работа с источниками, ибо нельзя просто так что-то такое основательное написать. И администраторы здесь, как мне кажется, совсем ни причём. --OZH 11:58, 27 ноября 2013 (UTC)[ответить]
    • насчёт "язык требует написания низкоуровнего кода, то, да, конечно, это можно назвать недостатком": а драйвера на чём писать? (Idot 14:57, 27 ноября 2013 (UTC))[ответить]
      • Драйвера - на Си. Когда Си перестаёт хватать, надо либо повышать уровень семантики (например, перейдя на BitC или Cyclone), либо производить декомпозицию на несколько языков и сращивать их посредством Си. Но не склеивать несколько несовместимых между собой семантических моделей в один "язык". Например, исключения (exceptions) не применимы в языке с ручным управлением памятью - они требуют автомата, иначе резко страдает стабильность программ. Arachnelis 18:22, 27 ноября 2013 (UTC)[ответить]
      • upd: Поэтому и получается картина, искренне изумляющая всех адептов С++: если Си хороший язык, и ML хороший язык, и Симула вроде ничего так, то почему же
        Си + Симула + ML = тихий ужас
        
        ??? Из-за несовместимости хороших вещей между собой! Между исключениями в ML и исключениями в С++ разница получается примерно такая же, как между прогулками слона по Африке и по посудной лавке. И на вопросы о том, на какой стадии находятся реализация в С++ чего-нибудь (например, темлейтов и библиотек на них), всегда можно будет отвечать строкой из старого советского анекдота: «пока только намазывается хорошо». Природу С++ предопределил автор, и очень подробно описал все свои заблуждения в D&E. И то, что "язык" - это НЕ система (хотя по определению язык - это формальная система, и структурная лингвистика об этом не забывает), и то, что он не должен исключать человеческий фактор (это из формального-то процесса, ага), и всё прочее. Страуструп открытым текстом противоречит всем наукам о языках. При этом в "предвзятости" обвиняют почему-то именно критиков, а не сторонников С++. Arachnelis 15:15, 28 ноября 2013 (UTC)[ответить]
    • Так и я пытаюсь добиться объективности и непредвзятости! В этом-то и проблема, что адепты С++ чихать хотели на объективность и непредвзятость. Для них С++ священен, его нельзя поминать в суе, и пути страусовы неисповедимы. Вы вспомните, с чего начался весь этот сыр-бор - с того, что некий Enerjazzer принялся удалять из статьи про С++ объективную критику, потому что она роняла авторитет Великого и Могучего Языка Программирования Си С Двумя Плюсами! Arachnelis 18:49, 27 ноября 2013 (UTC)[ответить]

Организация

Википедия и Викиучебник

Единственное, о чём следует подумать отдельно, так это о написании (параллельно написанию статьей в Википедии) соответствующих статей в Викиучебнике: статья в Виипедии — это развёрнутое введение в предмет (язык программирования), а статья (или цикл статей) в Викиучебнике — это введение в практику программирования с упором на решение задач. --OZH 05:29, 21 ноября 2013 (UTC)[ответить]

Шаблон о сравнении языков

Случайно наткнулся на Шаблон:Сравнения языков программирования. Очень жалкое зрелище, в таком виде просится на КУ. Может быть, будут какие предложения и по нему, раз уж занимаемся статьями по языкам? РоманСузи 21:41, 4 января 2014 (UTC)[ответить]

  • А он вообще зачем по идее? Чего хотел создатель? Я что-то смысла в шаблоне со сравнением не вижу. Пятью строчками в этой теме не обойдёшься, это тема для статьи, даже нескольких. Если мне кто-нибудь не объяснит реальное назначение его, я за удаление. upd: а может, в названии не орфографическая ошибка, а автор как раз хотел систематизировать системы классификаций? Типа, сравнение по парадигмам, по эффективности, по цвету и вкусу... Arachnelis 17:15, 9 апреля 2014 (UTC)[ответить]
  • Решил проверить наличие аглицкого эквивалента, залез на en:Comparison of programming languages и офигел. Можно не заморачиваться с поиском глубинного смысла в находке, а просто переводить. Текста там кот наплакал, в основном форматирование. Arachnelis 14:12, 10 апреля 2014 (UTC)[ответить]

Учебный язык программирования

Статья мной потихоньку пишется. В планах — доведение до хорошего/избранного списка. Хотя пока времени мало, а у статьи — со времени её попадания на КУ, где я её и приметил — единственный автор — это я. Что несколько обидно. Когда обеспечу сколь-нибудь приемлемую широту охвата, выставлю на рецензирование, но пока это такой стаб (пусть большой и со сносками) — рано. Но хотелось бы обратится к единомышленникам, заинтересованным в её развитии. --be-nt-all 17:56, 8 апреля 2014 (UTC)[ответить]

  • Я заинтересован, но по времени не гарантирую. Буду заглядывать если чего поправить. Возникнут конкретные вопросы — обращайтесь в личке. Только про ML не забудьте — и Standard ML, и OCaml весьма часто преподаются первыми языками. Ими я планирую плотно заниматься, так что по ходу что-то может всплыть. Удивило, что в английской статье я поиском по странице их не нашёл — только Окамл в скобках один раз упоминается. Arachnelis 18:26, 8 апреля 2014 (UTC)[ответить]
  • Помнить то помню… Но вот к примеру курс вроде SICP или en:CTM для ML не припомню. Есть конечно Little MLer, есть курс по ФП Джона Харрисона (пусть и неизданный). Но тут кстати и Hope не упомянуть нельзя, книга другого Харрисона, который Питер — обязывает. В общем это не ради спора — жду наводок --be-nt-all 19:07, 8 апреля 2014 (UTC)[ответить]

Навигационный шаблон "Языки программирования"

Обтачиваю в личке уже давно, близится к завершению (последние правки уже идут абразивом тыщ на 10-12). Прошу оценить, указать на откровенно неправильные решения и мелкие недочёты. Если серьёзных претензий не будет, к маю запущу на чисто. Arachnelis 18:34, 8 апреля 2014 (UTC)[ответить]

  • Ну лично мне (как админу и википедисту) тут ОРИСС чудится, но я вообще к навигационным шаблонам скептически настроен, как к классу. Хотя как программист — в общем согласен. Правда удивлён, отсутствием Симулы в верхней строке, да и Снобол, хотя бы как предтеча Регекспов достоин чуть большего чем помещения в список DSL. Но мне формат подобных списков кажется уместным скорей привязанным к википорталам. Посему, скажем воздерживаюсь… --be-nt-all 19:28, 8 апреля 2014 (UTC)[ответить]
  • Чем он будет удобнее ссылки на Список языков программирования по категориям? Таблицей можно и существующий список украсить, зачем же пихать большой список во все статьи. ~Sunpriat (обс) 08:32, 9 апреля 2014 (UTC)[ответить]
  • Да, этот список явно стоит допиливать как в плане оформления, так и в плане источников. Шаблон если и нужен, то как производный к этому списку. --be-nt-all 12:45, 9 апреля 2014 (UTC)[ответить]
  • Что-то суждение только о Большом Брате, а о Малом и самом факте раздвоения — ни слова. А ведь это самая главная фишка — вместо былых споров «что вставлять в него, а что нет» я сделал все с выделением статистически значимых. И удобно, и полноценно одновременно. Ладно, рассматриваем Большого. Во-первых, что за брезгливое отношение к DSL’ям? Они всегда рулили и всегда будут рулить, гораздо больше, чем все языки общего назначения вместе взятые. То есть помещение языка общего назначения в разряд DSL’ей — это вообще-то комплимент. Я бы продублировал многое в разделе DSL (Смолток, например), но то действительно будет орисс. Ладно. Я вчитался в английскую статью про Снобол, да, продублирую его в высокоуровневых и в списке реализаций регэкспов. Такие вещи подкидывайте кто чего знает, один человек не может знать все языки на свете. Что до самих РегЭкспов, то они вроде как ещё в 40-х появились, так что не Сноболу принадлежит новация. Симула ничего нового науке не дала — это «Алгол с классами» - банальное синтаксическое помещение функций в записи. Это не смена семантики, а просто структурирование кода, которое легко выполняется ручками в чисто процедурных языках. ООП породил Смолток, это доказано, только упёртыми фанатами потомков Алгола не признаётся. Они пишут в процедурном стиле, синтаксически обрамляя свой код классами и разными buzzword типа метаклассов, и думают, что строят объектные модели, когда на деле это просто модульность+инкапсуляция, и не более того. То есть де-факто именно приписывание новации ООП Симуле как раз ориссом и является. Объективно первым ОО-языком является Смолток. Arachnelis 17:02, 9 апреля 2014 (UTC)[ответить]
  • Что до категории, то этот шаблон удобнее на порядок, так как наглядно отражает семантические и хронологические связи между языками. Это не только позволяет быстро отыскать глазами известный язык, но и открыть для себя неизвестный. То есть он, в отличие от плоского списка, имеет познавательный эффект, и делает пользование энциклопедией куда более интересным. Категория эта ваша воспринимается как тихий ужас, я бы ей не стал пользоваться. При составлении шаблона я даже не задумывался о её существовании. Arachnelis 17:02, 9 апреля 2014 (UTC)[ответить]
  • … по-хорошему, я против подобных шаблонов в принципе, но проект всяко лучше нынешней каши, стоящей в подвале статей о ЯП, так что скорее за… --be-nt-all 05:22, 12 апреля 2014 (UTC)[ответить]
  • Шаблон выставили на удаление. К сожалению, не знаю чем можно помочь. Источник найти не проблема — взять например Одинцова Проф. программирование системный подход (там кстати HTML к ЯП отнесён), да ещё что-нибудь по функциональной специфике. Другое дело, нужно сообразить, use cases для данного шаблона, исходя из чего можно будет его разбить на части или поменять. То есть, представить реального читателя: для чего ему нужен этот шаблон? Если нужны параллели (например, зашёл на Agda, откуда узнал, что есть Coq), то и шаблон должен быть только для данной категории. Если при этом читателя просвещаем, что языки есть «лямбда» и «не лямбда», «Х-М» и «предикат», то боюсь мимо цели: те, кто на основе этих ориентиров будет искать, не нуждаются в шаблоне. Может, в Википедии есть какое средство сделать динамический шаблон, чтобы скажем выбрать набор признаков (уровень языка, парадигма, применение), а «шаблон» бы открыл список? В общем, немного в сомнениях как можно спасти труд коллеги. Может, на страницах проекта или Портала ИТ может пригодиться? РоманСузи 21:02, 27 декабря 2014 (UTC)[ответить]

Мультипарадигмальный язык программирования

Предложил переименовать, но не могу найти АИ. Простая логика превратилась в холивар. Принять участие есть желающие? Arachnelis 18:42, 12 апреля 2014 (UTC)[ответить]

Tcl спасать надо

В своё время статья Tcl была избрана хорошей. Сейчас на мой взгляд она более не удовлетворяет (посмотрите сами). Может быть, найдётся герой, который ситуацию изменит? Не так много у нас хороших и избранных статей по ЯП! РоманСузи 07:44, 9 декабря 2014 (UTC)[ответить]

@РоманСузи: можно конкретизировать? Содержание нормальное, проблемы традиционные: вп-некатклог, вп-проверяемость. ~Sunpriat 07:58, 9 декабря 2014 (UTC)[ответить]
Конкретизировал на Обсуждение:Tcl#О качестве статьи. Вы правильно указали две основные проблемы, но есть ещё и общее необъяснимое чувство «неряшливости», из-за которого я и удивился, увидев звездочку. РоманСузи 14:33, 9 декабря 2014 (UTC)[ответить]
За конкретизацию спасибо, а так сам знаю что надо спасать… (Это таки моя первая статья как зарегистрированного редактора). Да и просто устарело многое. Сейчас собираю материал. --be-nt-all 06:54, 23 февраля 2015 (UTC)[ответить]

Объединение ссылок и указателей

Я оставил запрос на объединение. Пожалуйста, отпишитесь те, кто в курсе… --Higimo 06:17, 18 ноября 2013 (UTC)[ответить]

  • Неправильное определение. В С++ ссылка - это авто-разыменовываемый константный указатель. На это понятие дополнительно накатан авто-вызов конструкторов и деструкторов, но это уже выходит за рамки системы типов. В ML "ссылочный тип" - совсем другое понятие. В ML все объекты являются константными (объявление, например "int"), а reference ("int ref") - это контейнер, который делает его мутабельным (изменяемым), т.е. даёт возможность присваивания. В Python абсолютно все объекты являются ссылками (в значении, похожем на С++ное) - даже числа. Так что лучше статью про ссылки вообще удалить. Arachnelis 13:21, 8 декабря 2013 (UTC)[ответить]
  • Советую перевести статью Ссылка (программирование) с английской en:Reference (computer science) как с гораздо более вменяемой, а статью Ссылка (C++) удалить. Arachnelis 15:57, 4 февраля 2014 (UTC)[ответить]
  • Насчёт удаления Ссылка (C++) я передумал, это понятие достаточно своеобразно. Из Ссылка (программирование) С++ тогда надо ликвидировать, лишь кратко сослаться и перенаправить. Займитесь С++ной, а я вскоре думаю перевести основную, может по ходу даже доработаю. Arachnelis 18:28, 8 апреля 2014 (UTC)[ответить]

Встроенное программное обеспечение компьютерной техники vs. операционной системы

Большая просьба к участникам проекта/разбирающимся в теме разобраться как должны различаться эти понятия. Проблема в том, что есть страница Встроенное программное обеспечение, где фактически описывается "прошивка" или BIOS, т.е. "привязанный к железу" софт, а только что IP-участник начал (не знаю, будет ли продолжать) Встроенное ПО о пользовательском софте, устанавливаемом с операционной системой. Понятие тоже значимое, тем более, что в EnWP в en:Integrated software. Просьба хотя бы разобраться с названиями, а то даже не переименуешь полноценно... Tatewaki 16:30, 2 сентября 2013 (UTC)[ответить]

Integrated именно интегрированное, возможно там было en:preinstalled software, но уже удалили.~Sunpriat 14:31, 3 сентября 2013 (UTC)[ответить]

АИ

Коллеги, статья Архив (информатика) нуждается в АИ с января 2009 года. --Pessimist 17:00, 1 сентября 2013 (UTC)[ответить]

Добавил в литературу статью из которой можно вытащить ссылки на книги и описание книг.~Sunpriat 16:05, 3 сентября 2013 (UTC)[ответить]

Спецификация Java-портлетов

Просьба отпатрулировать статью Спецификация Java-портлетов. Обсуждение, дополнение, исправление статьи — приветствуется. --Lige 07:22, 27 мая 2013 (UTC)[ответить]

Сomputer scientist

Кто такой en:computer scientist? Вики-переводчик бессилен. В 19 разделах статья есть, а у нас нет. МетаСкептик12 10:12, 13 февраля 2013 (UTC)[ответить]

Обычный учёный в области информатики. В fr и de-wiki употребляется "информатик", но на русском находятся только и-аналитик и и-экономист. В орфо-словаре есть [5] [6] отдельное слово информатик, а где уж употребляется - не знаю. Из переводов есть тут и тут. Из подобных статей нашёл только астронома и географа. Заодно можно продублировать категорию en:Category:Science occupations.~Sunpriat 21:46, 13 февраля 2013 (UTC)[ответить]
Спасибо. Был бы благодарен за шаблон лауреатов-информатиков и математиков для Премии Париса Канеллакиса. МетаСкептик12 08:45, 19 февраля 2013 (UTC)[ответить]
{{Лауреаты премии Париса Канеллакиса}}~Sunpriat 15:02, 19 февраля 2013 (UTC)[ответить]
Спасибо. МетаСкептик12 10:04, 20 февраля 2013 (UTC)[ответить]

Статья «Информатика»

Меня интересует статья «Информатика». Что можно и/или нужно делать с этой статьёй? Что нужно сделать с этой статьёй, чтобы довести её до статуса хорошей? OZH 11:36, 12 января 2013 (UTC)[ответить]

Есть градация, требования. Для начала, развести понятия en:Informatics, computing science, information science; переписать определение со ссылками на серьёзные русские аи, а этимологию выделить в отдельный раздел - советский/российский/зарубежный термин, термин-аи-перевод и факт-аи-перевод. Лучше если аи будут под авторством нескольких человек. Разделить по частям и удалить всегда успеем.~Sunpriat 13:06, 12 января 2013 (UTC)[ответить]
Добавил этимологию. Нахватает предмета, объекта, истории (советской), методы (алгоритмизация, мат.моделирование, программирование), мат. основы (где-то видел "аксиомы И.").~Sunpriat 05:07, 18 января 2013 (UTC)[ответить]

Смущает размещение набора инструкций 3DNow! в секции Intel: сколько помню, он характерен для процессоров производства AMD. Это ошибка? Есть ли другие несоответствия? 46.251.66.18 12:25, 17 октября 2012 (UTC)[ответить]

А также 3DNow! Extension. Это расширения системы команд Intel x86, предложенные компанией AMD. Компания AMD ведь тоже выпускает процессоры с системой команд x86. Данные расширения не являются сами по себе системами команд. Softy 15:47, 11 января 2013 (UTC)[ответить]

USB возможная ошибка

Не являюсь специалистом. вот статья USB. в ней USB 1.0 цитата: "

  1. максимальная длина кабеля для режима с высокой пропускной способностью — 5 м [1]
  2. максимальная длина кабеля для режима с низкой пропускной способностью — 3 м [1] "

мне кажется наоборот высокая-3м, низкая-5м

исправьте кто в теме 85.26.232.185 17:17, 8 декабря 2011 (UTC)[ответить]

Объединение GUID и UUID

Уведомляю о номинации. Требуются мнения. Andrey Putilov 20:07, 30 ноября 2011 (UTC)[ответить]

Если здесь есть кто активный, посмотрите, пожалуйста. Andrey Putilov 14:33, 9 ноября 2011 (UTC)[ответить]

Работа над статьями, связанными с .NET

Собираюсь приступить к работе над статьями, связанными с .NET. Соответственно, нужна помощь, а именно хотелось с кем-нибудь объединиться и довести эти статьи/списки до хороших/избранных. Работу предлагаю начать с заглавной статьи .NET Framework, а то там вообще ничего толком не написано. Филатов Алексей 13:15, 9 марта 2011 (UTC)[ответить]

Помогите разобраться и навести порядок. Есть общая статья Планшетный компьютер — в которой кратко описываются всевозможные компьютеры относящиеся к этому классу. Также в этой статье перечислены подклассы Планшетных компьютеров: 1) Планшетный ПК, 2) Тонкий ПК, 3) Ультрамобильный ПК, 4) Интернет-планшет, 5) Мобильное интернет-устройство, Электронная книга (устройство). На мой взгляд всё вполне логично, хотя может быть я и ошибаюсь.

Но сегодня регулярно происходит путаница и например в статье Интернет-планшет люди начинают добросовестно вписывать информацию относящуюся к классу Планшетный ПК — совершенно не понимая разницы. И точно также случаются казусы, когда начинают дорабатывать статью Планшетный ПК вписывая в неё информацию относящуюся исключительно к Интернет-планшетам. Чтобы этого не происходило было предложено объединить обе эти статьи в одну — см.: Википедия:К_объединению/16_сентября_2010#Планшетный_персональный_компьютер_и_Интернет-планшет.

Мне кажется, что объединение этих статьей не совсем логично. И может быть стоит просто переименовать статью Планшетный персональный компьютер, сделав основным её названием Планшетный ПК — ведь такое название больше соответствует западному термину Tablet PC? Тогда может быть эту статью перестанут всё время путать со статьями Планшетный компьютер и Интернет-планшет. Мне хотелось бы чтобы сообщество поучаствовало в обсуждении объединения статей и пришло к окончательному решению. Помогите пожалуйста навести порядок и найти верное решение. --ZBoris 15:33, 3 марта 2011 (UTC)[ответить]

Разбираем завалы:

V0d01ey 18:56, 16 января 2011 (UTC)[ответить]

Избранные статьи с запросами АИ

В статьях Opera и Steam висят незакрытые запросы источников. Pessimist 12:45, 5 декабря 2010 (UTC)[ответить]

Предлагаю объединиться и довести статью до хорошей, а то ведь тема важная. --Guranvir 14:15, 18 августа 2010 (UTC)[ответить]

В новой статье 8514_(display_standard), кстати, не совсем правильно названной (с учётом того, что выделять в отдельные статьи описания собственно стандарта, дисплея (почти не клонированного) и адаптера в этом случае, ИМХО, не разумно), указана частота чересстрочной развёртки в 43.5 Гц, как и в англовики. У меня эта цифра вызвала некоторые сомнения, поскольку в отечественных описаниях я чаще встречал описание частоты чересстрочки (любой, но в первую очередь телевизионной, где пишут 50Гц чересстрочной, а не 25) через частоту полукадров, а тут указана частота прорисовки полного кадра. Marlagram 19:25, 29 мая 2009 (UTC)[ответить]

Отвратительное состояние статьи Оперативная_память

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

В современных вычислительных устройствах, оперативная память выполнена по технологии динамической памяти с произвольным доступом (англ. dynamic random access memory, DRAM).

А SRAM? Особенно в разного рода контроллерах? Да и исторически неверно... А потом идёт блок "Пример логической адресации", сейчас уже имеющий в основном историческую ценность... Marlagram 01:31, 13 мая 2009 (UTC)[ответить]

Постараюсь помочь. Присоединяйтесь. В рамках проекта таких статей, к сожалению, немало, не знаешь за что браться в первую очередь. Softy 13:32, 13 мая 2009 (UTC)[ответить]

Псевдомегагерцы в статьях о процессорах

Здесь находятся завершившиеся обсуждения. Просьба не вносить изменений.

Во всех продвинутых **-вики, за исключением, разве что, de-вики, в статьях о процессорах при указании скорости шин используются мегатрансферы в секунду (200 МТ/с), что является гораздо более корректным, чем использование "эффективных мегагерцев", как это сейчас принято у нас. Хотя бы потому, что при указании, к примеру, частоты шины 200МГц у какого-нибудь атлона, непонятно, о какой именно частоте идёт речь - 100 МГц (200 МГц DDR) или 200МГц (400 МГц DDR), а если указать 200 МТ/с, сразу понятно, что речь идёт о первом варианте. Есть у МТ/с примерный аналог на русском языке - "миллионы транзакций в секунду", но он весьма коряв и, к тому же, довольно редко используется. Надо чего-то с этим делать. -- Доставлено Анонимусом с IP-адресом 91.77.71.250 ровно в 15:39, 3 мая 2009 (UTC)[ответить]

  • Нужно написать сначала куда-нибудь про эти «транзакции в секунду»..Мегагерцы из шаблона убирать не стоит, но МТ/с еще строчкой ниже можно всавить..Если никто не возьмется, то летом сделаю ~Toutaku 18:19, 13 мая 2009 (UTC)[ответить]
  • Устаканилось мега/гига передач в секунду «мегапередача/с», оно же сейчас испоьзуется в карточке процессора отдельным параметром. За сим закрываю :) ~Sunpriat 10:39, 29 декабря 2014 (UTC)[ответить]