Секрети успішної інформатики

Тут ви знайдите корисну і цікаву інформацію про роботу з комп'ютером

Мені все цікаво!

среда, 6 апреля 2016 г.


11 неожиданных особенностей языков программирования

На свете много языков программирования и каждый из них обладает своими маленькими причудами — странным синтаксисом, необычным функционалом или нестандартными реализациями. Порой это сбивает с толку не только новичков, но и опытных разработчиков. Иногда эти причуды всерьез останавливают от изучения языка или, напротив, становятся известной фишкой. 


Есть очень много подобных вещей в языках программирования, но мы выбрали для вас самые известные из них.

ПУСТЫЕ СТРОКИ В ORACLE SQL




Image courtesy Nic Hughes CC BY 2.0 

Oracle считает строки нулевой длины эквивалентными NULL. Это существенное отличие от других БД и ANSI/ISO стандарта SQL, который подразумевает, что пустая строка — ранее известное значение, а NULL — неизвестное, и они не могут быть эквивалентны. Это может принести головную боль при написании кода для нескольких RDBMS или переписывании кода.

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

Цитаты:


«Да, это одна из „прекрасных“ фич Oracle DB» — Lukas Eder
«Пустая строка эквивалентна NULL не больше, чем числу 0» — Ben Blank
«ЧТО!? Я так рад, что мы не используем Oracle. Это пугает» — Jeff Davis

+ КАК УНИВЕРСАЛЬНЫЙ ОПЕРАТОР КОНКАТЕНАЦИИ В JAVASCRIPT




Image courtesy MicroAssist CC BY-SA 2.0

Оператор + перегружен в JavaScript, и выполняет роль как математического сложения чисел, так и конкатенации строк. То есть если один из операндов строчный, а другой числовой, то условно вместо 1+1=2 вы получите ‘1’+1=’11’: JavaScript без предупреждения приведет число к строке.

Причина тому — недостаточный контроль за совместимостью типов. Например, в Python + используется ровно для тех же целей, но у вас ни за что не получится сложить число и символ.

Цитаты:


«Проблема в том, что скрытое приведение типов в выражениях непредсказуемо» — Anonymous
«JavaScript должен выбрасывать исключение в таком случае» — crgwbr
«+ для конкатенации строк — кошмар» — Matteo Riva

МОДУЛИ PERL ДОЛЖНЫ ВОЗВРАЩАТЬ TRUE



Image courtesy anthony kelly CC BY 2.0

Каждый модуль в языке Perl должен возвращать true. Если же этого не происходит, то разработчик рискует сильно подпортить себе карму и столкнуться с ошибкой компиляции.

Причина этого ясна и понятна, если понимать, что такое модуль в Perl. Программа компиляции, рассматривая подключённые к коду модули, в первую очередь проверяет их выполняемость. Даже если в модуле нет кода инициализации, Perl все еще ожидает получить на выходе True.

Цитаты:


«Эта штука всегда оставляет у меня тошнотворное чувство» — Drew Hall
«Это не имеет практического применения, учитывая непрерывно возникающее раздражение» — Schwern

ТРИГРАФЫ В C И C++



Image courtesy REUTERS/Gary Hershorn

Языки C и C++ поддерживают триграфы — трёхсимвольные обозначения, которые автоматически конвертируются в односимвольные. Так, например, комбинация ??! выдаст вам |. Если вы хотите максимально запутать необразованного врага, решившего прочитать ваш код, используйте вместо квадратных скобок комбинацию ??( и ??).

Смысл триграфов вовсе не в желании разработчиков языка обфусцировать код, а в том, что когда-то давно многие клавиатуры просто не содержали распространённых ныне символов, например фигурных скобок.

Цитаты:


«Google не поможет, если вы ищете что-то по запросу ??!??!» — Isaac
«Все так ненавидят триграфы, что C99 принес диграфы как альтернативу… еще больше обфускации» — dododge
«Радость триграфов — делает C нечитаемым с 1977 года» — Martin Beckett

ЧУВСТВИТЕЛЬНОСТЬ К РЕГИСТРАМ PHP



Image courtesy Gregg O'Connell CC BY 2.0

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

Доподлинно неизвестно, откуда повелось такое расхождение, но наиболее вероятный вариант — изначальное желание создателей PHP выделить интерфейс CGI в отдельный полноценный язык программирования.

Цитаты:


«Ну, это PHP. Не удивляйтесь» — Grzechooo
«Вот почему PHP-программисты используют подчеркивания вместо CamelCase, называя свои функции» — paperstreet7
«Я не имею ни малейшего представления о том, как создавать языки программирования...» — создатель PHP Rasmus Lerdorf
«Есть ли в PHP что-то, не вызывающее недоумения?» — Lambda Fairy

ИСТИННЫЙ НОЛЬ В RUBY



Image courtesy DaveBleasdale CC BY 2.0

В Ruby 0 == TRUE. Это неожиданно, расходится с большинством других языков, включая Python и C, где 0 всё-таки FALSE, и часто сбивает с толку новичков в Ruby.

Причина в том, что в Ruby только boolean false и нулевое значение (nil) вычисляются в FALSE; все остальное имеет значение TRUE. 0 рассматривается как любое другое число.

Цитаты:


«Это может быть странным, если бы я не считал это неплохим» — Chris Lutz
«Вот почему я люблю Ruby. Мне не приходится иметь дело с таким zero-false злом» — Edditoria
«0==true // аргх, компилятор C в моей голове взорвался!!» — kenny

ПРОБЕЛЫ В PYTHON



Image courtesy Paul Kitchener CC BY 2.0

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

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

Цитаты:


«Нет, правда: это то, что мешает мне когда-либо полюбить Python» — wazoox
«Я обожаю отступы в Python, но есть ньюанс: при копировании и вставке кода из Интернета это часто приводит к необходимости дополнительной очистки» — Greg
«Если вам нужны навязанные отступы, вы слишком ленивы» — Joris Meys

МАССИВЫ В C ПОДЧИНЯЮТСЯ АРИФМЕТИКЕ УКАЗАТЕЛЕЙ



Image courtesy BlueGum CC BY-ND 2.0

Кроме того, что можно получить ссылку на элемент массива как a[i], можно получить ее как i[a].

Причина в том, что массивы в C — указатели на блоки памяти, поэтому a[i]=*(a+i)=*(i+a)=i[a].

Цитаты:


«… это бесценно, когда вы участвуете в конкурсе обфускации C...» — Confusion
«Я не расцениваю это как особенность, это просто взгляд на ядро C. Все для указателей и максимально быстрого получения доступа к памяти. В некотором смысле это красиво» — Michael Neale

ПРЕДОПРЕДЕЛЁННЫЕ ПЕРЕМЕННЫЕ PERL



Image courtesy Emily Mathews CC BY 2.0

Если внимательно ознакомиться с описанием языка Perl, можно найти достаточно большое количество предопределённых переменных с, мягко говоря, странными названиями (правда, имеющими достаточно длинный английский эквивалент).

Они служат для выдачи информации или обеспечения доступа к различным аспектам программы. Так, например, $@ — сообщение об ошибке, $$ — идентификатор процесса, $^V — используемая версия Perl. Новичкам приходится часто заглядывать в документацию.

Цитаты:


«Очень раздражает» — MatrixFrog
«Классная штука для однострочников, кстати» — niXar
«Я думаю, что худшие из них — $@ и @$. Работают оба, но я до сих пор не знаю, что делает второй...» — Artem Russakovskii
«Между прочим, есть еще серьезная проблема с этими переменными: они не гуглятся!» — malvim

АВТОМАТИЧЕСКАЯ ВСТАВКА ТОЧКИ С ЗАПЯТОЙ В JAVASCRIPT



Image courtesy Nate Angell CC BY 2.0

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

Изначально вставка точки с запятой предназначалась для удобства, чтобы сделать C-подобный синтаксис JavaScript проще для новых разработчиков.

Цитаты:


«У вас точно будут проблемы, если вы разрабатываете язык с расчетом на то, что ваши пользователи идиоты» — Rob Van Dam
«Совет: выясните нужное место для точки с запятой и поставьте ее. Это лучше всего» — Doug Crockford
«Вставка точки с запятой — одна из злейших частей JavaScript» — fennec

АВТОУПАКОВКА В JAVA И КЕШИРОВАНИЕ INTEGER



Image courtesy Erich Ferdinand CC BY 2.0

Java автоматически упаковывает примитивы в объекты, например, int в Integer. В целом ничего страшного, но Integer кешируется, если его значение лежит между -128 и 127. Это может привести к непредвиденным результатам в случае сравнения автоупакованных объектов, так как программа будет присваивать значение TRUE, если оба объекта имеют значение от -128 до 127, и FALSE во всех остальных случаях.

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

Цитаты:


«Вот результат преждевременной оптимизации» — Joschua
«Это не распространенная ошибка, но хороший повод использовать нативные типы Java для чисел, логических переменных и так далее» — Ravi Wallau
«Я так рад, что пишу на C#» — Will

Автор перевода: Илья Бубнов

Опубликовано видео прогулки по коллайдеру

Видео представлено в режиме "360 градусов".   


БАК был снова запущен в июне 2015 года nnm.ru Телекомпания ВВС представила панорамное видео, позволяющее совершить прогулку по Большому адронному коллайдеру (БАК). Видео было опубликовано на официальном YouTube-канале ВВС. 



БАК был построен в Европейском центре ядерных исследований (CERN). 
БАК был снова запущен в июне 2015 года nnm.ru 


БАК построен на 100-метровой глубине под границей Франции и Швейцарии, близ Женевы. Он представляет собой 27-километровый кольцевой туннель, в котором установлен ускоритель заряженных частиц в виде гигантской трубы. 


БАК разгоняет наименьшие частицы - протоны, до скорости, близкой к световой, в результате чего станет понятно, какие объемы энергии выделяются при столкновении частиц на рекордных скоростях. Эксперимент призван приблизить человечество к ответу, как была создана Вселенная. 


Большой адронный коллайдер был закрыт на ремонт в 2013 году. За 2 года специалисты должны были модернизировать установку и подготовить ее к работе на более высоких энергиях. В июне 2015 года БАК был снова запущен

Как наука в ближайшее время разделит человечество на две неравные части

2015 год был очень урожайным на открытия. К словам в заголовках новостей, включающим в себя слово «прорыв», люди начали даже привыкать. Прорывы были везде: в методе хранения и плотности упаковки информации с побочным эффектом в виде почти вечности по времени сохранности; в лечении рака; в редактировании генома…

Прогресс снова, после нескольких лет затишья, рванул во весь опор. 2016 год не тоже разочаровал и прорывные исследования продолжают сходить со страниц СМИ на уже утомленного читателя. Нам обещают 5G и термоядерную энергию «вот-вот».
Есть много научных работ, которые готовы «изменить жизнь человечества», но одна программа, которую недавно анонсировало агентство DARPA, имеет потенциал превратить человечество в нечто совершенно новое. Это прорыв прорывов, дверь- войдя в которую, человечество более никогда не будет прежним.
Это программа направлена на создание интерфейса между Neocortexчеловека и цифровым миром. Интерфейс будет служить переводчиком между электрохимическими сигналами нейронов и цифровым языком информационного мира. Задача этой программы нетривиальна и фантастически сложна, сейчас ученные могут получать сигнал через всего 100 каналов от групп в десятки тысяч нейронов, а реализация целей программы состоит в индивидуальном контакте с любым из миллиона нейронов, выделенного участка коры.
Общение с друзьями показало, что большинство людей не готово осознать перспективы, которые откроются после создания таких имплантов…
Думаю, что после массового их внедрения, история Человечества, которое мы знаем, закончится.
Пока что мы только пытаемся подобрать общее название для существа, которое получится после смешения биологического и небиологического носителя сознания. Представьте себе этого трансчеловека, который стал (в начале пути) на 2 порядка разумнее, с абсолютной памятью, подгружаемыми знаниями по любой интересующей теме. Представьте себе силу тысячи Эйнштейнов, которые не состоялись в силу обстоятельств жизни. Представьте мощь синергии различных наук, освоить которые одним мозгом за одну человеческую жизнь, невозможно.
Какие задачи тревожат сегодняшнее общество? Нехватка воды, продовольствия, энергии. Будет ли это проблемой новых существ? Нет, они решат их походя, только лишь учась быть ДРУГИМИ.
Создав такой интерфейс, человек в полной мере приобщится к закону Мура, его способности и возможности начнут расти экспоненциально. Интерфейс станет воротами для настоящего фонтана открытий и разработок, которые будут прежде всего направлены на дальнейшее совершенствование себя.
Создание наноботов по-прежнему больше фантастика, нежели наука, но что не дается человеку, будет под силу новому существу, которое может бросить на решение задачи всю мощь вычислительной техники мира, соединенной с самым совершенным инструментом познания- мозгом. Решив эту задачу, мы займемся реконструкцией наших тел и мозга, в том числе.
Замена нейронов один за другим на небиологические аналоги, имеющие скорость обмена информацией на сотни порядков больше, реконструкция нервной системы по тому же принципу? Непостижимо? Но реально для новой сущности.
Непостоянство облика. Тело по задачу. Тело для развлечения. Неуязвимость. Вечная жизнь. Нет больше ни голода, ни болезней, ни физических страданий.
Закончив с хорошим, перейду к негативу.
Стругацкие в своей книге сформулировали тезисы, которые становятся как нельзя актуальными для самого ближайшего будущего:
человечество будет разделено на две неравные части;
– человечество будет разделено на две неравные части по не известному нам параметру;
– человечество будет разделено на две неравные части по не известному нам параметру, причем меньшая часть форсированно и навсегда обгонит большую;
Человечество неоднородно по своим убеждениям, религиозным воззрениям, фобиям. Я постулирую, что в ближайшее время мы начнем терять не одну «неравную часть», а часть за частью. И каждая потеря будет «большинством».
Религии станут ситом №1, фобии вмешательства в работу мозга станет ситом №2, желание стать «султаном среди гурий» и другие виртуальные мечты/миры станут ситом №3, неготовность изменить структуру самого себя станет ситом №4 и так далее… Радует то, что отсеявшиеся не будут гибнуть как раньше, они будут радостно и беззаботно жить каждый в своем мирке, причем жить намного более комфортно, чем когда-либо. Но они навсегда… навсегда отстанут от той, наверно, десятой или сотой доли процента человечества, которая пройдет все шаги.
Эта болезненная трещина пройдет по семьям, друзьям, народам и странам. Уходящие в высь прогресса, будут уходить с печалью и сожалением, но с полной осознанностью выбора.
Мы проживаем может быть последнее десятилетие привычной жизни, дальше все наши сегодняшние тревоги едва ли вызовут тень улыбки на лице.
Не дай вам Бог жить в эпоху перемен.

пятница, 28 марта 2014 г.



Модуль 11. Рефлекс

Цей модуль називаєтся Демонстрація Портфоліо.
Тут ми дізналися: 
-Як  можно підготуватися до проведення ефективної демонстрації Портфоліо.
-Як надати конструктивні пропозиції та відгуки на демонстрацію робіт інших учасників, щоб вони допомагали вчителям та учням у їх подальшому навчанні.

"Вік живи - а ще два життя навчайся!" :-)
Intel таки не дає вчителям стояти (або сидіти) на місці!!! Ще більше нових ідей, ще більше нових вражень ві почутого, вивченого, здобутого! От тільки (лишенько) вистачало б ще в добі часу і щоденна рутина не забирала б натхнення, політ думок і прагнення всього досягти!
Тренерам та всім іншим колегам хочу подякувати за цікаві думки, ідеї проектів і приємне спілкування!




 Корисні посилання: 

Модуль 10. Рефлекс

Модуль називаєтся: 
Фасилітація з використанням комп’ютерних технологій. 
В цьому модулі я познайомилася із таким терміном як фасилітація.
Створила  план з фасилітації, який допоможе учням самостійно виконувати проекти.
У процесі навчання, як правило, вчитель ставить чіткі запитання, а учень на них лише відповідає. Я вважаю, що потрібно вчити дітей ставити запитання, щоб вони більше говорили, висловлювали свою думку. За вдале та хороше запитання вчитель навіть може поставити оцінку.
За допомогою плану впровадження вчитель може спланувати свою роботу і прослідкувати хто що може виконати і на якому етапі. Все проходило дуже швидко, тому треба все доміркувати.(Напевно, потрібно записатись на додаткові курси Intel "Шлях до успіху" і опрацювати всі можливі документи).Страшно перед захистом. Я знаю, що маю певні неточності в своєму Портфоліо. Надзвичайно радує отримана навичка фасилітації - не критикуй, а надай свої пропозиції для покращення. Морально це заспокоює. Зараз відбудеться тяжка робота оцінювання колег.