раскрыть ветку (88)
раскрыть ветку (29)
Ага ) С Ассемблера. Что бы сразу учились писать оптимальный код, а не гавнокостыли. Что бы операторы циклов воспринимали как манну небесную. Строгой типизации поклонялись. И молились на синтаксический и семантический анализаторы.
раскрыть ветку (20)
Хороший код != оптимальный код. Если вы пишете под микроконтроллеры-да, надо делать оптимально. А если вы говнячите какой то Java EE проект-то тут надо нафигачить быстро, и что бы потом школьник знакомый с JEE смог так же быстро переделать что то там. А вообще - идея начинать с ассемблера сама по себе отличная, нужно хотя бы знать на пальцах что же там реально происходит в процессоре:)
раскрыть ветку (7)
"нужно хотя бы знать на пальцах что же там реально происходит в процессоре" - это по другому курсу, предшествующему программированию. "Архитектура компьютера" называется. Как по мне, без этого курса вообще нельзя начинать программировать.
раскрыть ветку (4)
блин ну хз, у нас была архитектура на 1ом курсе, вникнуть было тяжко(очень-очень тяжко). После паскалей, делфей уже сам решил почитать все стало намного легче
раскрыть ветку (1)
раскрыть ветку (1)
Где то было написано иначе? Связан да, чушь нет. "Читать не читал, но осуждаю". Так? Ассемблер не сильно поможет разобраться в арх.комп., лишь отпугнет кандидатов. И уж точно никого не научит писать оптимальный код. Например, принцип работы кешей 1-го и 2-го уровней никак не связан с ассемблером(берем х86, в ARM есть PLD).
ещё комментарии
ещё комментарии
раскрыть ветку (1)
Боже, как же сложно пикабушникам думать, посмотрите зп и стоимость железа, а потом сравните, сделайте вывод.
Асм != оптимальный код. + Что бы еще и здесь начали холивар какой синтаксис лучше: AT&T или INTEL? А потом еще трансляторы GAS,MASM, FASM, NASM и т.д.?
раскрыть ветку (8)
раскрыть ветку (7)
раскрыть ветку (5)
Уже нет( И даже исходники на дискетках похерил вместе со спектрумом. Хотя там движок игрушки был готов+редактор карт. Художник был) Сценариста и руководителя не было, оттого и не закончили.
А вообще удивительно - помнят же ш люди!!))
А вообще удивительно - помнят же ш люди!!))
раскрыть ветку (4)
раскрыть ветку (3)
раскрыть ветку (2)
Кассеты фу, гадость :( Как зажуёт, так сидишь волоса на жопе рвёшь... А игру загрузить - 5 минут ждать!! Сука, и ведь ждали же!!! Ошибка чтения, всё заново... И звук этот трр-т-т-тррр :D
раскрыть ветку (1)
Ага, и бордюр мигает)) на демосцене одно время было модным бордюр в работах использовать - при выборе нужной частоты появлялись гламурные полосочки, а некоторые даже бегущую строку фигачили))
Эх...
Эх...
В инсте после основ С++ сразу давали Ассемблер. Никогда не понимала почему дают в таком порядке...
ещё комментарий
Вам смешно, а наш колледж на первом семестре первого курса даёт только паскаль и только в ДОСе. До сих пор. (ВКИ НГУ)
раскрыть ветку (3)
В принципе правильно, если только полгода. Для изучения азов в самый раз. А так лучше с С начинать. И никаких скриптовых языков и/или языков без строгой типизации.
1\8 обучения на Паскале - нормально. Но и его не все могут освоить. А если бы был С, как на 2 семестре? Было бы в разы хуже.
Что значит "как раньше"? я год назад поступил и нас этот год не подпускали к другим языкам, пока мы не будем идеально понимать Паскаль :D
Правда, нам дали некую свободу и разрешили самостоятельно выбрать компилятор.
Правда, нам дали некую свободу и разрешили самостоятельно выбрать компилятор.
Но для начинающих есть же питон. Он куда юзабельнее паскаля (в плане того, что много кто на нем пишет реальные проекты), но при этом куда проще его по структуре. С JS я практически не знаком, но, по-моему, питон человеку без представления о программировании будет освоить проще.
ПЫСЫ: Последнее предложение - чисто имхо.
ПЫСЫ: Последнее предложение - чисто имхо.
раскрыть ветку (1)
Согласен. Сам сейчас Python учу. Все ясно и логично. Только не совсем понятно, что дальше делать, как со специализацией определиться...
А вы предлагаете с Си? Я выбрал JS в первую очередь потому, что он уже есть на компе у каждого пользователя. А еще JS прощает некоторые ошибки новичков, типа забытых точек с запятой. Для изучения других популярных языков нужно ставить дополнительное ПО, а большинству это делать просто лень. А еще статьи будут не про веб-программирование.
раскрыть ветку (47)
"А еще JS прощает некоторые ошибки новичков, типа забытых точек с запятой"
Новичкам как раз таки нельзя такие ошибки прощать. Нельзя баловать их такой роскошью.
"Для изучения других популярных языков нужно ставить дополнительное ПО"
Если человек не хочет (или не может xD) поставить IDE, то ему и не надо в программирование.
P.S. Вообще я не понимаю суть подобных постов. Если человек хочет изучать программирование - он сам начнет, сам найдет учебник, сам будет изучать. А если не хочет, то и 1000 подобных постов-уроков не сделают из него программиста. =/ Ну, это мое мнение и оно не претендует на место истины в последней инстанции.
Новичкам как раз таки нельзя такие ошибки прощать. Нельзя баловать их такой роскошью.
"Для изучения других популярных языков нужно ставить дополнительное ПО"
Если человек не хочет (или не может xD) поставить IDE, то ему и не надо в программирование.
P.S. Вообще я не понимаю суть подобных постов. Если человек хочет изучать программирование - он сам начнет, сам найдет учебник, сам будет изучать. А если не хочет, то и 1000 подобных постов-уроков не сделают из него программиста. =/ Ну, это мое мнение и оно не претендует на место истины в последней инстанции.
раскрыть ветку (33)
"Новичкам как раз таки нельзя такие ошибки прощать"
В принципе вы правы. Но программирование, это в первую очередь умение сформировать алгоритм Я планировал сделать упор именно на продумывании алгоритмов, а не на изучении правил конкретного языка.
"Если человек не хочет (или не может xD) поставить IDE"
Кроме IDE нужно ставить еще интерпретатор/компилятор. А тут можно сразу работать, даже не сворачивая эту страницу. Для многих самое сложное - это перебороть лень и начать заниматься, чему очень поспособствует сокращение необходимых телодвижений.
"А если не хочет, то и 1000 подобных постов-уроков не сделают из него программиста"
Среди моих знакомых много людей, от которых я часто слышу "Программирование это так сложно", "Я бы в жизни не смог(ла) написать программу" и так далее. Я же попытался показать, что программирование не так страшно, как кажется. Возможно у меня получилось плохо, но это уже вам судить)
В принципе вы правы. Но программирование, это в первую очередь умение сформировать алгоритм Я планировал сделать упор именно на продумывании алгоритмов, а не на изучении правил конкретного языка.
"Если человек не хочет (или не может xD) поставить IDE"
Кроме IDE нужно ставить еще интерпретатор/компилятор. А тут можно сразу работать, даже не сворачивая эту страницу. Для многих самое сложное - это перебороть лень и начать заниматься, чему очень поспособствует сокращение необходимых телодвижений.
"А если не хочет, то и 1000 подобных постов-уроков не сделают из него программиста"
Среди моих знакомых много людей, от которых я часто слышу "Программирование это так сложно", "Я бы в жизни не смог(ла) написать программу" и так далее. Я же попытался показать, что программирование не так страшно, как кажется. Возможно у меня получилось плохо, но это уже вам судить)
раскрыть ветку (30)
"Я планировал сделать упор именно на продумывании алгоритмов, а не на изучении правил конкретного языка"
Есть игры, обучающие продумыванию алгоритмов, например: http://code.org/learn
В первом посте есть только один пункт, который может заинтересовать в обучении - мы напишем игру. Когда-нибудь. Может быть... Дальше игры нет, сплошная математика, какие-то абстрактные понятия. Например типы. Их можно потрогать, увидеть? Нет. А почему "3" + 5 = "35", а не 8? В строго типизированных языках можно хотя бы сказать, что компилятор тупой как пробка и сам не может отличить числа от строки, но тут-то он вроде и умный, что во многих случаях как-то сам разбирается, а с другой стороны все такой же тупой. Булевы значения для многих вообще вынос мозга. Вроде всего два значения, но почему 5>3 - это некоторое true, над которым еще можно совершать операции - это недоступное для совсем новичков знания. Зато if (5>3) значительно легче понять - это конкретное действие: если 5 больше 3, то что-то сделать.
Для базового уровня стоит отходить от абстракций и больше ориентироваться на какие-то действия. Черт возьми, меня отец в начальных классах учил рисовать на визуалбэйсике. Рисовать, черт возьми - может показаться, что это не самое лучшее применение программирования, но оно как-то меня зацепило. Я делала линейные программки, которые просто проводят линии из одной точки в другую и складываются в картинку. А потом отец спросил, хочу ли я оживить картинку и на следующий день я уже умело орудовала переменными, условиями, циклами, потому что я видела результат. А просто подсчитать 3+4 - это абстракция, а не результат.
PS. Оформление нравится, а по содержанию - походит на обычный учебник :(
Есть игры, обучающие продумыванию алгоритмов, например: http://code.org/learn
В первом посте есть только один пункт, который может заинтересовать в обучении - мы напишем игру. Когда-нибудь. Может быть... Дальше игры нет, сплошная математика, какие-то абстрактные понятия. Например типы. Их можно потрогать, увидеть? Нет. А почему "3" + 5 = "35", а не 8? В строго типизированных языках можно хотя бы сказать, что компилятор тупой как пробка и сам не может отличить числа от строки, но тут-то он вроде и умный, что во многих случаях как-то сам разбирается, а с другой стороны все такой же тупой. Булевы значения для многих вообще вынос мозга. Вроде всего два значения, но почему 5>3 - это некоторое true, над которым еще можно совершать операции - это недоступное для совсем новичков знания. Зато if (5>3) значительно легче понять - это конкретное действие: если 5 больше 3, то что-то сделать.
Для базового уровня стоит отходить от абстракций и больше ориентироваться на какие-то действия. Черт возьми, меня отец в начальных классах учил рисовать на визуалбэйсике. Рисовать, черт возьми - может показаться, что это не самое лучшее применение программирования, но оно как-то меня зацепило. Я делала линейные программки, которые просто проводят линии из одной точки в другую и складываются в картинку. А потом отец спросил, хочу ли я оживить картинку и на следующий день я уже умело орудовала переменными, условиями, циклами, потому что я видела результат. А просто подсчитать 3+4 - это абстракция, а не результат.
PS. Оформление нравится, а по содержанию - походит на обычный учебник :(
раскрыть ветку (23)
"Например типы"
Про приведение типов будет в следующей статье. Изначально хотел запихнуть в эту, но подумал, что в плане обучения лучше малый объем статей, которые при этом выходят часто, чем огромный объем текста, продолжение к которому выходит раз в пол года.
"Зато if (5>3) значительно легче понять - это конкретное действие: если 5 больше 3, то что-то сделать."
Тут вы скорее всего правы и в большинстве обучающих материалов так оно и дается, но мне захотелось попробовать по-другому.
"А просто подсчитать 3+4 - это абстракция, а не результат".
Вы одновременно и правы и ошибаетесь. Все зависит от того, что это за числа. Если они взяты из головы, то да, это абстракция. Если они взяты из домашнего задания по математике - то это результат, который можно сразу использовать.
"Оформление нравится"
Спасибо)
"походит на обычный учебник"
В конце-концов это и есть учебник) В любом случае спасибо за здравую критику)
Про приведение типов будет в следующей статье. Изначально хотел запихнуть в эту, но подумал, что в плане обучения лучше малый объем статей, которые при этом выходят часто, чем огромный объем текста, продолжение к которому выходит раз в пол года.
"Зато if (5>3) значительно легче понять - это конкретное действие: если 5 больше 3, то что-то сделать."
Тут вы скорее всего правы и в большинстве обучающих материалов так оно и дается, но мне захотелось попробовать по-другому.
"А просто подсчитать 3+4 - это абстракция, а не результат".
Вы одновременно и правы и ошибаетесь. Все зависит от того, что это за числа. Если они взяты из головы, то да, это абстракция. Если они взяты из домашнего задания по математике - то это результат, который можно сразу использовать.
"Оформление нравится"
Спасибо)
"походит на обычный учебник"
В конце-концов это и есть учебник) В любом случае спасибо за здравую критику)
раскрыть ветку (18)
"Про приведение типов будет в следующей статье."
Я как раз считаю, что приведение типов нужно рассматривать как минимум очень осторожно. Числа, которые на самом деле строки, которые на самом деле объекты - это мозговыносящая штука.
"Если они взяты из домашнего задания по математике - то это результат, который можно сразу использовать."
Это верно, но домашку уже считают калькуляторами, которые выполняют те же функции, только привычнее :) Хотя да, без калькулятора в программировании никуда.
Я там дальше читала что-то про ООП в следующем уроке... Может все же повременить и дать условия, циклы?.. ООП - штука интересная, но только не в JS. Если при переходе на ООП в классических языках происходит сдвиг по фазе в голове (с пиханием объектов куда не попадя), то в джаваскрипт объекты - это вообще сдвиг по фазе... Или очень в общем их описать. Когда я объясняла что такое ООП - то лучше всего работал отдаленный от программирования пример про мебельную фабрику, которая имея схему (класс) может создавать объекты (стулья) с разными свойствами (породы дерева, обивка). От этого можно плавно перейти к мысли, что все - объекты, стулья - объекты, дома - объекты, которые содержат в себе квартиры - объекты, в которых живут люди - объекты, которые пишут функции-объекты, создают переменные-объекты, и даже 1+1 - это операция над двумя объектами, мухаха! Хм... Что-то я увлеклась...
Я как раз считаю, что приведение типов нужно рассматривать как минимум очень осторожно. Числа, которые на самом деле строки, которые на самом деле объекты - это мозговыносящая штука.
"Если они взяты из домашнего задания по математике - то это результат, который можно сразу использовать."
Это верно, но домашку уже считают калькуляторами, которые выполняют те же функции, только привычнее :) Хотя да, без калькулятора в программировании никуда.
Я там дальше читала что-то про ООП в следующем уроке... Может все же повременить и дать условия, циклы?.. ООП - штука интересная, но только не в JS. Если при переходе на ООП в классических языках происходит сдвиг по фазе в голове (с пиханием объектов куда не попадя), то в джаваскрипт объекты - это вообще сдвиг по фазе... Или очень в общем их описать. Когда я объясняла что такое ООП - то лучше всего работал отдаленный от программирования пример про мебельную фабрику, которая имея схему (класс) может создавать объекты (стулья) с разными свойствами (породы дерева, обивка). От этого можно плавно перейти к мысли, что все - объекты, стулья - объекты, дома - объекты, которые содержат в себе квартиры - объекты, в которых живут люди - объекты, которые пишут функции-объекты, создают переменные-объекты, и даже 1+1 - это операция над двумя объектами, мухаха! Хм... Что-то я увлеклась...
раскрыть ветку (11)
"пример про мебельную фабрику"
Собирался объяснять подобными примерами, правда пока без "фабрики", а только на примерах готовой "мебели". В JS и так даже скалярные значения являются объектами, так что с Классами можно и повременить)
Хотя тут надо еще подумать, что бы описать все максимально понятно...
Собирался объяснять подобными примерами, правда пока без "фабрики", а только на примерах готовой "мебели". В JS и так даже скалярные значения являются объектами, так что с Классами можно и повременить)
Хотя тут надо еще подумать, что бы описать все максимально понятно...
раскрыть ветку (10)
Лучше в следующем уроке помочь читателю написать простенькую программку с условиями :) Осталось только придумать программку...
раскрыть ветку (9)
раскрыть ветку (8)
Спасибо за пост
Особо программированием не интересуюсь ,но занять время можно
Довольно интересно)
Подписался
P.S. Объясняете на порядок лучше моего информатика :D
За Мику отдельный плюс)
Особо программированием не интересуюсь ,но занять время можно
Довольно интересно)
Подписался
P.S. Объясняете на порядок лучше моего информатика :D
За Мику отдельный плюс)
"Про приведение типов будет в следующей статье."
Расскажешь почему [] + [] == ''; {} + {} -> NaN; {} + [] == 0; '' + {} == "[object Object]", а {} + '' == 0 и кучу других приколюх?)
Расскажешь почему [] + [] == ''; {} + {} -> NaN; {} + [] == 0; '' + {} == "[object Object]", а {} + '' == 0 и кучу других приколюх?)
ещё комментарии
раскрыть ветку (4)
ды я к тому что такие приколюхи в js повсюду, одно только a = new Object(1); a + 1 == 2; уже взорвет мозг новичку, а ООП реализуемое на прототипах взорвет мозг и тому кто программит, но с js сталкивался только в для создания рюшечек в jq
ещё комментарии
А квантовая теория поля взрывает мозг не только школьникам. Давайте не будем в школе преподавать физику. Свои приколюхи есть в любом языке, просто в некоторых они не так явно видны.
a = new Object(1) вполне понятная вещь, если знать, как работает конструктор объектов.
Все это, естественно, надо объяснять, но не все надо объяснять сразу. Обучение должно идти от легкого к сложному, а не наоборот. Физику же вы начинаете изучать с простых формул, вроде V=S/t, а не с бозонов Хиггса или гравитонов.
a = new Object(1) вполне понятная вещь, если знать, как работает конструктор объектов.
Все это, естественно, надо объяснять, но не все надо объяснять сразу. Обучение должно идти от легкого к сложному, а не наоборот. Физику же вы начинаете изучать с простых формул, вроде V=S/t, а не с бозонов Хиггса или гравитонов.
раскрыть ветку (2)
я не про конструктор объектов пример привел, а то что мы объект сложили с числом и получили число, я не привожу в примеры паттерны и сложные алгоритмы тут простое сложение данных разных типов, а на выходе мы получаем не совсем то что думаем получить. для новичков сложение объекта и инта должно падать с ошибкой, а не выдавать результат как будто складывали два инта, js сложный язык с кучей подводных камней, и основная моя претензия что знакомство с программированием начинается с него
ещё комментарии
ещё комментарии
ещё комментарии
>> А почему "3" + 5 = "35", а не 8?
О_О
Это в каком таком языке сложение со строкой даёт число???
О_О
Это в каком таком языке сложение со строкой даёт число???
раскрыть ветку (3)
Это джаваскрпт, детка! Это хардкор!
А на самом деле все логично. Ты строку складываешь с числом. А вдруг в строке есть символы? Компилятору же лень проверять, действительно в строке "3" только число, так что он преобразовывает 5 в строку и применяет операцию соединения строк. Вот и получается, что "3" + "5" = "35". Как "а" + "b" = "ab".
А вот в php отдельная операция для соединения строк и сложения чисел. Так что там "3" + 5 = 8. И "3nvfdkgldf" + 5 = 8. Зато "авыаыв3" + 5 = 5. Потому что ленивое преобразование типов, ибо нефиг :)
А на самом деле все логично. Ты строку складываешь с числом. А вдруг в строке есть символы? Компилятору же лень проверять, действительно в строке "3" только число, так что он преобразовывает 5 в строку и применяет операцию соединения строк. Вот и получается, что "3" + "5" = "35". Как "а" + "b" = "ab".
А вот в php отдельная операция для соединения строк и сложения чисел. Так что там "3" + 5 = 8. И "3nvfdkgldf" + 5 = 8. Зато "авыаыв3" + 5 = 5. Потому что ленивое преобразование типов, ибо нефиг :)
раскрыть ветку (2)
раскрыть ветку (1)
Если вникать в мелкие детали - там много забавностей можно найти :) Просто нужно через год кодинга на одном языке открыть учебник с основами - там окажется довольно много маленьких деталей, про которые уже забыл из-за того, что изначально плохо понимал язык.
Кстати, в этом плане кого-то учить хорошо, так начинаешь читать учебник, чтобы материал лучше подать и находишь что-то давно забытое :)
Кстати, в этом плане кого-то учить хорошо, так начинаешь читать учебник, чтобы материал лучше подать и находишь что-то давно забытое :)
я так понимаю, автор хотел показать саму концепцию программирования на примере какого-то простого языка, и в общем то мое имхо-он сделал это хорошо. респект за понятное изложение.
если смотреть с точки зрения "умение сформировать алгоритм"
то нет смысла вообще учить программирование.
по большому счету все типовые задачи давно решены и работа сводится к собиранию конструктора.
а вообще по алгоритмам есть целые курсы.
по поводу IDE - она включается компилятор как правило.
в некоторых случаях - интерпретатор.
то нет смысла вообще учить программирование.
по большому счету все типовые задачи давно решены и работа сводится к собиранию конструктора.
а вообще по алгоритмам есть целые курсы.
по поводу IDE - она включается компилятор как правило.
в некоторых случаях - интерпретатор.
"Программирование это так сложно" - так и есть на самом деле. Выучить синтаксис != стать программистом
ещё комментарии
Золотые слова - "Если человек хочет изучать программирование - он сам начнет, сам найдет учебник, сам будет изучать".
Сейчас учись не хочу, и хабр, и стэковерфлоу и тонна инфы в гугле.... Раньше купишь книжку и изучаешь, что как да почему... А если не работает перечитываешь дважды....
Сейчас учись не хочу, и хабр, и стэковерфлоу и тонна инфы в гугле.... Раньше купишь книжку и изучаешь, что как да почему... А если не работает перечитываешь дважды....
раскрыть ветку (1)
согласен. Так же не вижу смысла тратить на эти посты время и силы.
Все, что нужно знать - синтаксис и алгоритмы. Хотя бы немного.
А для этого надо всего лишь уметь читать.
Когда ко мне на курсы по безопасности веба в вуз приходят студенты ( как правило, нулевые), я им предлагаю самостоятельно за 2 недели разобраться с js, php, sql синтаксисом. Через 2 недели от 50 человек остается 5, с ними-то я и работаю.
Все, что нужно знать - синтаксис и алгоритмы. Хотя бы немного.
А для этого надо всего лишь уметь читать.
Когда ко мне на курсы по безопасности веба в вуз приходят студенты ( как правило, нулевые), я им предлагаю самостоятельно за 2 недели разобраться с js, php, sql синтаксисом. Через 2 недели от 50 человек остается 5, с ними-то я и работаю.
"Для изучения других популярных языков нужно ставить дополнительное ПО, а большинству это делать просто лень" - если человеку лень сделать несколько кликов мыши по инструкции, то ему программирование ни к чему
C нетерпением жду как ты будешь объяснять вот такие вот моменты:
typeof null;
typeof function(){}
NaN === NaN;
NaN == NaN;
function Counter(){ this.count = 0; setTimeout(function(){ this.count++ }, '1000');} start = new Counter()
for (var key in animals) { setTimeout(function(){ console.log(key) }, '5000') }
Пока хватит )))
typeof null;
typeof function(){}
NaN === NaN;
NaN == NaN;
function Counter(){ this.count = 0; setTimeout(function(){ this.count++ }, '1000');} start = new Counter()
for (var key in animals) { setTimeout(function(){ console.log(key) }, '5000') }
Пока хватит )))
раскрыть ветку (5)
1 - 2) в js 6 типов насколько помню object, number, boolean, string, function, undefined всё что не число, строка, функция,булеан или неопределенная хрень - объект(хотя есть и объекты String, Boolean, Number - которые по typeof - object, в отличии от Function - которя верна себе потому что возвращает не объект а анонимную функцию), вроде как то так.
3-4) NaN - это образно говоря не число, так что тут логично не число не равно не числу
5) область видимости же, в function(){ this.count++ }, '1000';} переменная count не определена, и в итоге к пустому объекту прибавляется единица, а то NaN
6) если правильно понял косяк в setTimeout и в переменной key - которая глобальная, устанавливается три таймера, каждый из которых запустит анонимную функцию с console.log(key), но на момент запуска key ,но на момент их запуска key будет присвоено значение последнего ключа, поэтому вывод будет одинаковый
JS знаю плохо, поэтому где не прав поправьте
3-4) NaN - это образно говоря не число, так что тут логично не число не равно не числу
5) область видимости же, в function(){ this.count++ }, '1000';} переменная count не определена, и в итоге к пустому объекту прибавляется единица, а то NaN
6) если правильно понял косяк в setTimeout и в переменной key - которая глобальная, устанавливается три таймера, каждый из которых запустит анонимную функцию с console.log(key), но на момент запуска key ,но на момент их запуска key будет присвоено значение последнего ключа, поэтому вывод будет одинаковый
JS знаю плохо, поэтому где не прав поправьте
раскрыть ветку (2)
JS знаю плохо
Вот и не лезь. Вопрос конкретно к автору. JS полон подводных камней, вот пусть объясняет.
Вот и не лезь. Вопрос конкретно к автору. JS полон подводных камней, вот пусть объясняет.
раскрыть ветку (1)
typeof null: null - указатель на NULL в машинном коде, а typeof считает указатели объектом. Разработчики не скрывают, что это баг в JS.
typeof function(){} - не понимаю, что тут объяснять
NaN никогда ничему не равен, даже самому себе. Надо просто запомнить как аксиому.
function Counter(){ this.count = 0; setTimeout(function(){ this.count++ }, '1000');} start = new Counter()
this внутри таймаута или интервала - ссылка на этот самый таймаут/интервал. Тут просто нужно использовать bind.
for (var key in animals) { setTimeout(function(){ console.log(key) }, '5000') }
К тому времени, как сработает console.log(key) значение key будет отличатся от его значения на момент создания таймаута.
Честно говоря, не совсем понимаю к чему эти вопросы. Проверить мои знания? Даже если бы я этого не знал, нагуглил бы за пару минут. Показать, что начинать учиться с JS неправильно, так как в нем много подводных камней? В любом языке они есть. Например, писал проектик на C#, и вот для меня было еще каким камнем то, что конкатенация строк вызывала утечку памяти, и на некоторых компах прога, которая в обычных условиях потребляет не больше 30Мб оперативы, жрала все восемьсот. Вот это был камень. А то, что привели вы - так, нюансы. А последний пример можно вообще на множестве языков повторить.
typeof function(){} - не понимаю, что тут объяснять
NaN никогда ничему не равен, даже самому себе. Надо просто запомнить как аксиому.
function Counter(){ this.count = 0; setTimeout(function(){ this.count++ }, '1000');} start = new Counter()
this внутри таймаута или интервала - ссылка на этот самый таймаут/интервал. Тут просто нужно использовать bind.
for (var key in animals) { setTimeout(function(){ console.log(key) }, '5000') }
К тому времени, как сработает console.log(key) значение key будет отличатся от его значения на момент создания таймаута.
Честно говоря, не совсем понимаю к чему эти вопросы. Проверить мои знания? Даже если бы я этого не знал, нагуглил бы за пару минут. Показать, что начинать учиться с JS неправильно, так как в нем много подводных камней? В любом языке они есть. Например, писал проектик на C#, и вот для меня было еще каким камнем то, что конкатенация строк вызывала утечку памяти, и на некоторых компах прога, которая в обычных условиях потребляет не больше 30Мб оперативы, жрала все восемьсот. Вот это был камень. А то, что привели вы - так, нюансы. А последний пример можно вообще на множестве языков повторить.
раскрыть ветку (1)
Показать, что начинать учиться с JS неправильно, так как в нем много подводных камней?
Не только камней, но и неоднозначностей и неопределенностей.
В любом языке они есть.
Есть но не в таких гигантских количествах.
А то, что привели вы - так, нюансы.
Нет, это как раз таки камни.
Не только камней, но и неоднозначностей и неопределенностей.
В любом языке они есть.
Есть но не в таких гигантских количествах.
А то, что привели вы - так, нюансы.
Нет, это как раз таки камни.
ещё комментарии
Зачем сразу Си? Вы пробовали гуглить списки ЯП? Есть тонны языков созданнных специально для новичков и для обучения. К тому же JS несмотря на свою простоту имеет один существенный недостаток - он более чем весь состоит из нюансов, новичок как бы не старался всё равно будет косячить и метаться по граблям.
раскрыть ветку (3)
Перед тем, как учить кого-то языку, надо знать его самому. С JS я достаточно хорошо знаком, а вот с тем же Питоном, например, только "на вы". А еще, языки, созданные специально для новичков, редко имеют практическое применение и по ним очень мало информации.
раскрыть ветку (2)
Языки для обучения и не должны иметь практического применения, они созданы исключительно для того, чтобы научить людей думать "алгоритмически", чтобы люди поняли основные концепции программирования. ЯП реального применения намного проще изучать, когда уже имеется какой-то фундамент знаний и умений по программированию.
Практическое применение...
В любом языке нужно уметь строить алгоритмы. Это - база, основа. Если есть инструмент, который крепче всего строит эту базу - то лучше использовать его. По моему имхо лучше обучающих языков по программированию только обучающие игры. А лучше обучающих игр личный препод от бога, который помогает пройти первые шаги :)
Зная алгоритмы изучение любого ЯП становится значительно проще. Зная один ЯП (включая классическое ООП, а не как в джаваскрипте :D) - изучение других языков становится значительно проще. В конце концов получается, что даже не зная языка можно на нем сваять простенькую программу за пару часов, покуривая англоязычные мануалы.
В любом языке нужно уметь строить алгоритмы. Это - база, основа. Если есть инструмент, который крепче всего строит эту базу - то лучше использовать его. По моему имхо лучше обучающих языков по программированию только обучающие игры. А лучше обучающих игр личный препод от бога, который помогает пройти первые шаги :)
Зная алгоритмы изучение любого ЯП становится значительно проще. Зная один ЯП (включая классическое ООП, а не как в джаваскрипте :D) - изучение других языков становится значительно проще. В конце концов получается, что даже не зная языка можно на нем сваять простенькую программу за пару часов, покуривая англоязычные мануалы.
ещё комментарий
Необходимо СРАЗУ приучать к жестким условиям синтаксиса. Даже во всепрощающем JSе из-за отхода от норм синтаксиса опосля можно получить весьма неприятные баги. И учить программировать надо на языках, компиляторы которых создают нативный процессору код. А то наплодится даунов, которые ОС для мобильников на java пишут. Не верите? Исходники Ведроида качните.
В Школе программирования так же учат с JS. Притом отлично получается.
Основы программирования
Видеокурс http://geekbrains.ru/courses/58
Основы программирования
Онлайн-курс http://geekbrains.ru/courses/2
Основы программирования
Видеокурс http://geekbrains.ru/courses/58
Основы программирования
Онлайн-курс http://geekbrains.ru/courses/2
ещё комментарий