• Ученые впервые показали реальное «фото» черной дыры
    +2
    Жаль, что Хокинг не дожил.
  • Монады с точки зрения программистов (и немного теории категорий)
    0
    «Первоначально он отнёсся ко мне неприязненно и даже оскорблял меня, то есть думал, что оскорбляет, называя меня собакой, — тут арестант усмехнулся, — я лично не вижу ничего дурного в этом звере, чтобы обижаться на это слово…»
  • Монады с точки зрения программистов (и немного теории категорий)
    +1
    Про что-то более конкретное, типа хаскелистов или даже теоретиков категорий. Ни к тем, ни к другим, себя не отношу :)
  • Монады с точки зрения программистов (и немного теории категорий)
    0
    А, поняла, про что вы. Там имеется в виду, что результирующая категория, взятая как пример крайнего случая, состоит из одного объекта и одного морфизма. Т.е. это не происходит потому, что функтор так действует, а потому что мы изначально такую захотели рассматривать. Попробую переформулировать чётче эту часть, спасибо.
  • Монады с точки зрения программистов (и немного теории категорий)
    0

    Так это нигде и не утверждается… Если тот же тип Bool взять как единственный объект и функции Bool -> Bool как морфизмы, то их 4 штуки показано. Мне просто не хотелось для каждой стрелочку рисовать, чтобы рисунок не загромождать.

  • Монады с точки зрения программистов (и немного теории категорий)
    +2
    А «нас» — это кого? К какой категории (извиняюсь за каламбур) вы меня отнесли?
  • Монады с точки зрения программистов (и немного теории категорий)
    0
    Спасибо, поправила ссылку.
  • Монады с точки зрения программистов (и немного теории категорий)
    +1
    Если говорить о типах в Haskell, то, конечно, `Void` и `()` — совершенно разные вещи.
    Если сравнивать пустой кортеж и `Void` в Haskell с тем, что обозначается словом `void` в С, то **сишный** `void` — аналог пустого кортежа в Haskell, но не аналог ненаселённого типа `Void`.
    В книжке, на которую я ссылаюсь, это тоже есть: bartoszmilewski.com/2014/11/24/types-and-functions
  • Монады с точки зрения программистов (и немного теории категорий)
    +1

    Если вы про void, который в С-подобных языках, то это действительно то же самое, что и пустой кортеж. Т.е. то, что используется, если нам не важен результат:


    void main(void) {..}
    
    main :: IO ()

    К сожалению, такая вот путаница с названиями.

  • Как я пишу конспекты по математике на LaTeX в Vim
    0
    Некоторые лекторы у нас на факультете перед лекцией выкладывают конспекты и/или слайды презентации, по которым потом и будут читать, и рекомендуют это скачать/распечатать и потом во время лекции не строчить всё это с нуля, а следить за повествованием и делать заметки с пояснениями, примерами и всем, что покажется нужным. Тоже было довольно эффективно.
  • Как я пишу конспекты по математике на LaTeX в Vim
    +2
    Это прекрасно! Особенно если не будет мешать восприятию материала. Я вот конспектировать на компьютере не могла, это очень отвлекало, и после нескольких попыток начать записывать хотя бы plain text возвращалась к ручке и бумаге. Мой мозг запоминает значительную часть материала, если он написан от руки. Конспекты получались, к стати, довольно разборчивые и красивые, поэтому были порывы это всё потом заверстать в LaTeX либо во время подготовки к экзамену, либо в каникулы после сессии, но руки не доходили :(

    Тут есть ещё один нюанс — если конспектировать какие-нибудь математические лекции на русском в vim, то можно сойти с ума, запутавшись в раскладках и набрав команды vim'а на русском. Особенно досадно, когда команды в обеих раскладках что-то значат (а ведь практически любая последовательность символов — это валидная команда vim'а :D), и редактор творит что-то непредсказуемое. Набирала значительное количество текстов на русском в vim, и такая фигня происходила довольно часто (у кого это нормально получается, поделитесь секретом?). Если во время конспектирования на лекции такое произойдёт, скорее всего сильно отстанешь от изложения.

    В любом случае, в статье много крутых штук описано и безотносительно лекций, настрою себе обязательно.
  • Аппликативные парсеры на Haskell
    +2
    Вот вы иронизируете, а вот документация к одной из самых известных библиотек на Хаскеле: hackage.haskell.org/package/lens-4.17/docs/Control-Lens-Lens.html
    А вот часть списка определённых в ней функций: hackage.haskell.org/package/lens-4.17/docs/doc-index-60.html

    Не встречала ещё тех, кто был бы к этой библиотеке равнодушен, её либо любят и везде используют (ведь названия операторов такие очевидные и интуитивно понятные), либо не используют никогда и другим не советуют.
  • Аппликативные парсеры на Haskell
    +2
    С перекрытием имени `f` и правда очень нехорошо вышло, спасибо, что ткнули, сама не заметила :( Но зато это иллюстрирует, как обстоят дела со связыванием в языке.

    По поводу одинаковых названий переменных типа и переменных в коде, такое лично меня запутывало на ранних стадиях обучения (и не только меня, видела ещё пару студентов с такой проблемой буквально в этом семестре). Начинает казаться, что тут типы first-class. Скорее всего это тоже дело вкуса, но с тех пор сама так не пишу.
  • Аппликативные парсеры на Haskell
    +1
    Очень плюсую. Как раз сидела думала, в какую бы ветку написать, что пост совсем не про коммерческую разработку и что к каждому вырванному из контекста куску кода с очень непонятными переменными прилагается несколько абзацев пояснений.
  • Аппликативные парсеры на Haskell
    +1
    Даже не знаю, как правильно ответить на ваш вопрос, кроме как руками помахать и сказать, что «так принято», «все так делают», «меня так научили», «я так привыкла» и т.п.
    Скорее всего это пришло из теории категорий. И сам язык располагает к использованию компактного синтаксиса, инфиксных синонимов и коротких имён в том числе.
    Но надо сказать, что многобуквенные переменные типа не так уж и редко встречаются.
  • Аппликативные парсеры на Haskell
    0
    Думала написать похожий туториал про монадические парсеры, но пока даже не могу предположить, когда руки дойдут. Дальше раскрывать тему аппликативного подхода не собиралась, так что с удовольствием почитаю, если вы про это напишете, мне тоже тема интересна.

    Я старалась избегать в примерах таких конструкций, их красоту трудно понять новичкам, оно скорее может отпугнуть. Но надеюсь, что добравшиеся до комментариев осмыслят и оценят этот вариант, тут вся сила языка просматривается. С такими небольшими красивыми этюдами можно даже отдельный пост делать.
  • Как правильно: IT термины по-английски
    +1
    Похоже на финский :)
  • Как правильно: IT термины по-английски
    0
    «Operator» и «statement» в контексте языков программирования вносят много путаницы. Потому что исторически сложился перевод «operator» = «операция», а «statement» = «оператор».

    Ещё такое распространённое слово как «data» говорят по-разному. Слышала оба варианта произношения («дата», «дейта»), когда в беседе участвовало много людей из разных неанглоговорящих стран.
    И тут ещё подвох с единственным/множественным числом. «Datas» иногда тоже приходилось видеть.
  • Плагин «Rainbow CSV» как альтернатива Excel
    +1
    Круто! В своё время очень не хватало такой штуки.
    А для Emacs будет? (для Vim же есть :))

    Оставлю тут ссылку на Miller, может кому-то пригодится. Позволяет манипулировать данными в форматах CSV, TSV, DKVP, JSON и не только. Unix-way утилита для командной строки, написано на С, без рантайм-зависимостей.
  • Проблемы современной записи математических текстов
    +2
    Могла бы плюсануть, обязательно бы это сделала! Только они «3Blue1Brown», но не суть. По линейной алгебре из видео поняла больше, чем после годового курса в университете. Тоже кидала этот канал в комменты к недавнему посту с советами первокурсникам. ИМХО, вот примерно так и нужно рассказывать на лекциях.
  • Проблемы современной записи математических текстов
    +6
    Получив профильное образование, вспоминая свои лекции на первых курсах, заметила, что у многих преподавателей как будто психологический барьер: категорически не хотят объяснять на пальцах. Как будто студенты подумают, что перед ними не очень продвинутый математик или это как-то ещё погубит их самооценку. Классический сценарий повествования на лекциях: сразу вводятся определения, появляющиеся из неоткуда, потом формулируется теорема с огромным количеством ограничений, а доказательство пишется исключительно языком формул, с минимумом рисунков и пояснений. И ни в коем случае нельзя упустить ни одну мелочь, даже если в прикладных задачах все замысловатые условия теоремы выполняются всегда. Обычно это дословно (точнее, доформульно или даже досимвольно) повторяет учебник. Но, пожалуй, больше всего мне не хватало примеров прикладных задач или хотя бы областей.

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

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

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

    Дополнительные проблемы возникают, когда учебников несколько, и все авторы читают лекции по предмету по-своему. Отличия могут быть минимальны: один в определении пишет знак «больше», а другой — «больше или равно», или изложение идёт в разном порядке. Из-за этого разгорается методическая гражданская война. А потом на экзамене только попробуй сказать определение из учебника профессора Х, отвечая билет профессору У.

    Сначала думала, что пост будет про нотацию математических выражений. Там хоть и есть свои сложности, без неё было бы гораздо хуже :)
  • Первокурснику: Вуз.Инструкция 1.0
    0
    Вспомнила ещё про канал 3Blue1Brown, особенно серии видео про матанализ и линейную алгебру. Были бы они во время моего первого курса, поняла бы гораздо больше и быстрее. Там ещё много интересного. Видео на английском, но это скорее плюс: можно освоить математическую лексику.
  • Первокурснику: Вуз.Инструкция 1.0
    0
    Но плохо то, что ЕГЭ — это единственный критерий для поступлений.

    Некоторые ВУЗы (МГУ, СпбГУ и кто-то ещё вроде) отвоевали себе право проводить дополнительные вступительные экзамены по выбранной специальности. Это позволяет отсеивать всяких подозрительных 100-балльников и частично тех, кого натаскивали исключительно на ЕГЭ. Правда, на этот местный вступак тоже можно натаскать по прошлогодним вариантам, но в любом случае там задачи разнообразнее. Критерии меняются в зависимости от того, сколько задач в среднем решают (т.е. можно получить 100 баллов, решив не всё). Но тут возникла ещё одна проблема — на разные (очень разные!) факультеты нужно сдавать одно и то же. Например, одинаковые варианты по математике были у абитуриентов на мехмат и на соцфак, и тут либо первым будет слишком просто, либо вторым слишком сложно, а критерии выставления баллов общие. Решить проблему может дальнейшее разделение на профильную и непрофильную математику (как сделали с ЕГЭ), и это вроде бы обсуждалась, но пока результатов обсуждения не видно.
  • Первокурснику: Вуз.Инструкция 1.0
    +3
    Почти всё уже сказали, почти всё хочется плюсануть, но и от себя (вчерашнего студента) кое-что добавлю.

    1. Не бойтесь задавать вопросы преподавателям! В статье это получилось с оттенком «спрашивайте, чтобы запомниться и подмазаться». Спрашивать можно и нужно, чтобы понять, даже если кажется, что всем остальным всё понятно. Если страшно делать это публично, записывайте, что было непонятно, подходите после пары и разбирайте эти моменты. В обоих случаях не думайте о том, как это будет выглядеть со стороны: пусть часть группы удивляется, что вы не знаете «элементарных вещей», зато какая-то часть будет вам очень благодарна, потому что им тоже было непонятно. Пусть думают, что вы специально подмазываетесь, забейте на мнение таких товарищей. Не бойтесь обратиться лично после пары к любому из описанных «подвидов» преподавателей. Молодые аспиранты (да и не только) могут не уметь рассказывать на публику, но в личной беседе всё хорошо объяснят. Преподаватели с репутацией самых лютых, как правило, чертовски круто объясняют и в личном общении внезапно могут оказаться совершенно адекватными людьми. А ещё таким образом на первых курсах можно найти себе научника или хотя бы определиться с наиболее интересной областью для дальнейшей деятельности.

    2. Совет олимпиадникам — умерьте ЧСВ. Код на школьных олимпиадах пишется один раз и остаётся write-only, и школьники, натасканные на эти олимпиады, не имеют ничего общего с готовыми профессиональными программистами (но, поступив на первый курс, именно так себя и преподносят). Хорошо, если такие ребята это вовремя поймут. На всякий случай: я нигде не говорила, что все олимпиадники такие или что в олимпиадах не нужно участвовать вообще. Очень даже нужно и полезно, но совершенно не обязательно, чтобы стать хорошим программистом. Просто во время работы в приёмной комиссии своего факультета насмотрелась на абитуриентов из айтишных/физмат лицеев с кучей дипломов, которые поступали вне конкурса, на первом курсе ничего не делали и выезжали на школьных знаниях, а на 2-3 курсах такое уже не проходило. Из-за непомерного ЧСВ отношения с преподавателями (в особо запущенных случаях и с деканатом) были испорчены, поэтому безжалостно отчисляли в целом очень талантливых ребят.

    3. Всегда будет кто-то умнее, круче, талантливее и успешнее вас. Иногда из-за врождённых талантов, иногда из-за везения (например, на тех же экзаменах). Старайтесь учиться у таких людей, вдохновляться ими, или в конце концов игнорировать — но ни в коем случае не ставьте на себе крест и не соревнуйтесь по оценкам/баллам, разве что в шутку. Саморазвитие должно быть в первую очередь ради того, чтобы стать лучше себя прежнего, а не лучше абстрактного Васи из соседней группы. Все мы разные и можем преуспеть в разных областях, на первых курсах ВУЗа ещё рано делать какие-то выводы. К нам поступает очень разнородный в плане школьной подготовки контингент, но за первые несколько курсов вполне выравнивается, и большинство ребят потихоньку находит свой путь. Это может быть путь в другой ВУЗ или вообще в другую область — и это нормально, гораздо лучше, чем 4-6 лет заставлять себя заниматься ненавистным делом.

    4. Про ненужные предметы. Про гуманитарные уже достаточно написали, от себя могу посоветовать хотя бы раз сходить на лекцию/семинар, это может оказаться очень интересно и полезно, зависит от преподавателя. Студенты программистских специальностей на первых курсах часто возмущаются: «зачем мне вся эта математика, я сюда пришёл на программиста учиться, чтобы потом игры писать!». У нас это стало чуть ли не местным мемом, хотя специальность «прикладная математика и информатика», казалось бы, чему удивляться. Да, конкретно вот эта формула лично тебе по работе может не пригодиться никогда, но тот же матанализ отлично ставит мозги на место и учит думать, а элементы общей алгебры показывают, как обобщать и работать с абстракциями. К тому же, общий уровень математической культуры для действительно хороших программистов обязателен, это заметно даже в общении.

    5. Рекомендую широко известные в узких кругах книги. И в качестве самообучения, и как дополнительную литературу к базовым программистским курсам. Для начинающих программировать студентов с любым бэкграундом, будь то школа с углублённым изучением гуманитарных предметов (проверено на себе).
  • Как Lisp стал языком программирования для Бога
    0
    Попробую ещё более в яблочко: ВМК, АЯ? :)
  • Как Lisp стал языком программирования для Бога
    0
    Предположу, что вам его преподавали в рамках какого-нибудь курса типа «Функциональное программирование», а Лисп использовали в качестве языка для демонстрации возможностей парадигмы, причём даже не какой-нибудь существующий диалект, а «сферический Лисп в вакууме», в котором ничего императивного использовать нельзя, а про макросы рассказывать просто не нужно, пока дело не дойдёт до написания реальных программ (видимо, курсового практикума). Но интересно узнать, был ли живой в какой-то момент времени диалект, состоящий только из восьми упомянутых примитивов.