Pull to refresh
120
0
Сергій Олендаренко @GooRoo

User

Send message
Так и думал, что кто-то из «противников Qt»/«сторонников Gtk» не стерпит.

Думаю, на текущей стадии реализации проекта уже поздно говорить о выборе фреймвёрка.
Когда я последний раз его пробовал, он довольно медленно работал. Поэтому и спрос маленький наверное…
Да, честно говоря, он корявенький… :(
Как Вам к примеру вот такой ribbon? :)
у меня предпросмотр в редакторе отличается от предпросмотра на хабре…

Opera 10 alpha. В других браузерах не проверял.
Скопировал из редактора, как было:
#include <cstdlib>
#include <iostream>

using namespace std<font  color=" #008080">;


int main()
{
    return EXIT_FAILURE<font  color=" #008080">;

}

______________________
Текст подготовлен в Хабра Редакторе от © SoftCoder.ru
хм… Почему, когда я пробовал, код С++ подсвечивался по-другому? Вы выбирали <code class=«cpp»>?
да, у меня Tab пробелы вставляет, но к сожалению переводит-таки фокус из окна ввода :(

Opera 10 alpha
Что-то подстветка С++ не ахти…
Для того чтобы работало, надо зайти в настройки и на вкладке «Labs» включить «Mouse gestures».

Правда, если у вас Opera с включенными «жестами мышью», то они будут конфликтовать.
Интересует. Рискните. Желательно, конечно, начать с азов ;)
Лично я почему-то воспринимаю Java, C#, Python не как языки написания web-приложений. И если «легкость реализации стандартных алгоритмов» я могу понять, то подключение к БД, работу с XML и т.д. «стандартными операциями» у меня язык не поворачивается назвать. Наверное, это потому что я учусь на системного программиста.

Так что даже для приведенного Вами списка языков будет довольно трудно (но не невозможно) провести беспристрастный анализ. У каждого языка свои фичи, поэтому под каждую задачу свой язык.
Тем, что BASIC/Pascal не засоряют нестабильный разум детей, изучающих программирование, ненужным мусором (практическое применение, фреймворки для быстрой разработки веб-/окнонных приложений, парадигмы, bla-bla-bla etc.), а позволяют сосредоточиться на алгоритмах: «как заставить машину делать то, что я хочу?».
При использовании Pascal Вам не придется в ответ на вопрос детей о том, откуда у массивов есть свойство length или count, или еще какое-то, отвечать, что «так надо» (либо же объяснять, что такое объекты). В Pascal вы будете хранить длину массива отдельно. И циклы будете писать с полным пониманием того, что происходит. Поэтому и при последующем переходе на C++ никакие std::out_of_range Вас уже не побеспокоят. А вот попробуйте перейти на С++ с Python ;)
А с битовым представлением числа Вам приходилось работать при написании веб-сайтов на Ruby? Вы знаете, что представляет собой число с плавающей точкой «внутри» компьютера и почему формат представления отличается от целых чисел?
Кроме того, Pascal приучает к строгости: все переменные должны быть объявлены, причем в одном месте, строгая типизация (integer — это integer, а real — это real) и т.д. Синтаксис как BASIC, так и Pascal содержит не очень много ключевых слов и крайне понятен (почти самодокументируемый :))
В Python слишком высокий уровень абстракции — уж слишком он расслабляет… Эйнштейн говорил: «Make things as simple as possible, but not simpler». Так вот Python для начинающего программиста — это проще, чем нужно.
Я скажу больше: я обожаю C++ и, как ни странно, ненавижу Delphi и Visual Basic. А антипатия такая сложилась потому, что в свое время ввиду популярности оных многие бросились их изучать и, создав пару окон и возомнив себя программистами, начали выпускать такие кривые и жрущие непомерно ресурсы компьютера программы, что «краска на стенках сворачивалась». Именно отсюда пошел миф о том, что на C/C++ получаются гораздо более быстрые и маленькие программы. На самом же деле в руках настоящего мастера Delphi превращается в очень мощный инструмент. Вот и с Ruby/Python сейчас такая же история начинается.
4. Microsoft Small Basic — современная простая IDE :) А вообще, зачем? Нужно привыкать вбивать всё ручками, а не полагаться на IntelliSence к примеру.
5. Тем лучше. Не будет соблазна идти на работу с мыслями «я уже крутой программист». Сейчас студенты уже с 1-го курса работать начинают… Не вижу в этом ничего хорошего.
6. Более простые реализации циклов уводят от основ алгоритмизации. Нужно не только знать, что алгоритм реализуется к примеру перебором, но и уметь написать это. После циклов Ruby попробуйте перейти на С/С++
7. Зачем это на этапе обучения? Может еще на MASM окна сразу писать? Чем больше человек проникается идеей «я могу создать окно в пару кликов мышью», тем меньше он захочет разбираться, как именно это работает. А значит и не сможет создать нечто лучшее. Знаете как говорят: кто не знает прошлого, тот вынужден повторять его ошибки…

Путь развития, который Вы предлагаете, готовит кодеров, а не программистов.
Сферы применения языков программирования настолько обширны (и не всегда совместыми), что не представляется возможным выделить критерии оценивания. Так что, боюсь, обширный и в то же время объективный анализ «в чиселках» никто не осилит.
Я считаю, что программист (или тот, кто хочет им стать) должен развиваться в трех плоскостях:
1. Алгоритмизация. Без алгоритмов никуда! У нас в университете студенты на третьем курсе распараллеливают процессы, пишут GUI и т.д. с использованием Win API, .NET Framework etc. по «шаблонам» из методичек и лекций, хотя 80% из них не сумеет написать даже рекурсивную функцию подсчета факториала.
Человек, не разбирающийся в алгоритмизации, не сможет решить принципиально новую задачу. Он не сможет создать «реактивный рюкзак», потому как привык ездить на «велосипеде», который придумали до него.
В Google берут не за знание Python, а за нестандартное мышление ;)
2. Языки программирования (синтаксис) и различные парадигмы. Для начала хватит и основ — главное, чтобы была возможность реализовать любой алгоритм. Затем можно углубляться.
3. Стандартные библиотеки/фреймвёрки/дополнения. Эта «плоскость» уже чисто практической направленности.

Начинать нужно именно с пункта 1 и частично с пункта 2. Когда будет достигнут достаточно высокий уровень по этим пунктам, можно подключать пункт 3 и развиваться в трех плоскостях одновременно.
Если п.1 не пройден, рождается кодер, готовый к выполнению «обезьяньей работы». Если нет п.3, рождается программист(!), неготовый к работе, но имеющий большой потенциал.

Очень огорчает эта фраза:
«В TurboPascal и QBasic нельзя создать оконные приложения или сделать простой веб-сайт. Конечно, для обучения алгоритмам это не нужно — но ведь имея набор современных и «крутых» средств можно увлечь ученика гораздо больше».
Я в 14 лет создавал на QBasic анимацию под консоль в графическом режиме, писал музыку с использованием спикера и т.д., чему был несказанно рад. Чтобы заинтересоваться, этого было более чем достаточно. Программы были неоптимальными, в них было много потенциальных багов, но пришел Pascal со своей строгой типизацией и строгим синтаксисом (ох, как я не любил по началу объявлять переменные в разделе var… уж слишком непривычно после BASIC'а), и со временем все стало на свои места.
А Вы предлагаете нечто из серии «зачем учить нотную грамоту, если можно наклепать из сэмплов классный микс, от которого будут „тащиться” все девчонки на дискотеке?»… или «можно совершенствовать знание русского языка, чтобы писать стихотворения на века в духе Лермонтова и Маяковского, но ведь будет интереснее зарифмовать „омлет” на „минет” и создать очередной „шедевр” отечественной эстрады, срубив при этом немало денег».

Возможно, BASIC действительно можно убрать из программы изучения, но Pascal — лучшее, что может подойти для этих целей. Он имеет одновременно строгий синтаксис, но в то же время понятный, по сравнению с тем же С (за счет применения ключевых слов, взятых из английского, а не специальных символов. Например, «begin…end» вместо {…}).

Кстати, Вы всё восхваляете интерактивную консоль. Но скажите, чем она лучше IDE того же QuickBASIC? Кстати, в QuickBASIC есть окно «Immediate», которое интерпретирует любую введенную в него строку непосредственно после нажатия Enter (откуда и название).
Если BASIC так плох, то зачем Microsoft выпустила недавно Small Basic?

Также Вы постоянно твердите о мультипарадигменности. Но о каких парадигмах может идти речь на этапе изучения?! Многие с трудом переходят от процедурного типа мышления к объектно-ориентированному, а Вы предлагаете окунуть человека сразу во все. Он не будет разбираться ни в одной.

Я мог бы отписать свои мысли и по другим «аргументам», но все равно Ваши комментарии сводятся к:
1. «В Python/Ruby мультипарадигменность, а в Pascal — нет»
2. Интерактивный режим консоли — это круто, а IDE TurboPascal — слишком сложно.
3. ООП все знают на примере С++. Почему именно С++?! Я ведь не люблю этот язык!

P.S. Готов поспорить, на BrainFuck Вы ничего не пробовали писать.

P.P.S. Прошу прощения за некоторую общую несогласованность или, даже лучше сказать, смысловую раздробленность комментария.
Люди, которым программирование неинтересно, забудут через неделю любой язык ;)
К сожалению, для меня LSP, SRP, OCP — это набор страшных букв :(
В целом хорошая статья, спасибо. Только начинаю учить Python, поэтому пока большего сказать не могу.

P.S. Вот только однотипные названия a la «капля первая», «первая чашка», «унция ноль», «ведро первое» etc. начинают резать глаз… сугубо IMHO.

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity