Доброго времени суток. Хочу задать вам, господа вопрос терзающий меня уже некоторое время. Как человек, совершенно не занимавшийся, самообразованием в областях связанных с программированием и IT-технологиями, а так же абсолютно с неразвитым логическим мышлением, всегда относился к людям которые могут общаться с компьютерами, с некоторым благоговением. Но с развитием технологического прогресса, осознал что продолжать и дальше быть в неведении, никак нельзя. И я хочу прикоснуться к прекрасному, лицезреть так сказать "мир чудес". С чего начать, что бы уметь программировать хотя бы на уровне обыкновенного школьника? Конечно гордыня говорит, что хотелось бы и большего.
Все что можете посоветовать: доступные для изучения новичком языки, программы для их компилирования, интернет ресурсы, книги по программированию или по математике/логике, которая требуется для адекватного восприятия материала. Все что нужно, и необходимо. Отдельно хотелось, бы найти человека, который мог бы побуждаемый исключительно альтруистическим порывом помогать освоить материал, давая советы , хотя бы изредка.
прекрасно, понимаю что сколько людей - столько же и мнений, но хотелось бы услышать каждый совет.
Большое спасибо.
Все что можете посоветовать: доступные для изучения новичком языки, программы для их компилирования, интернет ресурсы, книги по программированию или по математике/логике, которая требуется для адекватного восприятия материала. Все что нужно, и необходимо. Отдельно хотелось, бы найти человека, который мог бы побуждаемый исключительно альтруистическим порывом помогать освоить материал, давая советы , хотя бы изредка.
прекрасно, понимаю что сколько людей - столько же и мнений, но хотелось бы услышать каждый совет.
Большое спасибо.
Еще на тему
Писать на нем было классно.
Вы переоцениваете уровень знаний школьников) конечно, есть прошаренные школьники ( та я и сам начал программировать в 8 классе), но это единицы.
Я бы рекомендовал начать с языка программирования Python. На официальном сайте есть множество туториалов и примеров для начинающих + приятное комьюнити.
Сайт: https://www.python.org
Большое спасибо, за ответ. Мой выбор изначально и был Phyton, тем более если я не путаю, он прекрасно подходит для автоматизации некоторых действий в автокад, и написания для него дополнительных модулей. Кад, я бы тоже хотел понять и изучить.
Я не говорю, что питон плохой язык, но ИМХО, он больше подходит для концептов (хуяк-хуяк и в продакшен, а потом перепишем всё на Java) или какой-то исследовательской работы, в общем, когда нужно быстро получить результат, а потом отправить этот код подальше и забыть о нём.
Чтобы порекомендовал я (В алфавитном порядке):
1. C# - много сахара (даже наверно слишком много), хорошая IDE, широкий спектр использования, достаточно простой. Из минусов: язык достаточно громоздкий, тяжёлая IDE
2. F# - можно посмотреть сразу и на ООП, и на ФП, строгая типизация с выводом типов (приятное с полезным). Есть несколько IDE, в целом хорошая среда, можно использовать почти всё тоже самое, что и в C#, правда инструментарий будет похуже. Из минусов: он первично ФП и по нему не очень много материалов.
3. Haskell - почему? Потому что мой список, что хочу, то и добавляю!
4. Kotlin - очень удобный и не слишком многословный язык. Хорошая IDE, широкий спектр возможностей.
5. TypeScript - тут мне стало лень писать...
Что не рекомендую вообще:
1. С
2. С++
3. Java
4. JavaScript
- советуешь TypeScript, и при этом ругаешь динамическую типизацию?
Про питон тоже имхо мимо. Он не заставляет писать говнокод, просто не запрещает и не пытается навязывать, как всякие жавы и шарпы. IDE - вообще дело вкуса (чем плох тот же PyCharm?), да и необязательно оно. "он больше подходит для концептов" - ну так человек и просит посоветовать что можно быстро и безболезненно пошшупать.
Хотя, если задача - по быстрому набросать что-то с окошками и кнопочками, я бы наверное топил за c#, бо рисование гуя в питоне требует больше телодвижений.
В TypeScript есть статическое назначение типов, динамика проявляется только при взаимодействии с JS библиотеками, ну или Any везде городить, но так можно и в C# с dynamic писать.
"Он не заставляет писать говнокод, просто не запрещает и не пытается навязывать, как всякие жавы и шарпы"
В этом проблема, люди ленивые и им свойственно писать говнокод. Если язык позволяет писать говнокод, то он будет написан. Не просто так в гугле придумали Go, который даже при неверном стиле не даёт коду скомпилироваться (не то, чтобы мне такой подход нравился, но что есть то есть). В общем, лучше дать языку навязать какую-то структуру, иначе начинающий программист сам её придумает и далеко не факт, что она будет хорошей. Кроме того, языки со статической типизацией сразу убирают целую кучу ошибок. На том же Haskell, если типы совпадают, то программа почти гарантированно работает верно.
"IDE - вообще дело вкуса (чем плох тот же PyCharm?)"
IDE для ЯП со статической типизацией лучше, чем IDE для ЯП с динамической типизацией, просто из-за самих языков.
https://ebanoe.it/
VBA через офисный пакет (по большей части - Excel). и в работе крайне полезно, и учит к программированию и логике синтаксиса, последовательности. формулы опять же эксельные, DAX
ещё и открывает большие преимущества для своего резюме
для особых мазохистов есть еще всякие LISP, prolog и прочие хаскели
или я туплю и это был сарказм?
И нет, не сарказм. Я действительно не умею в языки программирования, технологии и другие умные слова.
У новичка моментально может отбить всякую тягу к программированию.
'hello world' написать еще просто, а вот какую свою програмку с окошком и кнопочками написать ... печаль в общем.
а будет ли это в книгах для новичков написано?
а судя по наличию пхп, делал ее грязный извращенец
Хорошая, с небольшими оговорками. Схеме создавалась в 2015, её стоило бы немного подправить.
- Схема всё-таки избегает выяснения склонен ли человек больше к визуальной части, где результат виден сразу или к красноглазой, где результат абстрактный и ты пялишься в консоль неделями и чем твоя черная консоль лучше чем неделю назад понятно только тебе и таким же как ты. Термины Front/Back непонятны только что пришедшему.
- Если ты именно визуал и стремишься в вэб, выбор по сути остался один - JS. Начинать учить гниющий в сапорте PHP для своего стартапа
- странно. На Ruby родилось несколько блестящих проектов, но массово он похоже уже не взлетит.
- В гугле кроме питона, всегда существовали Java и JS стэки. Со временеи создания схемы они всё больше инвестируют в свой GO. Их же проекты на питоне.... - ты не хочешь в этот ад, правда.
- В схеме отсутствует набирающий у прогрессивной общественности популярность язык Rust, и целый куст языков для людей пришедших из мира матеметики и статистики, которые недавно вышли из подлодки и поняли, что дальше они без программирования не проживут.
Есть как минимум не столь ужасные
TypeScript
CoffeeScript
и прочие WhocaresScript
0. Получи основу в Computer Science, это не про язык, а про структуры данных и алгоритмы. Если можешь в английский - гугли материалы по CS, если на русском - материалы курсов факультетов типа ИВТ, ВТ, ПМ и т.д.
1. Определись с областью. Кровавый энтерпрайз - C#/Java, веб - JavaScript, просто Computer Science и пока не знаешь - Python. Имхо лучший язык для обучения сейчас - Python.
2. Материалов и туториалов в интернете тысячи, по JS мне очень нравится http://learn.javascript.ru/ покроет 100% твоих нужд в языке. По C# это определенно Рихтер, по Питону, увы, не подскажу.
Если нужна будет помощь, можешь писать в личку.
Всё есть, "Для чайников" твоё. первые месяца 3 в подключаемые модули вообще не лезь если база нулёвая.
Потом попробуй фласк, джанго имхо хоть и больше в коробке но и заплётов тоже.
данные
операции
функции
создание модулей
классы (через месяц)
https://hh.ru/search/vacancy?text=Arduino&area=1
https://hh.ru/search/vacancy?text=Java&area=1
Сравнивай, думай.
Да я сравнил, намеренно, две абсолютно разные вещи. Но это наглядно показывает, как можно в 2018 году решить за копейки 95% задач ради которых раньше программировали микрухи. В результате получится кривое, дибильное решение вида из пушки по воробьям, но оно сработает и будет сделано в короткие сроки, на два парядка менее способным человеком. Что ещё нужно капиталисту?
PS Профессия инженегр.
PSS Автоматизировал прорисовку черчежей с 3-4 дней - до менее 1 дня.
Из софта пригодится MSVS, Notepad++ - если только под Win, IDLE из дефолтного питона, для самых основ, QtCreator - удобное IDE, правда, это только по C/C++ да под определенные цели.
Вот тут главное с книгой не промахнуться. Пока все книги, что я видел у Страуструпа написаны качественно, но у новичков отобьют все желание что-либо учить.
exel с формулами и vb - это к примеру домашнюю бухгалтерию посчитать, или лабораторную работу сделать.
ардуинка - сделать свои часы, систему полива цветочков, вентиляцию работающую по температурным датчикам, сигнализацию и тд
android studio и Java и С++ - написать свою игру или программу под андроид.
остальные языки если только по рабочей необходимости учить. если есть вакансия или может быть вакансия, и там уже под эту вакансию что-то конкретное изучать.
http://www.russchooljp.com/wp-content/uploads/2017/05/Python.dlya_.detei_.pdf - два
А в универе лабы по 1С, рассчитанные на пол года, сделал за два вечера и принёс на пару на флешке, так для тянов-гуманитаров я тоже был программист.
А для тёти я программист, потому что вай-фай могу настроить и принтер заправить.
Все программы, что я написал в жизни - это в седьмом классе на Паскале зафигачил прогу, которая мне выдавала дискриминант и решение квадратных уравнений, потому что впадло было одно и то же постоянно решать.
Думаю, тебе не программить надо, а перестать бояться "что-то испортить" и читать статьи о том, как устроено то, или это.
В принципе, ещё можешь несколько часов на html потратить, чтобы фигачить на реакторе курсивом, например, или вот так
qwerty.https://cloud.mail.ru/public/6DHo/6psDMz1sf
https://rutracker.org/forum/viewtopic.php?t=5228873
Почему? Потому что это позволит очень быстро втянуться.Так как видишь сразу результат своих действий. А там дальше уже от персональных предпочтений выбешь в специализацию.
И, да, - проходи курсы только на английском. Без английского тебе светят только дешевые галеры (см. выше ссылку на ебаное.ит).
Реактор и айти, это комбо!
Кроме языка надо видеть общую картину в целом, т.е. computer science (алгоритмы, основные принципы и паттерны).
Если будет хороший учебник по языку, там уже будут некоторые основы computer science.
В нете тыщи онлайн курсов и интерактивных обучающих сайтов типа
https://www.codecademy.com/
Но вообще, самое лучшее тут это учить то что тебе интересно, как писал один чел в статье на похожую тему "если вам интересно пилить моды в майнкрафт - учите джаву". Просто придумай чем бы ты хотел заниматься и начни с этого. Не факт что имено этим в итоге ты будешь заниматься. Но тут самое главное просто чтобы в самом начале не бросить.
во вторых: js дает быстрый старт для начинающего, позволяя быстро написать условный "hello world" и просто по быстрому попробовать нравится ли тебе это все или нет.
Во-вторых он на старте не даст понятия о примитивных типах и их преобразованиях. Новичек вообще может застрять на том, что все вроде бы заебись, но нихуя не работает и в логах тоже все тихо.
так может ему и программирование вообще не встрется в будущем. JS позволяет легко начать и легко выкинуть если не понравится.
Но ты же писал не это, ты так и не написал что ты будешь юзать в вебе на стороне клиента "в продакшне", ну чтобы не попасть в специальный котел в аду. Без этого не понятно действительно ли ты говоришь как специалист, или просто где то услышал что "джыэс гавно"
типизация, инкапсулированность, связаность, видимость, хоролие практики - все это лучше учить когда есть ограничения языка.
Да ладно тебе, все мы там будем.
. А ты хуй.
1. Если самостоятельно, то стоит начинать с книг head first. Они очень классные объясняют трудные вещи простым языком. Подойдёт для начального уровня. Они есть по разным языкам, java, c#, js, и темы уже не для чайников типа ООАП, паттерны.
Книги толстые, но этого боятся не стоит ибо читаются на одном дыхании.
2. Сейчас есть много курсов на geekbrains "для самых маленьких". За какие-то пару бесплатных курсов ты будешь уже хорошо ориентироваться в базовых знаниях как computer science так и в языке.
3. Могу выступить в качестве наставника по .net.
Бери или Python или C#. C# это единственный язык, программируя на котором я начал получать удовольствие. Но с другой стороны, он изначально объектно ориентирован и в этом сложность для человека, который вообще по нулям в программировании. В своё время это отпугнуло меня от изучения VB.NET и Java. Например, хочешь такой вывести просто в консоль текст. В Java это делается командой
System.out.println("Hello, World");
И тут уже вопросы - что такое system? Что такое out? Почему между ними точки? Если одно вытекает из другого, то откуда я должен знать что там вообще хранится? Это сейчас то понятно, что это просто класс с методами. Для человека, который хочет знать всё и сразу, такие языки могут вызывать отторжение, в то время как на каком-нибудь Python это быстро и просто
print('Hello World')
а как же main public static void? =) У меня если честно сперва вот это вопросы вызвало когда я начинал учить программирование.
Вот серьезно, добрая половина советчиков в комментах по моему просто не могут поставить себя на место человека который никогда раньше не сталкивался с програмированием
З.Ы. Спасибо за тему, тут нашел много интересного. Реактор не просто познавательный!
А так - welcome aboard!
тулзы - all you need is lo.. IntellijIDEA community edition, git
Обучение Питону. На английском
Java - по сути тот же C#, но не такой удобный и с закосом под кроссплатформенность. Язык №1 для enterprise (постепенно вытесняется C#). Годится почти для всего (java есть даже в твоей сим-карте). Для любительских применений в основном востребован на Android ну и для моддинга Minecraft. Можно и с него начать, если именно эти области наиболее интересны, но C#, на мой взгляд, по всем параметрам лучше.
JavaScript - единственный язык для браузеров, из за чего приходится его использовать, если пишешь под веб. Достаточно прост для новичка. Несколько лет назад пережил второе рождение и теперь применим везде - и для серверного кода, и для настольных приложений, и для игр, и для мобилок. Так что можно написать сайт целиком, зная всего один язык. Вне веба использовать не рекомендую - в результате обычно получается жрущее память говно. Лично я языки с динамический типизацией (в частности JavaScript), терпеть не могу - после C# чувствуешь себя как в тумане (автодополнение и прочие подсказки работают заметно хуже, чем для статических языков). Спасают типизированные надстройки, такие как TypeScript. Для любительского применения JavaScript особенно хорош возможностью моддинга сайтов с помощью юзерскриптов. Всего за несколько часов даже новичок может создать полезное дополнение для любимого сайта. В свободное время я довольно часто пишу скрипты, в том числе и для Джоя.
C++ явно сложноват для новичка, поскольку требует вручную управлять памятью и позволяет легко её испортить или допустить утечку. Синтаксис довольно сложен (особенно шаблоны), разделение на файлы h/cpp добавляет трудностей, поддержка со стороны IDE ограничена, библиотеки в пару кликов тоже не добавишь. Востребован там, где нужна высокая производительность и экономия ресурсов (ОС, драйверы микроконтроллеры, игровые и браузерные движки и т.д.) Если втянешься в программирование, стоит пощупать, чтобы понять как всё работает на более низком уровне. Если захочется опуститься до уровня железа - можно щупать вместе с Arduino.
C проще C++, но, на мой взгляд, сейчас особо не нужен. Даже в микроконтроллерах удобнее использовать C++ (с некоторыми ограничениями).
PHP в своё время был стандартом де-факто для веба, да и сейчас весьма популярен. Вне веба почти не используется, так что изучать его новичку я не рекомендую. Да и сам язык - какашка (на момент, когда я его использовал, сейчас многое изменилось, но возвращаться уже не хочется). Динамический, местами нелогичный, склоняющий к написанию говнокода. Раньше был единственным языком с бесплатными хостингами, сейчас есть бесплатные хостинги под всё, что угодно. Например, на Azure можно хостить .NET (C#), Python, PHP и Java.
Python - стандарт де-факто для научных вычислений и машинного обучения, часто используется для обучения программированию за бугром. Годится для всего. Распространён как скриптовый язык в прикладных приложениях. Я почти не использовал, т.к. на динамические языки аллергия, но в целом не лучше и не хуже других.
Lua - довольно простой язык, но мало где используется, в основном как скриптовый в играх и других приложениях. Например, для аддонов World of Warcraft или моддинга Dwarf Fortress.
Delphi - хорош для тех, кто в школе учил Паскаль. В своё время был самым простым способом рисовать окошки на Windows, но сейчас уже устарел и начинать с него изучение незачем. C# взял в себя всё лучшее из Delphi.
Какой бы язык ты не выбрал, обязательно разберись с системой контроля версий (например, Git). Этому даже в университетах не всегда уделяют внимание, но в работе вещь крайне полезная, если ты пишешь что-то большее, чем небольшой скрипт, который запустил и выкинул.
Ну и как тут уже писали, главное - придумать, что тебе будет интересно писать. Если будет стимул получить в итоге хоть и отстойную, но работающую и решающую твои задачи программу, учиться будет куда легче, чем просто выполняя примеры из учебника. Если знания не применять на практике для чего-то полезного, они быстро забываются.
Каких-то конкретных книг или курсов посоветовать не могу, я изучал программирование, ставя себе задачи и гугля возникающие в процессе вопросы (в итоге лишь небольшую часть своих идей довёл до практического применения, но опыт получил). По книге только Паскаль изучал когда-то давно, но сейчас это уже не актуально.
Для задавания вопросов есть https://stackoverflow.com/ (https://ru.stackoverflow.com/, если трудности с английским) но совсем уж глупые вопросы, ответы на которые легко гуглятся, там задавать не принято. Почитай там в справке, как правильно задавать вопросы - для программиста это тоже важный навык, как и умение гуглить.
Мне в личку тоже можно писать, что-нибудь подскажу по .NET/C# (ну и по остальным перечисленным языкам на базовом уровне). Я нелюдимый хикка, но иногда пробивает на поговорить по интересам.