Как бы намекает

Давным-давно, когда я была молодая длинноногая блондинка, я поступила на 1 курс матфака. К слову скажу, проходной балл в тот год был 37 из 40 (по двум математикам). Что такое 37 из 40? Это в переводе на современной жаргон 92 балла на ЕГЭ по математике. Других не брали!

Особо звездная была наша группа, которая набралась из двух ведущих в смысле математики школ города (на тот момент это были 64 школа и класс В.К.Веприк в 88).

Наши мальчики (по крайней мере, половина из них) мнили себя программистами.

Они думали, что знают все, что программировать умеют почти как боги (а то и лучше – ведь боги уже старые, а тогда программирования еще не было). Особенно долго смеялись, что лекции по информатике начинались с объяснения, что такое двоичная система счисления, и как в нее переводить числа. /* А если вы тоже в этом моменте начали ржать возле своего монитора – возьмите и для разминки переведите в двоичную запись число 0,2 из десятичной системы. */

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

В классах стояли 486-е, а дома у всех были вторые Пентиумы.

Да и вообще, преподавателю по программированию было уже 50 лет – и совершенно точно было ясно, что программировать он не умел. Откуда, “тогда” ведь и компов-то настоящих не было? Тут главное, долго над этим вопросом не размышлять – а сразу взять за аксиому неполиткорректное утверждение, что хорошо программировать умеют только молодые гетеросексуальные белые мужчины.

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

Лирическое отступление. Наши девочки были не такие звездные. Одна была “особо умная”, но не в программировании, а в математике. Та еще противозина – то преподавателя на лекции поправит, то просто так всем рассказывала, что знает все лучше. Но это другая история. А наши девочки, безусловно, заслуживают отдельного рассказа.

Короче, мальчики сходили на парочку лекций по ЭВМ, быстренько поняли, что ничему их тут новому не научат, и на лекции в основном забили.

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

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

Подошло лето и время сдавать экзамен по ЭВМ. Перед экзаменом была контрольная работа, которая на 80% определяла оценку на экзамене. Аня написала контрольную лучше всех, единственная со всего потока на пятерку. Пафосные мальчики в основном контрольную завалили, некоторые написали на тройки. Мальчики вообще-то в основном решили, что препод что-то не то делает, и явно предъявляет всем какие-то устаревшие требования. Что это за идиотская идея выставлять оценки по ЭВМ по теоретическим знаниям, а не по тому, как красиво они могут написать программу?

Когда после выпуска прошло 2 года, Анина зарплата программиста была вдвое (и даже больше) больше, чем у всех наших мальчиков-программистов. /Там потом все сложнее стало сравнивать: Аня ушла в долгий декретный отпуск, а некоторые мальчики, скажем, переехали в США )/

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

А препод, тот, который на первом курсе читал лекции по ЭВМ, был одним из самых крутейших преподов из всех, кого я знаю. И офигенный специалист. Сейчас работает “человеком, который придумывает, как правильно программировать” (это в называется архитектор – но если бы я так написала 90% френдов поняли бы неправильно) в достаточно крупной конторе в США, к сожалению всего нашего факультета.

  • [deleted] 2016-10-03T14:58:17Z

    • kukina_kat 2016-10-03T15:01:32Z

      А расскажите цитату? А то я, наверное, не знаю )
      • [deleted] 2016-10-03T17:12:41Z

        • kukina_kat 2016-10-03T17:17:42Z

          Тогда ладно. :-)т
  • [deleted] 2016-10-03T15:15:20Z

    • kukina_kat 2016-10-03T15:29:23Z

      Я узнаю и расскажу. Я забыла. Нерусское какое-то название. А, может, кто-то более осведомленный в комменты подтянется )
  • [deleted] 2016-10-03T15:26:23Z

    • kukina_kat 2016-10-03T15:28:05Z

      Оксана, спасибо! ) Оно, конечно, чуть утрировано и с художественными гиперболами, но ведь правда ))))
  • [deleted] 2016-10-03T15:40:31Z

    • kukina_kat 2016-10-03T15:43:54Z

      Я про тебя вообще ничего не написала. Ты не с моего курса )

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

      А Печкин у меня вообще не вел (

    • kukina_kat 2016-10-03T15:53:57Z

      А может дело в том, что на вашем курсе Ани не было.
  • [deleted] 2016-10-04T04:37:11Z

    • kukina_kat 2016-10-04T08:13:31Z

      Олегу Николаевичу благодарность даже передам. Он теперь на нашем факультете работает )

      Учиться никогда не поздно – тут главное начать!

  • [deleted] 2016-10-04T04:38:42Z

    • kukina_kat 2016-10-04T08:12:25Z

      Не за что ) Обращайтесь ) Вот чего-чего, а студенческих будней у меня много )
  • [deleted] 2016-10-04T20:30:26Z

    • kukina_kat 2016-10-05T02:38:17Z

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

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

      • [deleted] 2016-10-05T04:03:45Z

        • kukina_kat 2016-10-06T09:02:57Z

          Таких как девочка гнать метлой, да!
      • [deleted] 2024-05-24T20:41:44Z

        • kukina_kat 2024-05-24T21:35:41Z

          Из “топовых” школ школьники действительно достаточно часто не доучиваются. Например, потому что для учебы в вузе нужны совсем другие “софт-скиллы”, чем для учебы в школе. Но вообще-то я бы не сказала, что они недоучиваются в процентном соотношении чаще среднего. Просто когда на них смотришь – это вызывает дикое недоумение. Как?! Такой талантливый, умный, способный – и не доучился?

          Кстати, многим это самое “доучивание” нафиг не нужно. Потому что знания-то есть. Мой одногруппник, один из тех, что недоучился, тем не менее, очень успешен в программировании. В отличие от тех, кто сам искал работу зарубежом, его наоборот нашла работа из-за рубежа, и он переехал чуть ли не вперед всех. Судя по слухам, у него все вообще отлично.

          Я ездила в школе во всероссийский математический лагерь (дело было в 90-е, и ребята из Украины тоже там были, а преподавателей-украинцев было вообще немало!). Ну, короче, был такой математический лагерь с избранными школьниками – туда был достаточно жесткий отбор. И у нас был один самый блестящий парень, победитель Межнара и вообще очень крутой, прямо рядом никто сравниться не мог. Ну, в общем, тот парень так и не получил высшее образование. Закончил 2 курса и ушел на вольные хлеба. Тоже где-то в Евросоюзе работу получил.

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

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

          Желание сдавать “на общей эрудиции” на первом курсе было сильнейшее. По аналитической геометрии я, например, знала раз в 10 больше того, что входило в курс.42 Однако же, по некоторым предметам у меня были особо крутые преподы, которые знали о таких студентах и умели с ними работать. Именно чтобы убрать этот вот эффект “сдам на остаточных знаниях”. Алгебру у нас фиг было сдать на остаточных знаниях. Мат.анализ – да, можно было сдавать на остаточнных знаниях, там за весь первый курс ничего нового не сказали. (Там были очень крутые задачи, которые меня приводили в восторг, как бы “со звездочкой”, не из стандартных учебников; но в целом они были на тот же материал, что я уже знала из школы). А вот алгебра хотя традиционно считается более “легким” предметом, но читалась так, что вообще никаких знаний по алгебре до этого, можно считать, не было. Я бы, наверное, сдала бы на общих знаниях, если бы не учила, но не на пятерку точно.

          • [deleted] 2024-05-25T06:53:23Z

            • kukina_kat 2024-05-25T18:42:06Z

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

              Так у меня школу мою погубили. Например, когда я училась, у нас были доп.часы математики и физики (в физ-мат классе) оформленные вместо трудов и обж. Понятно, что эту лавочку прикрыли. У нас было деление класса на две подгруппы. Были лекции на полный класс, которые читал какой-нибудь преподаватель из вуза (у нас, например, читал лекции Директор Омского филиала института математики, очень крутой профессор); и были “практики” на полкласса. В 8 классе нас было 28 человек – две подгруппы по 14 человек; в 11 нас вообще стало 22 человека – две подгруппы по 11 человек) – но в начале нулевых это опять же запретили.

              Только на иностранном языке оставили деление на подгруппы (потому что там учитель, видите ли, должен с учениками индивидуальный подход проявлять, а в математике-физике зачем это?) И ведь нормально было в 90-е, а вот в 2000-х “оптимизировали” (конкретно мою школу погубили в 2002, я это очень хорошо помню). Вот поэтому многие учителя и преподы даже потом говорили, что в 90-е было даже лучше. Зарплату, конечно, не платили, и приходилось “крутиться”. Но на самом деле, “крутиться” так и осталось.

  • [deleted] 2016-10-06T02:58:19Z

    • kukina_kat 2016-10-06T08:58:57Z

      Аня у нас офигенная ) Денис все-таки не из деревни. Он же из физ-мат школы какой-то казахской, вроде?
  • [deleted] 2016-10-06T03:05:40Z

    • kukina_kat 2016-10-06T08:57:41Z

      А нечего козлить ) Странно, что С.А. повелся "на слабо" ))
  • [deleted] 2016-10-07T10:42:21Z

    • kukina_kat 2016-10-07T11:30:43Z

      Не очень понятно. Я бы сказала, что из маленьких тоже выбиваются. Все-таки нельзя однозначно сказать, что успешнее становятся -- президент-то у нас уроженец Ленинграда, а кто может считаться успешнее президента? ))))
      • [deleted] 2016-10-07T13:09:19Z

        • kukina_kat 2016-10-07T17:05:51Z

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

          Ну, и опять же. Мне кажется, вот сейчас “на селе” еще ценится “стать ученым”, а в городе уже лучше бы деньги пошел зарабатывать. У знакомых школьников папа так говорил: “О! младший наш гений, далеко пойдет. А старший так, максимум профессором станет” ))))

  • [deleted] 2016-10-17T05:28:39Z

    • kukina_kat 2016-10-17T08:10:36Z

      Я вот по-прежнему не согласна, что профучилище.

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

  • [deleted] 2016-10-23T14:32:10Z

    • kukina_kat 2016-10-23T15:44:41Z

      37 был полупроходной. Взяли 3 человека из 7, у которых было 37 баллов. Поэтому да, показания могут путаться. Современные абитуриенты не знают, что такое "полупроходной".
  • [deleted] 2016-11-02T06:26:37Z

    • kukina_kat 2016-11-02T08:26:35Z

      ) Конечно.
      • [deleted] 2016-11-02T10:07:31Z

        • kukina_kat 2016-11-02T10:42:54Z

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

          С точки зрения программирования задача очень даже не теоретическая. Задача показывает, что такое “хорошее” число как 0.2 практически всегда хранится в памяти с погрешностью. (Едиственная возможность этого избежать – нестандарный тип “рациональные числа”).

          • [deleted] 2016-12-12T15:58:45Z

            • kukina_kat 2016-12-13T00:44:33Z

              Я даже не могу придумать, КОГДА это должно было бы быть доказанным, чтобы дата повергла меня в шок. Понятно, что до середины 19 века это нафиг никому не нужный факт был.
        • bukov_ka 2016-11-02T12:19:44Z

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

          В контексте программирования задача как раз очень нормальная. Сам видел двух ведущих разработчиков, убивших час на баг, который объяснялся неточным представлением числа 0.3 (и чудесными оптимизациями дебаггера, который эти неточности скрывал). Это был, причём C#, а не ассемблер какой-нибудь. Понимание двоичной записи, по-прежнему, необходимо многим разработчикам.

          • [deleted] 2016-11-02T13:37:04Z

            • bukov_ka 2016-11-02T15:35:39Z

              > там на выходе надо было 0,1…0,01% Так это в точности то, о чём я говорю. Если нужна точность в процентах, то плавающая запятая работает, а если нужны “штуки”, то нет. И наоборот. Просто свойство типов данных обеспечивать абсолютную или относительную точность.

              Или я слишком далёк от банковской математики? Вы абсолютную точность зря считаете точнее относительной. Это просто разные точности. Вы можете взять запредельного размера float и считать копейки. Или, наоборот, взять числа с фиксированной точностью здоровенной длины и уложить ваши метрологические данные туда. Современные вычислительные мощности позволяют не париться во многих ситуациях. Но кое-где приходится платить за размеры и скорость. Поэтому в БД, например, есть типы данных Money (Currency).

              А иногда надо расчитывать конечную точность при мат.операциях.

              Не знаю, честно сказать, что по этому поводу можно почитать. Мне на первом курсе читали типы данных и двоичное представление. Мне хватало.

              • [deleted] 2016-11-03T02:27:30Z

                • bukov_ka 2016-11-03T04:20:19Z

                  Вы всё правильно в целом пишите. Здесь просто важны детали. Давайте пробежимся именно по деталям.

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

                  умножим на 100 (или на 1000 в некоторых странах) - получим точное значение в копейках/центах/сантимах. Для чисел рядовой операцией является смешивание чисел разной точности. Например, мы проценты расчитали с точностью до сотых копеек, а на счёт нужно положить число в копейках. Если использовать ваш подход 1 в 1, то нам надо будет число с большей точностью делить на 100, поддерживая как-то точность в .5 копеек. Это всё долго. Поэтому двоичное представление и используют. Поэтому знаки после запятой хранят в виде дробей. Если у нас под дробную часть отдан байт, то туда можно будет засунуть любой число, кратное 1/256. Не кратное – нельзя будет засунуть. В этом и состоит суть задачи, описанной в посте.

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

                  Поэтому в реальном числе .2 в банковской системе будет не точно “00010100”, а ваш ответ, обрезанный до какого-то значения.

                  Если много считать с фиксированной запятой, то это понимание необходимо. Вот возьмём числа с плавающей запятой. Они студентам (а потом и инженерам-программистам) в голову заходят с трудом, поэтому кое-что вдалбливается на уровне правил. Например, что нельзя сравнивать через “равно” эти числа. Студенты и программисты автоматически пишут if(a-b<.00001), не понимая, что происходит, но получая неплохой результат. А вот с фиксированной запятой сравнивать напрямую можно и нужно. Но человек, который запишет if(a==.2) может огрести неожиданных проблем, так как число справа не представимо в двоичной форме. Сейчас компилляторы очень умные и они подстрахуют в большинстве случаев, но понимание двоичной записи – это очень базовый принцип и лучше его иметь в голове, пока компьютеры считают в двоичной системе.

                  если кто-то использует флоут там, где достаточно (и даже местами необходимо) целого Флоут ничуть не “тяжелее” целого. Раньше было подобное разделение, но потом процессоры научились молотить плавающую запятую очень быстро. Тут просто надо понимать, что для одной и той же задачи может быть нужно всего 2 байта плавающей запятой или 8 байт фиксированной. Или наоборот. А для выбора типа надо понимать двоичную систему исчисления и внутреннее представление чисел.

                  Причём, понимание “абстрактное” очень сильно отличается от понимания, которое приходит, когда вручную поделаешь сотни-тысячи операций в двоичной системе. Поэтому студентам и даются такие задачи. Помню, как на первом курсе я исписывал тетради ноликами и единичками, считая разные операций в разных представлениях. В глазах потом рябило. :)

                  • [deleted] 2016-11-03T10:31:06Z

                    • bukov_ka 2016-11-03T14:30:49Z

                      > Но всё же - a+b=c в целых числах - это 1 такт процессора. А во флоуте - сколько? Ой, не. Давайте сюда не полезем. Последние 10 лет говорить на эти темы абсолютно невозможно. Мне не хватает знаний современных микропроцессоров. И разобраться слабо. :) Потому что сопроцессоры, по-моему, складывают float тоже за один такт. Но тут надо учитывать, что есть распараллеливание и многие операции в среднем могут выполняться меньше одного такта. А тут ещё прибегают маньяки, которые в эти вычисления включают GPU и я вообще перестаю понимать, что происходит. :) В целом, я соглашусь, что молотить целые числа можно гораздо быстрее. Но на самом деле, вопрос изначально некорректно поставлен. Что такое “достаточно целого числа?”. float легко можно представить целым числом без потери точности. Вот только работать с ним будет не быстрее и не проще. :)

                      это Катина провокация. Это обучение. Для кого-то полезное, а кем-то не понятое. :)

                      А в целом – согласен! :)

  • [deleted] 2016-11-29T15:08:24Z

    • kukina_kat 2016-11-29T17:02:14Z

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