Программирование с ноля. Не студенческий возраст. С чего начать?
Доброго времени суток уважаемые!
Хочу заняться програмированнием. Так сказать для себя, для хобби, зарабатывать деньги этим не собираюсь (мне почти 40 лет и стабильный источник дохода давно есть). Хочется научится писать программы для "домашнего пользования". К примеру увлекся я "Ардуино" и построил с ним что-то похожее на метеостанцию, было бы неплохо написать к ней программу - в красивых окошках показывает показания,ведется запись с датчиков каждый день, можно делать выборки разных данных и строить графики. Или есть у меня скажем маленькая свиноферма, написать программу учета животных, расхода кормов, расхода/прихода с них денег и т.д. Или мне нравиться карточная игра "Преферанс" , чтоб я мог написать компьютерную реализацию ее.
Осталось выбрать инструмент т.е. язык программирования. Чтения гугла привело меня к трем вариантам:
1. C#
2. Java
3. Python
Помогите ,пожалуйста , мне с выбором. Так как я не специалист в этом вопросе и легко могу направить свои стопы совсем не в правильную сторону. Я сталкивался с программированием еще поверхностно в институте,и сейчас с горем пополам написал пару простых скетчей к ардуино.
Какую литературу почитать? Английским не владею )
GrayhairedSamuray: И там и там - проще ВЕБ вариант.
electron nwjs и т.д.
Серверная часть может быть написана на чем угодно.
Python nodejs и еще очень много вариантов.(кросс платформенных)
C# пока что является частично кросс платформенным. Есть mono и core .
Если не являетесь заядлым фанатом .NET ,то смысла большого нет браться за c#.
GrayhairedSamuray: C# в целом простой язык и у него отличные библиотеки для работы с формами. С помощью WinForm - очень просто создавать приложения со стандартными графически элементами, а с помощью WPF - можно создавать очень красивые и необычные приложения. По C# много статей и примеров на русском языке.
Игорь: Опыт скажем почти нулевой, в институте помню был Турбо паскаль, с курса помню только что есть циклы (три), условия и типы данных :) Еще писал небольшие скетчи к Ардуино. А критерии выбора - не слишком сложный, распространенный (что-бы проще в гугле найти ответы на свои вопросы) , для чего хочу - написано в вопросе.
Под ваши задачи отлично идет C#. Он прост и понятен + удобная IDE с подсказками. Позволяет быстро разрабатывать win-приложения. (С ардуино связь наладить очень просто).
Python не рекомендую, все таки является скриптовым языком, много вопрос будет по запуску своих программ.
ничего сложного в запуске программ на питоне нет, не нужно деинформировать человека, а ваш сишарп только на винде и пойдёт, в линуксе это работать не будет. А на питоне есть прекрасный фреймворк Kivy, который поможет и визуальную часть быстро сделать и скомпилировать приложение для запуска в ЛЮБОЙ системе и на любом устройстве - хоть в винде, хоть на андроид-планшете, хоть на айфоне, где угодно, хоть на телевизоре. Поэтому, порекомендую изучать питон третьей версии
C++ просто идеальный вариант для вас.
Поскольку вы не собираетесь зарабатывать деньги, вы сможете спокойно создавать приложения любой сложности, кроме того при встрече с любым другим языком из Си-подобных (C, Java, C#) вы будете отлично понимать логику кода.
Сложности вам можно не опасаться из за того что времени на обучение у вас еще полно, да и ошибки поначалу будут для вас не критичны так как вы не собираетесь продавать свои поделия.
Говорю как сам пишуший на C++ - его сложность сильно преувеличивается теми кто на нем не пишет.
Не бойтесь нового и смелых открытий для себя, познайте целую вселенную мира C++!
Итак, раз для домашнего пользования, то Java лучше отложить. В принципе они примерно равны с C# по весовой категории и областям применения, но ИМХО на Шарпе проще набросать какое-нибудь десктопное приложение. Для написания десктопной карточной игры вполне подходящий вариант.
Для Ардуино понадобится C/C++, это вам правильно говорят. По сравнению с C# синтаксис похож, но различаются многие концепции, C++ и тем более Си значительно ближе к железу.
Если для себя и для души, то я бы посоветовал Python. Писать на нем легко и быстро, учить тоже. Хоть используется в основном в вебе, для пк тоже можно что-то набросать. Java и C# - это энтерпрайз, сложные и большие системы, много учить и в одиночку такие системы не обслуживаются.
----------
Внимание, мой ответ основан на небольшом знакомстве с языками, не принимайте его как единственно верный. Хотя я думаю, другие окажутся похожими.
JS (+HTML/CSS) (учебник на русском):
1. node.js (для сервера, например, для предоставления информации с датчиков)
2. nwjs (для создания десктоп приложений, также имеет в своём составе node.js)
3. phonegap (для кросс-платформенных мобильных приложений)
ОС у вас какая? Для Windows лучше C#, Delphi или сперва начать с C/C++ (на Arduino уже начали с него, теперь на Windows Desktop попробуйте), смотрите сами, главное не беритесь за кроссплатформенные фреймворки, они все до единого имеют более низкий порог вхожения и требует опыт с "нативом", поэтому для начала не подходят, ну разве что PureBasic, странная довольно штука, и уже этим заслуживает внимания, но он не особо и поддерживает другие ОС кроме Windows.
Евгений: Вконтексте данного вопроса ваш комментарий совершенно бредовый, если человек пишет для себя, то у него не десяток ОС и ему не надо везде, зато ему надо быстро и удобно, и низкий порог вхождения, по этим критериям даже устаревший Delphi раз в десятки лучше, чем Python.
Python будет крутым выбором для первого языка программирования, на нем легко будет выучить основы программирования, а дальше можно уже брать c# если вы хотите писать оконные приложения под windows
Из системных googlego. Есть тур для новичков даже на Украинском и еще много разных языков, а на русском нет. Какой-то протест что ли... https://tour.golang.org/welcome/2
Python. Для простых игр наподобие пасьянса есть pygame. На arduino насколько знаю python запускается. https://habrahabr.ru/post/167209/
HTML, Javascript, CSS полезно знать чтобы делать web - интерфейс для своих программ. Кстати на Javascript тоже можно писать игры, но для первых шагов конечно лучше python.
Есть игровые движки где логику игры можно описать визуально. Для Unity есть Playmaker, в UnrealEngine есть Blueprints.
C++ и Qt - огромная мощь. Можно программировать все что угодно, под любую платформу. К тому же С++ довольно быстрый и красивый язык. Самое то для обучения, на мой взгляд.
Почитал я ответы, помучил еще гугл. В основном советы сводятся к Python и C#, С++. Насколько я понимаю питон (или пайтон х.з. как правильно) намного легче в освоении, и позволяет делать очень многое. С++ сложен и очень мощный (а нужна ли для моих целей его мощь? ОС и подобное писать точно не собираюсь) А чем преимущество C#?
Python не рекомендую, все таки является скриптовым языком, много вопрос будет по запуску своих программ.
Можно подробнее - какие могут быть проблемы?
Поймите правильно, меня не пугает сложность языка, просто не хочу углубятся в ненужные для меня дебри )
Повторюсь, c# в плане UI привязан к windows , QT привязан к с++ и к тем языкам,где есть для него обертки. В питоне есть обертка. У типизированных языков есть как некоторые преимущества перед скриптовыми, так и недостатки. Попробуйте и то и то, по ходу решите.
Для трех кнопок мне кажется можно и HTML+JS освоить.
Мне кажется , тут как раз стоит попробовать разные варианты, если некуда не спешите.
Sharp: HTML+JS освоить.
это насколько я понимаю веб, а мне хотелось бы десктопные приложения (почему хз, может каприз).
Мне кажется , тут как раз стоит попробовать разные варианты, если некуда не спешите.
Абсолютно не спешу, но боюсь запутаться если начну и то и то пробовать.
GrayhairedSamuray: Разница между вебом и десктопом лишь в исполнении в броузере(для electron+nwjs это необязательно) или отдельном окне Плюс в вебе есть (не)четкое разделение на клиент и сервер. Деление на сервер и клиент возможны (нужны) так же и для десктопного варианта. Границы достаточно размытые. Чистый(грязный) веб дает доступ с любого устройства сразу.
Если бы не линукс, то можно было бы на с# остановиться и начать с него.
В данном случае лучше попробовать лишнее, чем быть ограниченным чем-то одним. Разные задачи-разные инструменты. Можно комбинировать.
Sharp: "Если бы не линукс, то можно было бы на с# остановиться и начать с него."
Линукс я ставил из спортивного интереса , и по сути кроссплатформеность мне особо и не нужна.
GrayhairedSamuray: Под винду это родной,популярный во всех смыслах язык со многими плюшками, он простой и строго типизированный (скриптовый язык таковым не является,что может доставить некоторые трудности)
Неплохо(отлично) подходит для Desktop UI (GUI)
Если не имели дело с программированием, то думаю в 40 начинать уже поздно. Под ваши нужды можно и купить несколько программ чем мучить себя обучением, все равно это ни к чему не приведет.
Ну я думаю что учится никогда не поздно, тем более это интересно. )) Почти тоже самое мне говорили, когда я решил поставить линукс - "Зачем тебе оно,это сложно. Линукс это для красноглазых гиков". Ничего поставил, сначала да было довольно дико и непривычно, но гугл и парочка книг сделали свое дело. Пару раз привел систему в нерабочее состояние, но зато многому научился ). Так-что думаю терпение и труд все перетрут. И у меня нет надобности в никаких особых программах, чтобы их покупать, так просто для себя хочу научится.
Johnny Gat: Это не бред, какой смысл учиться программировать, если к примеру нужно программно складывать 2 числа. Смысл есть если куда то это можно применить. А так, повторюсь еще раз, дешевле и разумнее купить то что уже есть, чем тратить полгода на изучение программирования, что бы потом написать программу которая уже есть в продаже и стоит всего 100 рублей. (что бы более и менее начать хоть как то программировать, нужно как минимум потратить с пол года, если с нуля). Если учить все на проф. уровне, то 100% уже поздно, посмотрите на вакансии до какого возраста рассматривают на работу программистов.
Андрей: а зачем люди вообще-то делают сами? чтобы вкрутить лампочку вы вызываете электрика? если вам нужны продукты вы заказываете их с доставкой на дом? а готовит вам повар?
Андрей: А какой смысл в коллекционировании марок? Тратить немалые деньги на кусочки бумаги.. А какой смысл скажем чей-то жене печь торт и убить на это два-три часа , ведь за это время можно заработать деньги и купить три таких торта. А какой смысл смотреть 100500-й сезон "Игры престолов"? Почему у Вас все свелось к материальному интересу? Я давно нашел свое место в жизни и зарабатываю достаточно что-бы содержать свою семью, и оплатить учебу своих детей в ВУЗах. И не вижу ничего плохого в том что-бы после трудового дня пару часов посидеть за компом и отдохнуть, занимаясь тем что нравится. Может лучше потратить это время с пивом на диване, или гонять танки как делают много моих знакомых? Я попробовал и мне это интересно, написал свои первые "Hello World" и доволен что мои программки работают. Все что мне нужно с программного обеспечения уже давно купил (принципиальный противник пиратского софта, и считаю что любая работа должна оплачиваться) , я не пытаюсь сэкономить пару сотен или тысяч и изобрести свой велосипед, а просто получаю удовольствие.
GrayhairedSamuray: Если есть конечно много свободного времени, то можете тратить его куда пожелаете. Наверное я сужу по себе, у меня времени нет, а от комп-ра просто тошнит. Так что дома хочется побыть с семьей и тратить время хочется на жизнь(на семью), все это так мимолетно. Не хочу лет так через 10 вспоминать, что время(жизнь) потратил на комп-р. В отличие от вас я этим зарабатываю на хлеб с маслом и итак очень много времени отдаю этому занятию. Игрушки это не мое))), игру престолов тоже не смотрю), а вот тортики печь люблю и готовить люблю, это для души(хобби). Если нужно что то сделать основательное где требуется квалификация всегда стараюсь довериться специалистам, каждый должен заниматься своим делом(кто то зарабатывает деньги, кто то лапочки вкручивает, а кто то пишет программы). И пусть даже я программист программы которые нравятся покупаю, не вижу смысла тратить время на постройку моста вдоль реки.
//********************
Хочется-дерзайте, как совет начните изучать C++, это база. Удачи