6 заметок с тегом

алгоритм

Как написать научную статью. 4. Работайте параллельно над несколькими статьями

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

Регулярно все записывайте

Далее расскажу где и как.

Где записывать

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

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

Сейчас я перешел на Эгею.

Эгея — это движок для ведения блога, созданный Ильей Бирманом. Ее легко установить, в ней просто работать. Этот блог работает на Эгее.

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

Записывайте в черновиках блогодвижка

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

Как записывать

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

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

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

Пересказывайте опубликованные мысли

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

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

Ссылаюсь на авторов и год публикации
В тексте ссылаюсь на статьи по имени первого автора и году, записываю в квадратных скобках: [Иванов, 1913], [Bond et al., 1956], [Пух, Пятачок, 1980]. По такой ссылке легко отыскать первоисточник. Она намного удобнее абстрактных чисел: [1, 7, 15]. Не могу понять, почему в отечественных изданиях упорно продолжают использовать числовые ссылки. Редакторы, пора с этим заканчивать!

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

Кратко конспектируйте библио-ссылки

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

Это главные рекомендации. Есть еще детали, но я их вовремя не записал и теперь забыл.

Что делать

  1. Работайте над статьями параллельно.
  2. Регулярного все записывайте.
  3. Пересказывайте чужие мысли.
  4. Ссылайтесь на публикации по автору и году.
  5. Храните исходники иллюстраций для каждой статьи.
  6. Чередуйте сидячую работу с подвижным отдыхом.
  7. Будьте здоровы.

Метаалгоритмический язык

Выдержки из статьи В. Ф. Турчина (1968) «Метаалгоритмический язык». Кибернетика, № 4. C. 45-54.

Цель

Метаалгоритмический язык (метаязык) задуман для формального описания семантики алгоритмических языков.

Метаязык — алгоритмический язык

Метаязык сам является алгоритмическим языком. На любом универсальном алгоритмическом языке можно описать семантику любого другого алгоритмического языка. Поэтому выбор того или иного алгоритмического языка в качестве метаязыка — это вопрос удобства. Хотя на практике, «неудобство» часто означает «невозможность».

Метаязык для человека, а не для машины

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

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

Особенности человеческого языкового мышления

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

Иерархия понятий в естественном языке: морфемы — лингемы — абстрактные и сложные понятия

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

Языковые объекты, расположенные на самых низких этажах пирамиды, фиксируют наиболее конкретные, близкие к чувственному опыту понятия: «больно», «холодно», «заяц», «камень». На их основе строятся более абстрактные и более сложные понятия. На их основе — еще более сложные и так далее. Все эти понятия фиксируются языковыми объектами.

Где-то на средних этажах пирамиды расположены понятия «север», «число», «работа», «чин». А где-то на самом верху — «отчуждение», «гомозиготный», «бикомпактность».

Мера абстрактности и сложности понятий

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

Что значит понимать

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

Понимать абстрактное понятие — значить уметь его конкретизировать (в каждой заданной ситуации).

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

Конкретизация

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

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

Cемантика языкового объекта определяется правилом его конкретизации. Семантика языка — совокупностью правил конкретизации, которая позволяет путем ряда шагов свести каждый объект к некоторым несводимым элементарным объектам.

Формальная основа метаязыка

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

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

Металагоритмическая машина

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

Работа метаалгоритмической машины моделирует языковую деятельность человека.

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

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

Моделирование мыслительных процессов

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

Общение человека с машиной и моделированиечеловеческого мышления — это, по существу, две стороны одной медали.

* * *

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

Как написать научную статью. 3. Пишите в активном залоге с ясным подлежащим и сказуемым

Мне несколько раз говорили, что писать научные статьи от первого лица не принято. Надо писать косвенно: от третьего лица или в пассивном залоге. В редком случае можно написать мы, даже если я — единственный автор.

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

Но еще задолго до Макса нормальные авторы писали энергично.

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

Поэтому, если вы взялись за статью — пишите в активном залоге, от первого или второго лица, с ясным подлежащим и сказуемым.

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

Я рекомендую так писать каждому исследователю. А чтобы научиться — изучите «Справочник Главреда», пишите чаще и читайте хорошие книги.

И не забудьте отдохнуть.

Как написать научную статью. 2. Отдохните

Если сесть и начать писать статью не получается — отдохните.

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

Научитесь качественно расслабляться. Для этого освойте шавасану.

Соберитесь мыслями и садитесь за статью. Предварительно решите, о чем писать не будете.

Как написать научную статью. 1. Решите, о чем писать не будете

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

Научный сотрудник производит публикации

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

Не путайте с ВОЗом, заставившим нас сидеть дома.

Большой секрет

Скажу по большому секрету: качество опубликованных статей абсолютно никого не интересует. Иначе нас окружали бы только полезные и крайне интересные работы.

Качество научных публикаций никого не интересует

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

Кроме того, есть риск, что опубликованные в статье идеи будут рецензентами «зарезаны», а потом использованы ими же в своих статьях. Именно для таких случаев рекомендуют новые интересные результаты предварительно печатать в открытых репозиториях: Биорхив — для биологов, Архив — для математиков, физиков, программистов и цифровых биологов.

Самый большой секрет

Скажу еще по одному очень большому секрету: публикацию в некоторых журналах можно купить. Не заплатить за открытый доступ к статье (хотя это тоже своеобразная покупка публикации), а именно купить за фейковую рецензию. Такую практику, как ни странно, используют некоторые отечественные журналы. За это им стыд, позор и минус в карму. А я публикуюсь только в бесплатных журналах.

Если вы такой же, продолжим.

Итак, писать надо, надо писать много, а не получается. Что делать?

Путь к написанию статьи

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

Первое, что я придумал: надо четко решить, о чем писать не надо.

Надо решить, о чем не писать

Этот совет подсмотрел у Темы Лебедева «Выбор направления деятельности».

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

Не писать локальные заметки

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

Локальные заметки имеют примерно такие названия:

  • Новые данные о динамике состава чего-то там в вершинной части Севастопольской бухты
  • Загрязнение вод крымского побережья Черного и Азовского морей чем-то там зимой 2016 года
  • Изменчивость пространственного распределения чего-то там в фотическом слое Черного моря летом 2018 г.
  • Сезонная изменчивость чего-то там у берегов Кавказа в 2020 г.

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

Ценен результат, а не премия

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

Пишите не ради баллов, а ради общей пользы и так, чтобы вам самим было интересно писать и перечитывать написанное

Для просветления рекомендую настоящим ученым послушать лекции Людвига, почитать ЖЖ и покопаться в «Соли».

Успехов.

Ссылки для работы — 1

Построение векторной границы растровой области

Столкнулся с необходимость написать алгоритм для преобразования растровой области в векторный многоугольник. Границы многоугольника должны проходить по границам растровой области. Нашел алгоритмы:

  1. Движущихся квадратов (marching squares). Простейший.
  2. Четыре других алгоритма. Среди них наиболее удачен «More-Neighbour tracing. Using Jacob’s stopping criterion will greatly improve the performance of Moore-Neighbor tracing making it the best algorithm for extracting the contour of any pattern no matter what its connectivity.»

Заливка области цветом

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