Pascal - вы собрали жеребенка. Он ничего не может зато учитель по информатике вам поставил 5.
Питон: Вы собирали лошадь, но получился российский "железный конь". На 90% состоит из импорта, но всё равно тормозит в 20 раз больше нормального.
Только начал делать первые шаги в изучении Питона. Я так понял, шутка о том, что многое можно импортировать из библиотек и не париться написанием кода?
Недавно пошел на обучение по программированию. Там мы с самого начала изучаем Pascal. До этого я изучал C++ самостоятельно, но прервал обучение из-за нехватки времени. Я не знаю, зачем я это написал в комментах.
И волосы назад. https://cs9.pikabu.ru/images/big_size_comm/2017-06_5/1498302313185819288.jpg
Будут дети, будешь знать тогда как их воспитывать, что аж извилины подворачиваются, вообще.
Все правильно, по своему опыту преподавания могу сказать, что если ни разу не программировал, то паскаль для первых шагов идеально. Строгий, всякие begin и end достают и обучают дисциплине, простой в установке и освоении.
Я не говорю, что надо долго на нем писать. Он для нескольких программок для понимания базовых конструкций и принципов процедурного программирования.
Опа, я нашел тебя учитель! Ответь страждущему! Можно ли с нуля учить Python? С программированием знаком больше теоретически. Писал и пишу УП для станков, напрямую со стойки. К примеру со стойки используется оператор if, ещё есть переменные и циклы, программа пишется вручную.
Тебе можно. Ты уже знаешь, что такое if-else, for, while.
Обычная консольная программка на питончике ничем не будет отличаться от того, что ты пишешь. Она даже будет проще, потому что не будет ничего использовать из библиотеки управления станком.
Питончик очень гибкий, поэтому довольно быстро сможешь мутить и графический интерфейс, и работать с сетью и т.д. Только перед этим обязательно понять и изучить ОО программирование на примере того же питона.
Поддерживаю @BITniki, курс cs50 очень хорош. https://javarush.ru/quests/QUEST_HARVARD_CS50
Познакомит с основами как программирования, так и функционированием программ в целом. А то можно начать программировать, но абсолютно не понимать, как внутренняя кухня передает параметры в функцию.
Тем более курс рассмотрит начиная с визуального языка Scratch, пройдется по операционкам и языку Си, и закончит веб-разработкой.
А в дальнейшем выбирай что тебе понравится. Более интересен веб и серверное - копай туда; понравится системное программирование - копай в юникс или винду, язык С и С++; в мобильной разработке немного другое.
Я могу посоветовать покопаться в C# - сервера под линукс или винду, обычные программы с GUI под винду, мобильные приложения. Что хочешь, то и пиши. Тем более сейчас активно развивается open source сообщество и Microsoft во всем этому способствует.
Я говорил про c#. Просто в основном я с ним работаю и могу поговорить о нем. А так, очень много языков с большими сообществами. Смотри табличку:
https://madnight.github.io/githut/#/pull_requests/2017/4
Вернемся к с#. Например вот, удобный браузер исходников net core. Без проблем можно глянуть, как все реализуется внутри:
https://source.dot.net/#System.Private.CoreLib/shared/System...
Или вот исходники самого браузера, можно развернуть для своего проекта:
Подскажи, Учитель, стоит ли учить для начала С++ для того, чтобы затем попробовать себя в С# или Java? База - Паскаль + Дельфи
С++ не для изучения основ, а для практического использования скорее стоит использовать. Если вы хотите писать на плюсы, то что пишут на плюсах, то пожалуйста. Если вы просто хотите познакомиться с азами архитектуры ЭВМ, то можете почитать Карнигана и Ричи "Язык Си", куда продуктивнее в плане обучения и проще в освоении.
@MrModest, дело говорит. Тоже советую для начала Си. Очень изящный и милый язык. Идеален для следующего шага. После него уже сможешь пробовать что хочешь.
В чем еще огромный плюс Си: спокойно сможешь побаловаться дизассемблером и посмотреть ассемблерные конструкции, которые творит компилятор. Сравнить разные компиляторы и т.д Можно надолго засесть.
С++ это язык для экспертов (вроде даже где-то в стандарте есть такая фраза). Шарп и Джава вполне вам покорятся, если уже знаете дельфи.
Не надо сразу на core идти, пусть сначала его допишут, в прошлой версии стрим ридера даже не было. Лучше с обычного .Net начать
Я бы не стал. Вот элементарная программа на Java:
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Тут сразу какие-то классы, методы, модификаторы доступа, модификатор static, пакеты. Это все сразу тащит за собой требование к пониманию объектно-ориентированного программирования.
Как по мне. Идеальный путь для того, кто никогда не программировал и не уверен, как у него это пойдет:
1. Pascal - для понимания процедурного программирования и основных конструкций. Написать небольших программок 10: расчет квадратного уравнения, какую-нибудь задачку для работы с массивами и т.д. Набить шишки, поругаться на синтаксис и перейти к другому языку.
2. Си - тоже процедурное программирование, но уже взрослое. Тут и заголовочные файлы, и управление памятью (в паскале это делается автоматически, а тут надо ручками), указатели и выход за пределы разрешенной памяти, передача ссылок и работа с ними.
Тут надо потратить времени сильно больше, чем с паскалем.
3. С++ - тут уже добавляется к Си ОО программирование и множество вкусных и сложных вещей. Если тебе не понравится и ты в дальнейшем не хочешь быть плюсистом, то, познав ООП и боль, можешь переходить к чему хочешь.
4. С#, Java, более глубокий С++ и вообще, все что захочешь.
Обязательно каждый шаг прикреплять какой-нибудь добротной книжечкой. Хоть все есть в интернете, но в книгах уже все структурировано и они очень полезные.
Я никогда не занимался программированием дальше школьного курса, м скорее всего не буду, но поставил плюс всем твоим коментам, ибо такие люди должны попадать в рай без очереди.
А я за то, чтоб начинать с питона. Ручное управление памятью мало где нужно (в С++ есть RAII, который явно удобнее сишных малоков). Обычно тут мне говорят "чтобы писать хороший код, нужно понимать как оно устроено внутри". Для этого Си не обязателен. Например, не нужно писать свои хеш-таблицы, чтобы понимать, как работают библиотечные -- можно просто почитать условную википедию. Не нужно писать свой связной список, чтобы понимать чем он отличается от массива.
Вполне можно понимать структуру памяти/адресов и т.д. без собственных шишек. Вот честно, вы знаете, как аппаратно реализуется умножение чисел с запятой? Как они округляются по стандарту IEEE? Но все знают про то, что ошибка есть и накапливается, и с ней нужно аккуратно.
В результате такие советы "начинай с низу" (спасибо хоть ассемблер не посоветовали) приводят к зацикливанию на реализации, когда первоочерёдная задача программиста -- мыслить структурами даных и алгоритмами. Однажды я ускорил умножение двух матриц в 11 раз более оптимальным использованием кеша. Переход к алгоритму Штрассена дал ускорение в 100 раз. Нет, вместе могло бы выйти и в 500, но у нас нет времени, чтобы изучить всё. И если варанты -- более детальное знание железа и лучшее пониманиее алгоритмов, то как по мне, выбор очевиден.
В частности вот эти 3 учебника (идут друг за другом):
1. Изучаем Python, 4-е издание
2. Программирование на Python, 4-е издание, I том
3. Программирование на Python, 4-е издание, II том
Первый - основы, дальше - чуть более продвинутый уровень.
Меня все сейчас закидают тапками, но я бы посоветовал начать с JavaScript - очень просто начать (не нужно никакой IDE, просто в браузере), можно сразу видеть результаты своих действий, есть классы и почти вся та фигня, что есть в нормальных языках. Если можете в английский, то эта книга вам поможет - http://eloquentjavascript.net
О, там снизу указано, что есть перевод на русский
Зависит от того, что вам интересно и что вы уже знаете.
Интересны решения задач и алгоритмы -- начинайте с питона или лиспа, это универсальные варианты. Если вы математик, можете попробовать начать с хаскела (язык во многом постоен на теории категорий). Но хаскел очень хардкорный, предупреждаю сразу.
Интересны детали реализации, микросхемы, процесорная логика -- Си, асемблер.
Интересны деньги за работу -- Джава, Джаваскрипт (это два принципиально разных языка), ПХП. В меньшей мере питон с джанго.
Если нужен язык для решения конкретных задач, нужно смотреть на задачи. Администрирование -- Bash/Powershell; расчёты -- питон с нампи, матлаб, математика.
VB.Net вообще-то в настоящее время не особо уступает C#. Я начинал с VBA потом VB6 и сейчас VB.Net, красота!
Solo learn приложение на смартфон, есть несколько языков на выбор, и самое главное - приложение бесплатное!
Pascal, но вообще, от javarush есть перевод Гарвардского курса cs50, с решебниками, что не мало важно
Раз такая пьянка. Мой тупой вопрос: исходя из прочитанного в интернетах хочу начать с питона. Кроме того, что он хорош для новичков, есть ли смысл в дальнейшем делать на нем акцент?
Если сидишь под виндой и/или хочешь делать программы с графическим интерфейсом, то, наверно, не стоит. Конечно, обе проблемы победимы, но главный вопрос, который ты себе должен задать, это финальная цель. Если не планируешь выходить за рамки наколеночных поделок, типа мини-программ для математических расчётов или обработки текстовых файлов, то питом прекрасен. Но, если ты выйдешь с ним на рынок труда, то перспективы будут туманны.
Опять же, раз уж встал вопрос с чего начать, обращай внимание на целевые платформы. Для питона это линух и другие *nix, в меньшей степени винда. А захочешь писать для мобил будешь сосать лапу
и изучать новый язык/Фреймворк.
Но, если ты выйдешь с ним на рынок труда, то перспективы будут туманны.Я сейчас ищу Питонистов в контору и знакомая HR тоже. ЧМДНТ?
В целом питон сейчас разве что под джанго в полной мере котируется, и то в СНГ слабовато.
но коллеги под ОпенСтек пишут на Питоне
их конкуренты тоже пишут на Питоне
возможно, это такая моя деформация, что вокруг меня так
Да. Довольно распространен и популярен, много применений, быстрая разработка, огромное комьюнити и хорошие зарплаты ;)
ООП на питоне или ООП? Это не совсем эквивалентны концепты.
Одна из красивейшых реализациий принципов ООП в Smalltalk. Удивительно простой и элегантный язык. Потратьте на него вечер другой, может и в питоне перестанете бояться :)
А еще есть классные среды, где ты набираешь программу из блоков - строишь алгоритм и оно генерирует тебе код на питоне который можно почитать, сверить с алгоритмом из блоков и понять что оно делает и как.
Тем же страдают все до единой системы т.н. "визуального программирования" - годятся только для борьбы с самой базовой формой фобии типа "Ааа! Спасите! Тут непонятные буковки!". При этом в использовании и чтении на порядок сложнее чем текстовый код.
А ещё декларативно-логические языки есть, где вообще не нужно знать ничего про программирование, но нужна учёная степень по математике.
Сюда же можно привести в пример любой функциональный язык -- лисп, хаскель, вольфрам.
Но являются ли они декларативно-логическими?
Функциональные да, они декларативные. Подгруппа логических ещё более упорота. Я за 20 лет в ит слышал только об одном удачном примере разработки на прологе, но поддерживать того кадавра могли только авторы.
Декан моего факультета в универе выступал за то, чтобы обучение программированию начиналось не с Си или Паскаля, а с Питона, по многим причинам: блоки строго отделяются друг от друга (форматирование отступами), что приводит к более-менее единому стилю кода, а также в нем много синтаксического сахара, позволяющего делать серьезную обработку массивов в одну строку, в то время как в других языках понадобился бы большой блок кода. Естественно, можно написать этот же самый блок, дабы понять, а потом сократить его до выражения и показать какая операция куда идёт. Немного попрактиковавшись запоминаешь приёмы. Если мне приходится писать код для какой-нибудь мелкой рутины, либо для переносов данных между бд с их одновременной обработкой, то я пользуюсь именно Питоном. Есть еще довольно похожий на него яп - Ruby, но в то же время у него есть и свои особенности.
Неправда. Питон куда мудрее и сложнее, просто на нём писать проще так как 1) тысяча библиотек 2) приятный синтаксис.
Но хорошо знать питон сложнее, чем хорошо знать паскаль
Прекрасный язык. Можно не завариваться с синтаксисом, структурой программы и сразу творить, используя стандартную либу и огромное количество сторонних.
Но! На мой взгляд, он со своей динамической типизацией и упрощенным синтаксисом слишком мягок по отношению к обучающемуся:
Вот прога на Python:
x,y,z = 5,2,3
if x < y < z:
print “Hello world!”;
else:
z = x+y
print z
А вот на Pascal:
Program helloW;
Var
x,y,z:integer;
Begin
X:=5;
Y:=2;
Z:=3;
If x<y and y<z then
Writeln(‘Hello world!’);
Else
Begin
Z:=x+y;
Writeln(z);
End;
End.
Фух! Уж простите за ошибки, если они есть, паскаль все-таки ;)
Хочешь не хочешь, а шишки на паскале набьешь: там end забыл, там точку с запятой, в другом месте написал = вместо :=; если строковая переменная, то число присваивать нельзя. Заставляет по несколько раз перечитывать что ты написал, искать ошибки и самое главное, читать и понимать ошибки компилятора.
Я же не говорю тратить много время на Паскаль, так, порешать задачки, привыкнуть к языку и бежать дальше.
О, а я даже об этом не задумывался ни когда. Ведь если ли сразу будет все так просто, ученик и не узнает о всяких тонкостях, таких как тип переменной, чем отличается int от String например, и что их нельзя складывать (хотя в Питоне вроде можно, будет String).
То есть ваша логика: "Вот есть язык, где код вытекает из алгоритма, и не нужно боротся с синтаксисом. А вот другой язык, где на ту же задачу нужно гораздо больше кода и вы наверняка будете бодаться с синтаксисом. Разумеется, другой язык лучше!"
Так вы только новичкам охоту отобъёте.
Интересный опыт :)
И поддержу насчет паскаля. Если не ошибаюсь, по производительности free fascal местами близок к Си.
Спасибо. А то было ощущение, что немножно трачу время зря. Хотя простые программки не составляло труда писать и на C++. А вообще программировать нравится, только хочется себя попробовать уже не только в консольном программировании, но и где-нибудь в игровом, тридэшном мире (3D моделированием тоже занимался как любитель, но хочется наконец-то все эти модельки привести в действие, если говорить простым языком)
Программирование это язык лишь процентов на 10, ещё 20% это рантайм+фреймворки, следующие 50% это предметная область, т.е. для игрух и 3d ты будешь изучать и использовать одно, а для всяких классических 3-tier - совершенно другое. При этом почти любой проект может быть реализован практически на любом языке.
Ну и оставшиеся 20% - это менеджмент задач и себя :)
Понимаю, ты то уже пробовал и даже писал на плюсах. Паскаль все-таки для обучения базы в процедурном программировании (не будем затрагивать Object Pascal и Delphi). И для того, чтобы прочувствовать кайф, когда пересаживаешься на что-то более взрослое :)
Флаг в руки, можешь спокойно щупать тот же чистый OpenGL из под ++, Java, С# и т.д. Только будь готов к матрицам преобразования и всякому такому добру. Это вес-таки самая база 3d программирования.
Вот например нубский просмотрщик .obj файлов на OpenGL 3 (это важно) и на windows forms:
https://github.com/bildeyko/3dviewer
Можно глянуть сделать так, чтобы колесики сами крутились и одновременно поворачивалась модель. Самое то для начала
Просто сравните Си, Хаскел и Смолток. Если вы сможете свести разницу между ними к пунктуации и орфографии, то я съем свой хер.
Если не изменяет память, при разработке Паскаля Вирт закладывал в него как раз обучение студентам.
Проблема в школах (и не только), что не перерабатывается программа. Как начали что-то маленькое писать на паскале в классе 7, так и пишут несколько лет. Циклы, условия и каждый год по новой.
Вижу пару причин:
1. Просто не хотят
2. И самая главная, кто будет преподавать? У меня учительница вообще стала учительницей информатики только потому, что в 90-х не было другой работы, а в нашей школе открыли компьютерный класс. Никто не захотел идти, а она умела более менее набирать тексты. Вот и стала учителем.
Я преклоняюсь перед школами, где крутая информатика, но к сожалению таким мало.
А так языки действительно мертвы, поэтому преподавания должно ограничиться несколькими лабами.
С чего бы бэйсик был мёртв? В куче приложений VBA позволяет добавлять свои макросы и фишки, так что в этой нише он жив и процветает.
Мне было интересно изучить Ruby и фреймворк Rails.
Пока я запрыгнул на поезд Ruby, все свалили на Elixir.
А я вот программки на Delphi пишу и мне норм, совершенно не понимаю, за что её ругают. Имеет весь возможный функционал и крайне строгую логику.
А для себя я давно уже открыл Python, на нём и остановился. Хватает, чтобы писать какую-либо автоматизацию рутинных процессов дома и на работе :)
У нас так и делали. Сразу ООП на примере, наверное, самого "ООПшного" языка, Java. Правда, это была не школа, а IT-колледж...
(Шутка про "колледж, а не ПТУ!". Хотя, учитывая, что там была дискретка с первого курса вуза, всё таки ПТУ назвать не поворачивается язык)
Ну, вы хотя бы учили что-то, а у нас были сплошные презентации и набор текстов в ворде, еще иногда что-то в пеинте делали. А вообще, вспоминая свой класс... я думаю, что программирование пережили бы единицы
Давай, объясни школолотрону что такое фабрика (статическая), которая генерит экземпляры классов, реализующий какой-то там интерфейс.
Васик и паскакаль это оптимально, ну в современном мире можн питончиком заменить, хотя для питончика всё же поболе дисциплины надо.
Зачем объяснять фабрики тому, кто еще не знаком с ооп? Для процедурного программирования в java не нужно этого, включая ооп, знать.
Хотя про наш институт вообще много вопросов есть. Например, какого хера преподавали основы программирования на первом курсе, и многие там валились, когда для поступления надо было сдать экзамен по этому самому программированию, в котором были вопросы и по паскалю, и по плюсам, включая написание программок простеньких? (извините за эту минуту горящей задницы)
Продолжая нашу дискуссию, в первые год-другой вполне можно впихнуть вдалбливание базовой алгоритмизации, объяснять базовые принципы написания, рассказывать про типы переменных, ветвления, циклы, про использование функций. Попутно рассказывать теорию, что там у ПК под капотом. А в более старших классах уже и что-то современное, и ребёнок увидит, что его знаний, которые он подчерпнул, пиная тот же паскаль, вполне хватает, чтобы писать какие-то уже полезные программки, потому что они, внезапно!, состоят из маленьких кирпичиков-алгоритмов, которые оный школьник писал всё это время на другом языке, не понимая, нахрена оно всё надо. И как-то быстро уже и всё это пишется и легко.
Напомню вам, это вам сейчас всё уже ясно и понятно, а ученик в школу приходит только это всё узнать. А пока что в большинстве своём он умеет только открывать стим и ставить гта :)