Функции — точно такой же объект, как любой другой. Их даже создавать можно через конструктор new Function.
Если метод лежит в прототипе, то все потомки по prototype chain получают возможность использовать одну копию метода.
А если мы их пишем в сам объект в конструкторе, то память под методы выделяется при создании каждого экземпляра. Чем больше экземпляров, тем больше расход памяти.
В варианте 2 память выделяется при вызове метода, в котором лежит setInterval, и освобождается после завершения работы, а в других вариантах этого не происходит.
Если у вас всего один экземпляр класса, то вы не заметите разницу. Только зачем вам тогда вообще классы?
А вот если экземпляров много, то случае с прототипным наследованием методы хранятся в прототипе, а в случае с хранением их в экземплярах — они дублируются для каждого экземпляра.
(ворчание) А потом они удивляются, почему вкладка с todo-list app съедает пару сотен мегабайт оперативки...
Это не наследование, а запись методов напрямую в экземпляр. От того, что вы через родительский конструктор запишите эти методы в экземпляр дочернего класса никакое наследование не появится.
В JS наследование реализуется через прототипы, а не методы в class properties
Вот такой код
class Test {
myMethod() {
...
}
set() {
setInterval(() => this.myMethod(), 300);
}
}
Не работал с монгой, так что не дам комментариев по её поводу, но вот утверждение о том, что Оракл или постгрес блокируют поток — однозначно ложный. Если бы это было так, то применение этих СУБД с нодой было бы невозможным :)
Если внешняя система не поддерживает неблокирующий I/O, нода использует пул потоков, о котором в статье как раз говорится.
Для I/O используется пул потоков, размер которого ограничен по-умолчанию 4-мя потоками, соответственно одновременно может выполняться только 4-ре I/O операции, остальные встают в очередь, так что это потенциальное узкое место. При необходимости размер пула можно увеличить. И не для всех операций этот пул используется, если внешний API поддерживает неблокирующий ввод-вывод, то пул не нужен.
а вы статью точно внимательно читали? JS однопоточный, но неблокирующий ввод-вывод реализован путём запуска отдельных потоков (threads) через средства ОС, соответственно вся работа с сетью и файлами и запускается в отдельных потоках.
Почему вы считаете изучение computer science и освоение конкретных технологий взаимоисключающими вещами? Почему не сделать обязательные профильные предметы по той самой computer science, а также возможность выбрать себе набор учебных курсов по прикладным вещам и набор непрофильных предметов?
Я одного не понимаю, почему изучение computer scince должно происходить на устаревших инструментах и технологиях?
Понял вас. Согласен, синтаксис не принципиален, а вот алгоритмы важны. Но опять же это не противоречит установке, что нужно учить не только фундаментальные знания, но и как-то уметь применять их на практике и после выпуска из ВУЗа быть готовым к работе специалистом. С этой точки зрения, посвятить времени каким-то актуальным прикладным вещам было бы не плохо.
Студенту, который платит за своё обучение. Государству, которое платит за обучение специалистов.
Иначе зачем он нужен? Образование ради образования?
А если человек хочет после университета пойти в аспирантуру, а затем двигать науку в каком-нибудь лабе, почему он должен слушать курсы по node.js, с которым он ни разу в жизни не столкнется, вместо того, чтобы штудировать Кнута?
А вот с этим категорично согласен. Вы совершенно правы, что студент, желающий «двигать науку» не обязан слушать node.js, значит ради этого студента все остальные должны вмести с ним штудировать Кнута и писать на паскале? Вот тут мы и подходим к тому, о чём я пытался написать выше, что у студентов должна быть определённая свобода выбора, как это и сделано в цивилизованных странах.
Внезапно, но да, нужно переписывать учебную программу. И внезапно, это и есть работа преподавателей, методистов. И ещё более внезапно — они и так этим занимаются, сто раз переписываю одно и тоже по новым стандартам минобразования. А могли бы и актуализировать эту самую учебную программу. Замена одного языка на другой не должна вызывать какие-то неимоверные затраты на обновление.
Университет дает фундаментальные знания в области
Каким образом изучение паскаля или всё того же питона мешает освоению фундаментальных знаний? Они ведь на то и фундаментальные… Так почему их не получать на чём, что имеет прикладное применение? Что может мотивировать студентов, которые увидят вакансии на условном «питоне» и поймут, что учат что-то полезное и востребованное.
Конкретным языкам в университете вообще учить не надо, ибо бесполезная трата времени. Для этого есть курсы. Ну или самому можно за полчаса проскроллить доки и изучить все.
Поэтому будем все программы писать на абстрактном псевдокоде, а вместо освоения сопутствующего инструментария, будем просто набивать его на перфокартах.
Да, вы правы, проблема не в delphi, проблема в том, что ВУЗ должен выпустить инженера (!), которые будет решать реальные задачи, а не теоретика, знакомого со всем и ничем одновременно. Сейчас же ВУЗы плохо справляются с этой задачей, потому что после выпуска с высокой вероятностью ты услышишь фразу «забудьте, чему вас там учили», если ты сам где-то уже не работал и сам что-то не учил, то попробуй найди работу, когда нет опыта и хоть как-то применимых знаний.
А у вас почему-то получается, что студент должен учить «сферическое в вакууме» программирование, а не становится инженером по разработке ПО.
глобально не согласен, независимо от специальности.
Хирургов тоже обучать должны теоретики, и разу операции ни одной не проводившие, а не практики, потому что в жизни во время операции всякое не по правилам пойти может, хирурги, давно оперирующие, уже начинают забывать… Ну вы понимаете, что ваше утверждение уже ошибочно? :)
Так вот почему вы решили, что работающий по специальности программист вдруг будет учить «нарушать» правила? И даже если будет, что в этом плохого-то?
Интересно, а какое оно должно быть по-вашему? «образование ради образования»? Ну просто потому что вы так привыкли? И да, если нужен английский язык, то его надо преподавать на должном уровне. А то по вашей логике все должны учить латынь, и не важно, что это мёртвый язык, который имеет очень узкое применение в современном мире. «Деды» учили, мы тоже должны, так? Не понимаю, честно :)
сразу ассемблер, чего мелочиться? Перед тем как учить нечто аморфное а-ля питон — стоит все же попробовать что-то более со строгой типизацией. И да… Pascal->Delphi
И сколько ваших студентов за последние пару лет устроились работать delphi-программистами?
и получить на выходе дрыща/слонопотамчика, который не может связать двух слов.
в отличие от вас, я не был столь категоричен в своих высказываниях… А ваши мысли шаблонны и ничем не обоснованы, более того, легко опровергаются эмпирическим путём даже без серьёзных исследований.
Потому как это уже не высшее образование, а «курсы по ...»
Нет, это «высшее» образование, после которого нужны «курсы по ...», потому что иначе никому ты не нужен со своим Delphi и без опыта работы.
кафедра должна сама искать себе гранты на развитие
Да что уж там! Студент вообще сам должен позаботиться о себе. Ведь задача ВУЗа «научить учиться», ведь как иначе-то? Разве ж «научишься учиться» без просиживания на парах культурологии, психологии, или ещё какой-нибудь «болтологии» в попытках сдать очередной зачёт престарелому маразматику, который хочет, чтобы ты знал наизусть названия всех полотен Рембрандта. Ведь всем известно: не один программист без этого не то что двух слов не свяжет, но и двух строчек кода не напишет. Вы правы.
вместо паскаля на первом курсе учить питон или хоть что-нибудь другое, имеющее практическое применение
сократить непрофильные предметы до минимума либо вообще сделать опциональными (всякую культурологию, политологию и прочую физкультуру)
позволить рынку влиять на содержание учебных программ (хотя, вроде, тут есть определенные подвижки)
повысить зарплаты преподам, чтобы привлечь в вузы нормальных специалистов, а не только теоретиков, ни разу в жизни не написавших ни одной серьёзной программы (ну ладно, тут бывают исключения, но всё же). Да и в целом нужно следить за качеством работы преподавателей
и вообще больше уделять средств на развитие науки и образования, а не на очередной закон о запрете чего-нибудь кого-нибудь (надеюсь, я там ничьи чувства не оскорбил, а если оскорбил, то так вам и надо)
P.S. Хотя очень интересно, что там за задачи в тесте такие были. Вдруг студентов американских вызов всё время обучение натаскивали на решение чего-то подобного. Как у нас в школах «натаскивают» на ЕГЭ...
Увидел ссылку выше…
Простите за оффтоп, но меня очень забавляет, что вы меряетесь скоростью работы программ, запущенных на разных машинах и в разных окружениях… и никого это не смущает :)
«Как простую вещь объяснить максимально сложно». Вот так это называется.
Флексы вполне интуитивны, и краткого руководства типа вот этого, например, более чем достаточно.
Понедельник. Проснулся утром. По привычке, не вылезая из кровати, залез с телефона на хабр. Хотел прочитать дайджест. Дайджеста не обнаружил. Сильно волновался. Теперь спокоен.
Столько лет в профессии, и не растеряли интерес. Заслуживает уважения!
А были ли моменты, когда хотелось заняться чем-нибудь совершенно другим, не связанным с ИТ и математикой?
Да, видимо опечатка. А при отладке не заметили, потому что в браузере доступны глобальные переменные с именами по id у элементов. Т.е. для элемента с #person браузер автоматически создаёт глобальную переменную person.
Например, сегодня каждый веб-разработчик (и его брат) используют WordPress.
После этой фразы возникли сомнения в компетенции автора текста, и желание читать дальше поубавилось.
Если по сути, то ты можешь что-то знать, только если понимаешь это и умеешь использовать. Академические знания без практического опыта — это лишь осведомленность. Что толку от «знания» какого-то алгоритма, если ты не способен его реализовать. А «умения» без знания и понимания (в случае с кодом) практически всегда означает бездумный копи-паст и велосипедостроительство.