LINUX.ORG.RU

Можно ли начать с Python?

 ,


1

1

Надоело строить алгоритмы, и изучать программирование на псевдокоде. Хочется изучать алгоритмы и программирование используя синтаксис того или иного языка программирования. На выбор предоставлен 2 кандидата, 1-ый pascal по нему много литературы, а также он легче из-за отсутствия ООП. 2-ой Python развивающийся, скриптовый язык общего направления. Вот теперь думаю с чего начать, препод твердит начни с паскаль, мол лучший язык для обучения программированию, был спроектирован для обучения программированию . А вот запад с ним не согласен, в MIT вместо pascal используют python. Да и типизация строгая у python, только еще и динамическая. Вот блин дилемма! Направление пока не выбрал, мне бы программировать научиться!



Последнее исправление: ymn (всего исправлений: 2)

Общее знание паскаля еще никому не вредило, а так как ты далек пока от программирования, то выбор очевиден.

v9lij ★★★★★
()

Надоело строить алгоритмы, и изучать программирование на псевдокоде.

Это ты, надеюсь, имеешь ввиду псевдокод для машины MIX?

И лучше уж Си, чем Паскаль, потому что основые языки имеют си-подобный синтаксис.

guest_star
()

Python тоже для обучения программированию создавался. Так-что выбрав Python вы ничего не потеряете.

lucentcode ★★★★★
()

Можно ли начать с Python?

Разрешаю.

encyrtid ★★★★★
()
Ответ на: комментарий от anonymous

Открой словарь. Питон строго типизирован, это не мешает его типизации быть утиной. Утиная ≠ слабая.

Астрологи объявили неделю нашествия Капитанов Очевидность!

Лучше почитайте, что есть сторого типизированный ЯП, и подумайте как строгая типизация уживается с в питоне с неявным приведением типов (см. метод coerce).

От того, что разработчики назвали питон строго типизированным он лучше не стал, зато у аналитегов ЛОР-а появился веский аргумент в бесконечных спорищах.

AIv ★★★★★
()

в MIT вместо pascal используют python.

В MIT используют схему, просто студенты идиоты.

Хочется изучать алгоритмы и программирование используя синтаксис того или иного языка программирования.

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

Вобще по личному опыту у питона куча проблем с дизайном языка, с типами, структурами данных, чего стоит хотябы http://bugs.python.org/issue19958, лямбды неполноценны и все в таком духе.

Так что питон категорически не советую, ну а если считаешь что лисп и хаскель слишком академичны - бери go или может там руби.

loz ★★★★★
()

Есть два пути развития:
1) Паскаль -> Питон -> другие языки
2) Питон -> другие языки

По моему _скромному_ мнению, первый вариант делает обучение более последовательным (как следствие - легче будет дальше). Ну и начинать лучше со статической типизации (Паскаль). А еще Паскаль достаточно многословен (что для новичка - несомненный плюс).

zekka
()

Учи си, там тоже нет ООПа, вполне можно учиться практически не работая с памятью первое время, гораздо лучше чем учить паскаль, а потом все равно си. При этом если с самого начала разбаловаться высокоуровневым языком типа питона, учить фундаментальные вещи в будущем будет сложнее.

CrossFire ★★★★★
()
Ответ на: комментарий от zekka

А еще можно начать изучение английского с латыни. ТС пишет что ему псевдокод уже надоел, и он хочет что-то приближенное к реальности. Чем паскаль сильно лучше этого псевдокода для ТС'а?

Время самый ценный ресурс (еще надо успеть на асме покодить). Так, например, к моменту, когда он закончит со сферическими примерами в вакууме на паскале, он мог бы знать питон на уровне достаточном для замены (в связке с scipy и matplotlib) им Матлаба.

guest_star
()
Ответ на: комментарий от AIv

см. метод coerce

В смысле __coerce__? Его же выпилили 5 лет назад.

Слабо типизированный язык — это скорее в сторону php/js/bash.

x3al ★★★★★
()
Последнее исправление: x3al (всего исправлений: 1)

Составлять алгоритмы - пожалуйста. Удобно, модно, высокоуровнево. Но когда понадобится лезть вглубь, например для оптимизации, то тут ничего не выйдет. Так же ничего не получится с пониманием того, как работает компьютер, в отличии от С, например.

IvS
()
Ответ на: комментарий от x3al

В смысле __coerce__? Его же выпилили 5 лет назад.

4.2

$ python
Python 2.7.3 (default, Jan  2 2013, 13:56:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> coerce
<built-in function coerce>
>>> 

Слабо типизированный язык — это скорее в сторону php/js/bash.

Про это и разговора нет. Но назвать питон сильно типизированным... что Вы там курите?

AIv ★★★★★
()
Ответ на: комментарий от AIv
>>> coerce
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'coerce' is not defined

Прекрати заниматься некрофилией же.

x3al ★★★★★
()

Не паскаль. Питон, а лучше - си. Возможно, учиться будет труднее, зато после си другие языки изучать будет легче. Имхо.

mathcrosp ★★
()
Ответ на: комментарий от x3al

Вы дислектик или придуриваетесь? coerce есть в питоне 2.7 сборки 2013г, это стандарт де факто. Третий питон это вообще другой ЯП.

AIv ★★★★★
()

Ой, что сейчас будет... «Питон».

Deathstalker ★★★★★
()

Поделюсь историей успеха.
В детстве (вторая половина 90х) достаточно успешно ботал на Паскале в WinAPI и указатели (без всякого формошлеперства), а вот с Си (тем более, с плюсами) как-то не складывалось, хотя чужой код понимал хорошо, и даже руками транслировал кулхацкерские тулзы на Паскаль. Далее был длительный перерыв (зачем-то пошел учиться на быдломанагера в местный техвуз), пока в 2009м ЛОР не сподвиг меня осилить Питон. Потом было еще много чего (1Сэ, Скуэли, эти ваши JS/CSS/HTML), и в итоге, основательно расширив кругозор, сделав новый подход к C++ (который, кстати, внезапно стал вменяемым языком), не испытал никаких трудностей.

Это я чему?

мне бы программировать научиться!

Можно начинать и с Питона, но есть шанс заболеть каргокультом, пользуясь инструментом без знания основ, позволяющих понять, чем достигается его магия. Потому советую параллельно изучать что-то более низкоуровневое (тот же Си, Паскаль совсем мертв и не нужен). Понимая, что происходит «под капотом», адаптировать знания и навыки под другие языки/технологии, большой проблемы не составит.

anon1984
()
Последнее исправление: anon1984 (всего исправлений: 1)

Чувак, я свою подругу год учил питону и html5 + css3. Это первые её языки и первый опыт кодинга. Питон - её первый язык. Она очень довольна. Сейчас начинает работать на одеске за 12 баксов в час. Ей нравится инглиш, она всегда хотела быть переводчиком, но в жизни так сложилось, что только сейчас получает свою мечту в руки.

menangen ★★★★★
()

Паскаль в топку сразу. Это говно тебе не пригодится никогда вообще.

Если выбор между паскалем и питоном, то ответ - однозначино питон.

Если будешь изучать питон, поставь PyCharm. Эта штука уже сразу стоит всех «удобств обучения» которе мог бы тебе дать Паскаль.

В MIT шарят.

===

Я бы сейчас начинал изучать с C#, в Windows, в VisualStudio с установленным плагином ReSharper. По хорошей современной книжке на русском языке. После изучения непосредственно языка - взять книжку по алгоритмам (это уже учитель лучше подскажет).

После понимания основ перешел бы в Linux и соответственно в Mono (это такая штука чтобы запускать C# в линуксе).

После того как сам процесс программирования перестанет быть проблемой, если тебе все еще будет хотеться программировать - перейти на свободные технологии на основе Java - собственно сам Java, Scala, Clojure. Но это отдаленное будущее, а начинать надо с C# и русской современной книжки.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Огромное спасибо отвечавшим! Поразмыслив над всем сказанным, я для себя решил начать с Python, а затем перейти на Си. После буду выбирать направление в которое буду углубляться, а так буду учиться, учиться и еще раз учиться!

vovba
() автор топика
Ответ на: комментарий от AIv

Python:

>>> 3 + "ololo"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
JS:
>>> 3 + "ololo"
"3ololo"

Deleted
()
Ответ на: комментарий от PolarFox

Ну да, бейсик был впереди планеты всей когда-то, но зачем он нужен сейчас?

C# - лучший из языков своей ветки. С него можно перепрыгнуть на любой другой язык ветки (н-р Java), считая его «убогим сишарпом».

Ну и на бейсик можно перепрыгнуть, но если на Java можно прыгать чтобы обрести свободность и линуксовость, то в чем профит от прыжка на бейсик?

Я не очень в бейсике шарю, так что если просветишь, буду благодарен.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

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

PolarFox ★★★★★
()
Ответ на: комментарий от Deleted

Читай «Javascript: The Good Parts» (и одноименный цикл мини-видеолекций его же, Дугласа Крокфорда, если найдешь). Если коротко, нужно писать на подмножестве JS, использующем правильные фичи, и не использующем неправильные. Тот же подход, что и в C++. Глаза надо натренировать видеть хорошие и плохие паттерны. Паттерны не особо вербализованы в самом языке, их можно начать чувствовать только когда видел (или написал) достаточное количество кода. Конкретно возможность 3 + «ololo» - это не самая важная проблема.

stevejobs ★★★★☆
()
Ответ на: комментарий от PolarFox

Человек хочет изучать программирование.

Для изучения нужна хорошая документация и среда, которая будет помогать учиться.

У нас всего две технологии с хорошей документаций - C# и Java.

Ну, еще может быть PHP, если считать комментарии на их сайте, но PHP сильно сложнее, чем C# или Java. При этом документация по PHP (та, которая комментарии на сайте) нигде нормально не встроена в IDE, даже в Идее/Шторме.

При этом абсолютно нельзя рекомендовать никакие Кложуры и Хаскели, потому что документация будет требовать знания алгоритмов и прочего CS, ДО того как начал изучать язык. Т.е. получится замкнутый круг - ты не можешь изучить язык потому, что не знаешь алгоритмы, и не можешь изучить алгоритмы потому, что не на чем изучать (не знаешь язык).

Дальше, среда. Есть ОС, есть IDE.

Windows изучать не нужно, Linux изучать нужно. Т.к. цель ТСа - изучить язык, а не ОС, выбор - Windows.

(Т.е. язык должен отлично работать в самом Windows, что в частности отсекает кучу возможностей, включая тот же PHP. PHP под вендой - ад.)

Кроме того, у Windows есть отличный русский интерфейс.

Язык должен быть легко кроссплатформенным, чтобы не ограничивать пользователя в ОС. Этим тоже отсекается куча вариантов, в т.ч. C++.

IDE у нас три. VisualStudio, Eclipse, IntelliJ IDEA. С натяжкой пять - еще QtCreator и MonoDevelop.

Из них интеграция внешней и внутренней документации нормальная только у первых трех.

Из них Eclipse слишком сложна для новичка, который не понимает 99% слов, написанных в гуях эклипсы и повиснет на первом же вопросе типа «укажите директорию для воркспейса».

В конкурсе остались только VisualStudio и IDEA, соответственно C# и Java.

Из плюсов Идеи - отличная контекстная документация, автодополнение, рефакторинги.

Из плюсов VisualStudio - встроенная база знаний (MSDN), полная русификация интерфейса. Русские форумы.

(для сравнения, меня уже несколько раз просили на форумах/багтрекере Идеи не писать и не отвечать на русском языке, т.к. кастомеры не знают русского, а переводить гуглотранслейтом им влом).

С ReSharper фиксятся некоторые неприятные свойства вижуалки, так что ReSharper иметь обязательно.

По IDE и документации выигрывает VisualStudio.

Предложения по работе у Java/Linux и C#/Windows примерно одинаковые. Как языки они одинаковые.

ВЫВОД: по совкупности причин выигрывает C# (+ Windows/VisualStudio/MSDN/ReSharper)

stevejobs ★★★★☆
()

Позволяю!

J ★★★★★
()
Ответ на: комментарий от stevejobs

Каждая вторая строчка твоего ответа — фейспальм на фейспальме, даже комментировать лениво.

Питон — отличный первый язык. Туториалов много, знания CS не требуется, IDE для него не нужны, хватит редактора с подсветкой синтаксиса и идентацией.

Windows изучать не нужно, Linux изучать нужно.

Со знанием виндовса все родились, да? Я думаю если человек спрашивает про программирование на linux.org.ru, он собирается писать под linux, и использование самого линукса ему проблем не доставляет.

PolarFox ★★★★★
()

А вот запад с ним не согласен, в MIT вместо pascal используют python.

А почему не обратить своё внимание на Scheme? Его в MIT тоже используют.

BattleCoder ★★★★★
()
Ответ на: комментарий от Deleted

Про архитектуру компьютера можете, что-нибудь посоветовать, а именно книгу, ресурс или справочное руководство!

vovba
() автор топика
Ответ на: комментарий от PolarFox

Туториалов много

неважно сколько их. У САМОГО ПИТОНА НЕТ ДОКУМЕНТАЦИИ В КОДЕ.

сравни это с Java и C#. В особенности с Java. Можно щелкнуть на любом методе стандартной библиотеки и тебе прямо в IDE выдадут километры документации по каждой мелочи.

И не только по мелочи, но обзорной -

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

И да, вся эта статья по ссылке - она находится прямо в коде Java, т.е. доступна прямо в IDE. Аж двумя способами: во-первых можно в окне «быстрой справки» посмотреть красиво отформатированную документацию по конкретному методу. Во-вторых можно открыть исходник класса и прочитать все то же самое, но целиком, чтобы составить общую картину.

В некоторых проектах считается важным указывать не только описание, но и эффекты, например, гарантию на потокобезопасность, итп. Т.е. если в документации поклялись, что класс потокобезопасный, можно не тратить 3 дня пытаясь (без малейшей надежды на успех) разобраться, что же за галиматья написана в потрохах этого класса.

Самое важное, что в мире Java считает важным (а кое-где - обязательным) писать документацию в коде. Т.е. такой уровень наличия и детализации документации относится не только к JDK, а чуть ли не к половине Java-проектов. Есть свободная минутка? Напиши еще этой сладкой вкусной документации или поправь сущствующую.

А теперь, что из этого есть в Питоне?

А НИЧЕГО ТАМ НЕТУ.

Полный голяк.

Какие-то тонны кода, которые ХЗ что делают, ХЗ какие гарантии дают, итп.

Что называется, открыл, понял что ничего не понял, закрыл.

На такой шляпе невозможно учиться.

Туториалов много

если сравнить с толстыми русскими книжками по C#, которыми под завязку набиты магазины - туториалов как раз немного.

знания CS не требуется

да.

IDE для него не нужны

нужны, но их нету.

IDE, которое хорошо разбирается в коде, берет на себя 3/4 рутинных задач. Новичку может казаться, что IDE в 200 раз лучше знает язык, чем он сам. IDE помогает как учитель - подсказывает ошибки, говорит что вот здесь можно было записать то же самое но короче, что вот тут ты забыл инициализацию, вот тут написал недостижимый участок кода, итп. Человек может сконцентрироваться на сути, не отвлекаясь на досадные мелочи.

да, есть IDEA (т.е. PyCharm), но ее кодоанализ и автодополнение аховое. Да и вообще, какой кодоанализ может быть в Питоне? ЛОЛ

одна из важнейших особенностей - это возможность вызова автодополнения, с вызовом справки по элементами автодополнения. Это делает ненужным запоминания списка доступных методов, аргументов, и даже самой сути этих методов! Все можно мгновенно прочитать, не лезя в гугл. Это заменяет тыщи мануалов!

Так что, даже если бы у питона было автодополнение, это не поможет, ведь У ПИТОНА НЕТ ДОКУМЕНТАЦИИ, так что смотреть там все равно нечего!

Со знанием виндовса все родились, да?

нет. Его просто не надо знать, потому что знать там нечего. Например, там нету командной строки, поэтмоу не нужно изучать командную строку. Там нету манов, поэтому не нужно изучать манов. Там нет нормальной системы прав на файлы (т.е. такой которой хотелось бы пользоваться), поэтому ей никто серьезно и не пользуется, и с правами на файлы можно не сталкиваться годами. И изучать/понимать ее тоже не надо. Unlike Linux, где первое же знакомство с PHP, и его ближайшим братом Апачем вынуждает крепко задуматься о расстановке прав, suid'ах и прочем.

В Windows ничего нету, но при этом оно умудряется работать. С Линуксом так не выйдет. Поэтому для quickstart'а нужен Windows. Чтобы сразу после включаения компьютера развернуть на весь экран IDE и перейти к изучению языка, полностью минуя общение с ОС.

stevejobs ★★★★☆
()

Изучай java. Все остальное - может быть и интересные языки, но для промышленного программирования они не годятся. Это говорит человек, начинавший с ассемблера pdp11 в мохнатых годах 20 века, и треть жизни проработавший системным архитектом в DEC, Sun и HP.

ЗЫ: Люди покупают дырки, а не сверла. Ради интереса, посмотри на JavaFX, там все просто, а результат очень впечатляет.

anonymous
()
Ответ на: комментарий от stevejobs

У САМОГО ПИТОНА НЕТ ДОКУМЕНТАЦИИ В КОДЕ.

Хватит показывать глубину своих познаний.

Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print map.__doc__
map(function, sequence[, sequence, ...]) -> list

Return a list of the results of applying the function to the items of
the argument sequence(s).  If more than one sequence is given, the
function is called with an argument list consisting of the corresponding
item of each sequence, substituting None for missing values when not all
sequences have the same length.  If the function is None, return a list of
the items of the sequence (or a list of tuples if more than one sequence).
Deleted
()
Ответ на: комментарий от stevejobs

перейти к изучению языка, полностью минуя общение с ОС.

Блеванул тугой струей. Вот откуда жаба-обезьяны берутся-то.

Deleted
()
Ответ на: комментарий от BattleCoder

Pydoc-то есть. Проблема в том, что туда еще никто ничего не написал!

Вот тебе канонический пример как надо писать документацию: http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

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

А теперь возьми стандартную библиотеку Питона и поищи что-нибудь из этого, лол. Там голяк!

stevejobs ★★★★☆
()
Ответ на: комментарий от vovba

Я уже написал, что начну с python. А затем перейду на изучение Си.

Не стоит. Питон это плохой язык, он доступный, популярный, но в плане дизайна и идей - убог. Он не имеет стандарта, поддержки промышленных групп и развивается по сути одним человеком, по принципу «доброго диктатора».

anonymous
()
Ответ на: комментарий от stevejobs

Это проблема не питона, а питон-разработчиков. Впрочем, у пистона есть проблемы с отсутствием нормальных стандартов кода, PEP-8 какой-то унылый... В Java с этим получше.

Но таки на java компилятор тоже не мешает нагородить нечитаемый код без документации.

BattleCoder ★★★★★
()
Ответ на: комментарий от BattleCoder

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

Мы же тут говорим об _обучении_. А при обучении человек встретится в основном со стандартной библиотекой, и парой-тройкой важных общеупотребительных технологий. Вот и важно, чтобы все, с чем он встретится в самом начале, было идеальным для быстрого понимания и готовым к мгновенному использованию.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

http://docs.python.org/2/library/re.html

Толстые книжки есть и по питону, просто их меньше, потому что народ не учит питон по толстым книжкам с поалфавитным описанием стандартной библиотеки.

Я вот вообще начинал с VB6 под 98й виндой, не буду же я кому-либо это сейчас рекомендовать. Питон — лучшая штука для обучения, если не хочется ковыряться с гуйнёй. Если хочется, то наверное Qt или web. Ну или цшорп, если вин-онли.

PolarFox ★★★★★
()
Последнее исправление: PolarFox (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.