?

Log in

No account? Create an account

Previous Entry | Next Entry

Начало

Только что вернулась с orientation для новых студентов. Отлично провела время, но ужасно устала. Вообще замечаю, как я то ли под злостным влиянием Димы, то ли в силу возраста медленно но верно превращаюсь в настоящего интроверта. Раньше я просто не представляла, как можно устать от приятной тусовки. От неприятной - запросто, но вот от приятной… А теперь вполне постигла, как это может быть.
И это еще при том, что первую половину протусовалась в гордом одиночестве (но абсолютно от этого не страдала - и это тоже часть влияния Димы, я все больше нахожу удовольствия в том, чтобы в большой толпе быть самой по себе). Посмотрела на танцы местной группы поддержки, поела барбекю. А еще ела мороженое, приготовленное с помощью азота, причем готовили его на наших глазах. Это так прикольно! Смешивают молоко с сахаром, хорошенько размешивают, чтобы сахар растворился, а потом прямо в миску льют жидкий азот! Он кипит и испаряется на воздухе, а дым от него немножко холодный и вообще это очень впечатляющее зрелище, когда из миски валят клубы дыма. Само мороженое на вкус абсолютно обычное, а по консистенции - комковатое и похоже на творог. Еще там стреляли из азотной пушки теннисными шариками и это тоже было грандиозное зрелище - громкий бум, клубы дыма и мячики, взлетающие высоко в небо. Азотная пушка была воткнута в пластмассовый мусорный бак, который в результате выстрела треснул по всей длине. Не знаю, было ли так задумано или это явилось неожиданностью и для самих экспериментаторов. Еще показали несколько интересных опытов по химии, в том числе циклическую реакцию. А еще поучаствовала в конкурсе, в котором в числе призов были айпад и графический калькулятор, который будет нужен мне для учебы, но ничего не выиграла. Ну и ладно.
К сожалению, ни один из моих профессоров не пришел. Препод по математике, очевидно, работает part-time, потом что волонтеры с этой кафедры не знают никого с такой фамилией. Очень жаль, ведь он будет у меня вести обе математики - Precalculus I и Finite Mathematics (кстати, кто-нибудь знает, как это будет по-русски?). А преподы по программированию проманкировали мероприятием вообще почти в полном составе - пришло всего два или три человека и моих там также не было.
Зато я познакомилась с русскоговорящим мальчиком Петром. Он уже на втором курсе, собирается потом перейти в университет и является вице-президентом компьютерного клуба и президентом инженерного. У инженерного очень интересный проект - они собрали квадрокоптер в прошлом семестре, а в этом будут работать над управлением им силой мысли - по крайней мере, чтобы поднять его в воздух и опустить. Для этой цели они уже купили девайс за 200 долларов, но он плохо конвертирует биотоки мозга и поэтому пока им еще не удалось, чтобы все заработало, как надо. Есть такой же девайс за 500 долларов, он лучше, но слишком дорог.
Я записалась пока только в компьютерный клуб. В прошлом году они писали приложения под Андроид и айфон, совместно с инженерным клубом занимались роботостроением (в инженерном строили робота, а в компьютерном писали прогу для него), делали свою security system и ходили на экскурсию в Гугл и в НАСА. На следующей неделе будет первое собрание клуба в этом семестре, где мы решим, чем будем заниматься. Вауууу! Люди, ну это же круто, а? I'm so excited!!!
Я думала еще записаться в математический клуб, но решила пока подождать, потому что в этом семестре и так нагребла много предметов - надо посмотреть, как пойдет. Если все будет нормально - запишусь в следующем.
Еще познакомилась с девочкой Каиджей из Бельгии и мальчиком Игорем из Минска. С девочкой мы будем встречаться на курсе по Питону и я думаю взять над ней шефство, потому что она еще никогда не программировала вообще, в том числе и на Питоне. А я вполне могу помочь в данном случае. А с мальчиком мы будем видеться на курсе по counselling'у и он под мое крыло попросился сам. Потому что он всю жизнь жил в Минске и учился там же, а в Америку приехал буквально несколько дней назад. И конечно, он ничего не знает и все ему надо объяснять. Мы с ним проговорили часа 2 и все это время я отвечала на его вопросы. Так что могу себя уже считать волонтером по counselling'у :)
К сожалению, оба выбрали основной опцией Джаву, а я - С++, так что тут мы пересекаться не будем. Но девочек на моем факультете действительно раз-два и обчелся :)
Что еще?
Мое расписание на этот семестр очень долго не могло устаканиться. Я то регистрировалась на одни классы, а в других была в waillist, то вдруг открывались новые, более "вкусные" и я регистрировалась на них, а предыдущие вычеркивала, то вдруг открывались новые места на те курсы, которые были уже забиты, и я регистрировалась уже на них…. Вчера, когда мне пришло очередное письмо, что появились новые места на курс и они меня зачислили, я взвыла и сказала Диме, что колледж хочет меня убить. Надеюсь, что до понедельника больше ничего не случится.
Расписание после всех этих перетасовок убийственное! Понедельник и среда - с 10 до 12 - Finite Math, потом до 3-х часов "окно", с 3 до 4:15 - counselling, потом опять перерыв до 6 вечера и с 6 до 8 - С++
По вторникам, четвергам - Precalulus c 10 до 12, по пятницам опять обе математики. А по курсу по Питону расписание пока не объявлено. Но там в кампусе будут только лекции, а лабы - online.
Учебники заказала, и один из них уже даже пришел, а в книжном сегодня купила еще один необязательный и один обязательный. До конца моей свободы остается всего несколько дней, а еще столько всего надо сделать!!!
Пожалуй, в выходные, чтобы отпраздновать окончание свободы, сделаю оливье и винегрет и буду поедать их по очереди все выходные :) Чувствую, что ой как нескоро у меня снова появится столько свободного времени, чтобы приготовить хотя бы один из них :)

Comments

zellily
Sep. 18th, 2014 08:20 am (UTC)
(с интересом) А в чём заключалась бездумность? Просто у нас в вузе на моей специальности вообще не было алгоритмов, я их ща пытаюсь проходить и интересуюсь этим вопросом.

Вот то, что перечислено во втором абзаце - это программист, занимающийся чем? Ну, как будет называться вакансия для человека, который это знает и умеет?
morfizm
Sep. 18th, 2014 08:44 am (UTC)
Бездумность моего примера заключается в двух вещах:

1) В квадратичности алгоритма.

Да, казалось бы, s = s + c выполняемое в цикле n раз это O(n). Но это если не вникать. А если вникнуть, что в том же питоне s = s + c это:
а) создание временного объекта string, с инициализацией символом "c", назовём эту строку s2,
б) создание временного объекта string для результирующей строки, назовём её s3,
в) копирование исходной строки s в s3; заметьте, всех символов, сколько их там уже накопилось, это по сути, второй внутренний цикл, который будет делать, в среднем, O(n) операций - это легко видеть, если предположить, что внешний цикл уже пробежал до половины и текущая длина строки >= n/2.
г) копирование s2 в конец s3,
д) изменение переменной s в локальном scope, чтобы она указывала на s3 -- в этот момент, важно (!) предыдущее значение s это строка, на которую теряется ссылка, и она подлежит деаллокации через garbage collection.

2) В том, что нужно сделать 2n аллокаций и n деаллокаций памяти. Это огромная куча overhead'а, и ужасная локальность памяти (будут cache misses all the time). Аллокация это очень дорогостоящая операция сама по себе (почитайте, как устроены memory manager'ы в деталях, чтобы это осознать). Cache miss это, условно говоря, обращение к памяти, которое в 100 раз медленнее обычного, когда всё в кэше :)



> это программист, занимающийся чем?

В Штатах вакансия будет обычно называться "software engineer". Чем он будет заниматься - ну, системами, в которых расточительство порядка "использовать 1% от возможностей железа" недопустимо :) Это могут быть нагруженные сайты, системы-сервисы, сложные desktop приложения, embedded. Это чаще back end engineer, чем front end, но в больших и сложных системах для front end'а тоже нужно знать fundamentals. Короче, "сложные задачи и большая зарплата", as opposed to "разная мелочёвка и небольшая зарплата" :)
zellily
Sep. 18th, 2014 08:49 am (UTC)
А компилятор это никак не оптимизирует?

"software engineer" - очень уж широкое название :(
morfizm
Sep. 18th, 2014 08:52 am (UTC)
Начнём с того, что Питона нет компилятора, у него интерпретатор :)
Нет, конечно.

Вопрос не в названии, вопрос, наверное, в том, что за компания-продукт. Опять же, я очень плохо знаю российский рынок программистов. Попробуйте убрать весь аутсорсинг и убрать все работы, где платят меньше $3000/мес. То, что останется - это, скорее всего, оно.
zellily
Sep. 18th, 2014 09:04 am (UTC)
Да, я не обратила внимания, что там питон :)
А если б не питон был? А что-то с возможностью получить экзешник на выходе? Там бы тоже не было оптимизации?
ЗЫ Компиляторы я тоже хочу пройти, но это где-то в планах в самом конце.

На хедхантере с такими зп вылезают очень разношерстные вакансии: 1c, c#, c++, sql, php, java - всё исключительно разнообразно :)
morfizm
Sep. 18th, 2014 09:06 am (UTC)
Экзешник на выходе - это C++ :)
Welcome.

(Ну либо это продукт какого-нибудь интересного инсталлера, который в одном экзешнике зашивает интерпретатор Питона, библиотеки и исходник вашего кода, и как-то позволяет всё это запускать через один exe-шник).
(no subject) - zellily - Sep. 18th, 2014 09:07 am (UTC) - Expand
(no subject) - morfizm - Sep. 18th, 2014 09:11 am (UTC) - Expand
(no subject) - zellily - Sep. 18th, 2014 09:21 am (UTC) - Expand
(no subject) - morfizm - Sep. 18th, 2014 09:24 am (UTC) - Expand
(no subject) - morfizm - Sep. 18th, 2014 09:36 am (UTC) - Expand
(no subject) - morfizm - Sep. 18th, 2014 09:17 am (UTC) - Expand
(no subject) - morfizm - Sep. 18th, 2014 09:20 am (UTC) - Expand
morfizm
Sep. 18th, 2014 09:40 am (UTC)
Весьма закономерно, но странно, что PHP - это выбивается из последовательности. Я подозреваю, что это таки outsourcing, просто высокие зарплаты, потому что Москва. Может, надо попробовать пофильтровать на 3500-4000 :)

Edited at 2014-09-18 09:40 am (UTC)
morfizm
Sep. 18th, 2014 09:03 am (UTC)
Особо отмечу, что Питон не способен это оптимизировать, даже если бы разработчики Питона старались изо всех сил, т.к. в Питоновской модели данных строки *не мутабельны*.

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

Решение, которое добавляет символы в список (через append) и собирает результирующую строку после цикла через ''.join(mylist) - уже лучше. Оно тоже далеко от идеала, но, по крайней мере, у него линейная ассимптотика (добавление именно в конец списка имеет амортизированную сложность O(1)).


Edited at 2014-09-18 09:04 am (UTC)
zellily
Sep. 18th, 2014 09:09 am (UTC)
Я ж говорю, всю жизнь учиться надо :)
ЗЫ Я знаю, что лучше пользоваться append, чем +, но не вникала в подробности, увы, времени не хватает на всё :(
morfizm
Sep. 18th, 2014 09:19 am (UTC)
Согласен по поводу всё жизнь учиться.

Мне со времён школы было глубоко отвратительно что-то знать, чего я не понимаю. Зачем запоминать кучу вещей, если можно понять одну и потом из этого понимания выводить всё, что нужно, по мере необходимости? Это и есть то самое, что позволит читать сложные книжки за две недели (или вообще не читать, а пользоваться ими как справочниками), вместо того, чтобы тратить "всю жизнь".
morfizm
Sep. 18th, 2014 09:22 am (UTC)
Ещё - в реальных задачах часто важно не просто знать, что лучше, а знать, *насколько* оно лучше, чтобы делать правильные trade-offs. Мне кажется, без понимания не обойтись. Без него можно запомнить пачку best practices, а потом написать что-то неудоворимое, потому что в списке запомненного нужной best practice не было.
(no subject) - morfizm - Sep. 18th, 2014 09:48 am (UTC) - Expand
morfizm
Sep. 18th, 2014 08:48 am (UTC)
В Москве, например, есть Яндекс - большая нагруженная система. Наверняка туда не получится устроиться программистом, не зная fundamentals.
zellily
Sep. 18th, 2014 08:51 am (UTC)
У меня есть знакомый, который специально ушел на полставки, самообучался, а теперь работает в яндексе :) Но я точно знаю, что он на уровне битов и байтов знаний не имел на тот момент.
morfizm
Sep. 18th, 2014 08:55 am (UTC)
Проскочил таки, самозванец! :)
(Шутка)

Ну всегда есть исключения и какие-то особенные возможности. Может, ваш знакомый был настолько хорош в том, что он умеет, что ему хватило. Может, он собеседовался на какой-то проект внутри Яндекса, где другие требования. Есть инженерные позиции, где вообще почти не пишут код. Занимаются моделями, аналитикой, или big data transformations через фреймворки вроде hadoop'а.
zellily
Sep. 18th, 2014 09:06 am (UTC)
Не-не, он на питоне, вроде, пишет :)

Profile

fearless_cat
Бывшие канадские ангелы мы

Latest Month

August 2019
S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031

Page Summary

Powered by LiveJournal.com
Designed by Tiffany Chow