Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
a = [7.4, 8, 5, 4.3, 1.6, 7]
for x in a:
print x/2,
* This source code was highlighted with Source Code Highlighter.#include <iostream>
using namespace std;
int main()
{
float a[] = {7.4, 8, 5, 4.3, 1.6, 7};
for(int i=0; i<6; i++)
cout << a[i]/2 << ' ';
return 0;
}
* This source code was highlighted with Source Code Highlighter.— Программирование — это довольно понятная штука, и я со временем всему научусь.можно сформировать другое:
— Программирование — это какие-то страшные дебри непонятных условностей, через которые продираются только полоумные психи. Ни в жизнь я его не смогу освоить!
п. 1-3. Ну совсем не вижу необходимости рассказывать это сразу.И я о том же. Не нужно всё рассказывать сразу и забивать раньше времени мозг шелухой. Но, в то же время, я уверен в необходимости избегать «магических заклинаний». Ведь все эти «using namespace std;» для новичка ничем не отличаются от «чтобы заклятье заработало — брось три горсти песка через левое плечо, повернись на левом каблуке и подожги сушёную лапку летучей мыши»".
Во-первых, если для вас это критично — используйте Pascal, там ничего из этого не надо.Вот я и использую питон :) Там это точно не надо :)
Во-вторых — вспомните, что в Python тоже надо будеть пояснять, что такое import, для такой «простой» функции, как, скажем, синус.В принципе, можно неделями учить человека, и так и не столкнуться с import'ом — есть куча интересных задач, решаемых и без него. Особенно классических — на базовые алгоритмы. А придёт время — человек будет достаточно подготовлен, да и не такая это сложная штука — import.
п. 4. А на Питоне на той же программе учителю придеться бегать по класу и пробелы расставлять — чем лучше точки с запятой?Просто выберите нормальный редактор. «Проблемы с табуляцией» — исключительно надуманны. Попробуйте сами — поймёте.
п. 5. Во-первых не надо сразу вываливать на ученика все типы данных. Почему просто не сказать, что float — действительное число? Неужели так сложно?
Во-вторых даже вы, судя по тому, что хотя я и спрашивал, но вы нигде так и не ответили, не заметили, что в примере с Python — ошибка! А каково будет ученику? Эта ваша «простота» Питона выливается в состояние ученика «Почему у меня такая простая программа и неправильно работает?». А это состояние куда хуже чем пару строчек, на которые учитель сказал пока-что не обращать внимания.Читаю, и не могу понять, а при чём тут статическая типизация? При ней нельзя допустить ошибку? Компилятор всё всегда поправит и подскажет?
п. 6-8. Согласен, тут С++ слишком сложен, но я привел С++ просто в качестве языка, который строже чем Питон, и показал в чем преимущество его строгости. Для обучения нужен более строгий, чем Питон язык, с более простым синтаксисом, чем в С++. Тот же Паскаль, например.Да, вы привели пример более строгого языка. Но я всё ещё не вижу преимущества в обучении, обусловленного этой строгостью. Пока только утверждения что «строго»=«хорошо». Ну да… а если пороть ремнём за двойки — тоже будут учиться гораздо лучше…
Но попробуем вернуться к сути моего поста. Зря я написал пример на С++, надо было выбрать более простой язык со статической типизацией (сообственно С++ действительно сложный язык — и я тоже считаю, что начинать сразу с него не надо), поскольку вы так кинулись мне доказывать что С++ слишком сложен, что забыли ответить на вопрос, ради которого я вообще писал эти примеры — почему ученик на Питоне будет искать ошибку, а у ученика на С++ (подставте сюда любой другой статически типизирований язык) будет все работать?Я всё ещё в недоумении, и не могу понять вашей логики. Ученики, пишущие на языках со статической типизацией не допускают ошибок?! 8-) Или допускают их меньше? Если второе — тут можно развернуть очень большой спор. Ибо, насколько я знаю, очень большое число ошибок «растут» именно из статичности типизации — выход за границы зарезервированных массивов (вспомните переполнение буфера), некорректные выбранный тип (вспоминается неудачный запуск космического аппарата, который взорвался из-за того, что программа блока управления попыталась сложить два однобайтовых целых и результат поместить в такую же переменную).
… НО на нем можно эффективно писать опять же только если понимаешь что находиться behind the scene, если понимаешь какая примерная сложность вот у такого алгоритма, а какая у такого. Иначе же программы будут писаться неэффективно, но не спорю быстро и возможно даже безглючно.Вы абсолютно правы! Но мы говорим о руби в контексте начала обучения программированию вообще, а не профессиональной разработки.
И да… я не говорю как ПРОЩЕ научиться… учеба она всегда сложна… я говорю как научиться КАЧЕСТВЕННЕЕ… в нашей стране образование и так слишком простое… а вот качество иногда страдаетНе понимаю. Простота учёбы и качество не всегда связаны между собой. Почему вы считаете, что учёба обязана быть сложной?! Вот я, например, не считаю, что на школьных уроках математики дети должны решать задачи с использованием римских цифр — «для расширения кругозора». Или что надо отказываться от образовательных видеофильмов, чтобы у учеников «лучше развилось собственное воображение». Нет смысла отказываться от инструментов, способных увеличить эффективность обучения. Ruby/Python — это такой же инструмент. Удобный, простой, интуитивно понятный. Он не мешает вам обучать эффективному программированию. Зато может уменьшить «балласт», о котором я писал выше.
… человек будет писать теми же самыми заученными кусками, только эти куски будут изобиловать кучей всяких мапов, инъекций и прочего, когда на самом деле это можно решить не таким красивым, но гораздо более эффективным вложенным циклом?Вам надо обучать алгоритмам и структуры данных — пожалуйста, изучайте! Руби вам не помеха, а только подспорье! Как вы научите — так и будут писать. На C++ я тоже могу использовать «всякие мапы» — это несложно, так что ругать Руби просто за их наличие не стоит. Более того, в подавляющем числе задач скорость выполнения не играет такой колоссальной роли, как простота, ясность и компактность кода! «Меньше кода — меньше багов».
Вы абсолютно правы! Но мы говорим о руби в контексте начала обучения программированию вообще, а не профессиональной разработки.
Вам надо обучать алгоритмам и структуры данных — пожалуйста, изучайте! Руби вам не помеха, а только подспорье! Как вы научите — так и будут писать. На C++ я тоже могу использовать «всякие мапы» — это несложно, так что ругать Руби просто за их наличие не стоит. Более того, в подавляющем числе задач скорость выполнения не играет такой колоссальной роли, как простота, ясность и компактность кода! «Меньше кода — меньше багов».
Поймите же! Обучение должно быть интересным! Должно!!! Чему бы вы ни учили! Заинтересуйте человека — и ему всё станет по силам! Что, по вашему, интереснее для начинающего — Ruby или C?
в рамках С++
Обучение программирования на Ruby/Python