Четверг, 28 Марта 2024, 18:48

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » Общие обсуждения программистов » Как начать
Как начать
DrVooDooДата: Понедельник, 01 Июля 2019, 10:12 | Сообщение # 1
почетный гость
Сейчас нет на сайте
В общем хочу спросить как научиться погромировать.
Не учить язык чтобы знать тонкости, с языка на язык не так трудно перейти, справку почитать лишь (ирония).
А как научиться именно программировать. Алгоритмы (все вот эти сортировки), планирование программ, методы, логика и прочее.
Где такое можно почитать?
afqДата: Понедельник, 01 Июля 2019, 11:25 | Сообщение # 2
Разработчик
Сейчас нет на сайте
DrVooDoo, у меня вот такая книжка есть по алгоритмам алгоритмы на c++. Только например если я понел алгоритм, то потом его забуду. Чтобы научиться планировать и прочее, нужен опыт в программировании. Пиши много программ консольных.

Добавлено (01 Июля 2019, 11:34)
---------------------------------------------
Например попробуй написать парсер регулярного выражения.

drcrackДата: Понедельник, 01 Июля 2019, 11:43 | Сообщение # 3
старожил
Сейчас нет на сайте
Цитата
Например попробуй написать парсер регулярного выражения.

чел возможно еще не знает что такое цикл, какой еще парсер?
вы линуксоиды реально странные ребята

Цитата
Алгоритмы (все вот эти сортировки),

ты к олимпиаде что ли готовишься, какие сортировки? :D
тебе это не понадобится вообще никогда

Цитата
планирование программ, методы, логика и прочее.

https://proglib.io/p/design-patterns/

и кстати c++ настоятельно не рекомендую
для цели обучения паттернам и остальному он совершенно не подходит
т.к. 90% времени ты будешь сражаться с языком и его тупым дизайном вместо реального обучения
C# или Java — самое то
afqДата: Понедельник, 01 Июля 2019, 12:07 | Сообщение # 4
Разработчик
Сейчас нет на сайте
DrVooDoo, на java кстати есть сайт javarush.ru, там можно научиться на java программировать с самого начала.
DrVooDooДата: Понедельник, 01 Июля 2019, 12:25 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Цитата drcrack ()
ты к олимпиаде что ли готовишься, какие сортировки?

Я просто хочу научиться понимать.
Я много раз начинал изучать (c++, java), и в какой-то определенный момент у меня начинался затык. На ровном месте. Я не понимал как что-то примитивное сделать.
У меня нет азов. Для вас сортировка смешно, но я не знаю даже этого.
А книги по языкам из разряда первый урок учим буквы, второй учим знаки препинания, третий пробуем написать тестовый роман на 400 страниц.
drcrackДата: Понедельник, 01 Июля 2019, 12:59 | Сообщение # 6
старожил
Сейчас нет на сайте
Цитата
Для вас сортировка смешно, но я не знаю даже этого.

99% программистов не смогут сходу написать эффективную сортировку (=что-либо сложнее пузырька), потому что это задача которая в реальной работе не встречается вообще никогда

Цитата
Я много раз начинал изучать (c++, java), и в какой-то определенный момент у меня начинался затык. На ровном месте. Я не понимал как что-то примитивное сделать.

попробуй javascript (который в браузере)
afqДата: Понедельник, 01 Июля 2019, 13:37 | Сообщение # 7
Разработчик
Сейчас нет на сайте
DrVooDoo, попробуй язык си. Он считается не таким уж и сложным. Его много где преподают. Может быть тебе объектно-ориентированные языки ещё рано изучать, потому что там много сложностей по началу. Но вот если ты осилишь язык си, то на c++ уже не так сложно будет перейти. Си как основа. Попробуй его. Есть хорошая книга head first язык си. Ещё я могу тебе дать какие нибудь программы для изучения не большие, чтобы ты мог на маленьких примерах понять как всё работает. Но у меня линукс стоит и программы написаны для него. В основном у меня консольные программы. В линукс есть документация встроенная, а в windows тебе надо читать онлайн документацию. В windows больше 1000 системных вызовов, а в линукс около 400. Тебе проще будет на линуксе заниматься.
XakepДата: Понедельник, 01 Июля 2019, 16:11 | Сообщение # 8
めちゃくちゃちゃ
Сейчас нет на сайте
DrVooDoo, тебе для чего это нужно, для того, чтобы найти работу? или просто хочется для себя? Если хочется найти в будущем работу, то учи алгоритмы, ООП, ООД (Object Oriented Design - всякие SOLID, паттерны проектирования итд), потом нужно определиться с направлением - и там уже нужно выбирать необхоидмые инструменты, к примеру - хочешь стать backend разработчиком, один из самых простых способов - взять python и django и начать пробовать что-то делать, хочется андроид приложения писать - андроид студия + Java и опять же смотри что используют - это различные RxJava, Dagger, архитектурные компоненты итд. все это можно совмещать. Потом устраиваешься на работу джуном и тебя там уже всему научат.

Если же ты хочешь исключительно для себя - то просто начни делать что-то для себя, какой-нибудь проект, опять же - нужно определиться с целями - если ты хочешь создавать игры выбирай подходящий инструмент и делай - будь то Unity или Game Make Studio и просто пробуй, будешь сталкиваться с реальными проблемами и искать решения, и постепенно начнешь понимать как программировать в принципе. Если совсем по хардкору хочется - можешь попробовать написать свой игровой движок с нуля, либо свой компилятор, свою ОС итд, конечно же исключительно в образовательных целях, если хочется делать игру, вряд ли писать свой движок будет хорошая идея. Подобные проекты хороши тем, при реализации они дают понимание - как оно все внутри устроенно, плюс далеко не тривиальные задачи.

Цитата drcrack ()
99% программистов не смогут сходу написать эффективную сортировку (=что-либо сложнее пузырька), потому что это задача которая в реальной работе не встречается вообще никогда

а почему сортировка пузырьком - это не эффективная сортировка? т.е. в плане производительности можно сказать только после замеров что быстрее, и зависит от задачи. К примеру - на маленьких размерах массива сортировка пузырьком дает лучший результат чем быстрая сортировка.

Цитата afq ()
В линукс есть документация встроенная, а в windows тебе надо читать онлайн документацию. В windows больше 1000 системных вызовов, а в линукс около 400. Тебе проще будет на линуксе заниматься.

какая-то странаая логическая цепочка :D. Я вот встроенным в линукс маном не часто пользуюсь, в основном онлайн доки. Про системные вызовы вообще не понял, как это коррелируется с тем что на линуксе будет проще.
drcrackДата: Понедельник, 01 Июля 2019, 17:53 | Сообщение # 9
старожил
Сейчас нет на сайте
Цитата
DrVooDoo, попробуй язык си. Он считается не таким уж и сложным.

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

Цитата
В линукс есть документация встроенная, а в windows тебе надо читать онлайн документацию. В windows больше 1000 системных вызовов, а в линукс около 400. Тебе проще будет на линуксе заниматься.



Цитата
а почему сортировка пузырьком - это не эффективная сортировка? т.е. в плане производительности можно сказать только после замеров что быстрее, и зависит от задачи. К примеру - на маленьких размерах массива сортировка пузырьком дает лучший результат чем быстрая сортировка.

к чему эта демагогия? ты правда не понял о чем речь, надо подробней разжевать?
afqДата: Понедельник, 01 Июля 2019, 18:39 | Сообщение # 10
Разработчик
Сейчас нет на сайте
Цитата
какой классный совет, учить алгоритмы и паттерны на низкоуровневом языке без ООП, который последний раз улучшался лет 20 назад

drcrack, зато на этом языке много чего написано и пишут. В виду того что нет новшеств в языке, его можно выучить и пользоваться им, а не заниматься этим ( появилась новая версия языка и всё надо переписать под новые стандарты ), так например делали 1c, которые переписывали код на c++-17. Очень много времени надо потратить чтобы новый стандарт выучить. Си надо учить, нафиг это ооп и прочее, если хочется сначала научиться программировать? Большинство утилит, которые я писал в них ооп не требовалось, а только увеличивало бы время разработки. Вот к примеру заголовки, которые у меня установлены щас в системе для си.

Позже когда освоишь структурное программирование, потом сам поймёшь, нужно ли тебе объектно-ориентированность. В си много плюсов. Научишься работать с указателями. Этого обычно не хватает в других языках, когда привыкаешь к ним. Сможешь использовать все возможности твоей системы. Да, бывает на си программировать сложнее чем на c++, но если ты поймешь си, то другие языки уже будет легче понять. Автор одной из книги по с++ советует не начинать обучение с си, а сразу переходить на c++, но он не прав, но выставляет всё так, что c++ главнее, хотя на си написано много софта, в том числе и операционные системы.
Цитата
Про системные вызовы вообще не понял, как это коррелируется с тем что на линуксе будет проще.

Ну то что система линукс простая, не перегружена методами.
Цитата
Я вот встроенным в линукс маном не часто пользуюсь, в основном онлайн доки.

Ну фиг знает. Я например установил документацию по openjdk-8, и читаю на localhost. И всё устраивает. Но это по java. Если надо быстро посмотреть в каком порядке функция принимает параметры, то man самое лучшее, открывать браузер и читать в онлайне отнимает много времени, тем более если тоже самое написано в man.
XakepДата: Понедельник, 01 Июля 2019, 18:50 | Сообщение # 11
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата drcrack ()
к чему эта демагогия? ты правда не понял о чем речь, надо подробней разжевать?

Не демагогия, просто интересный момент с сортировкой, ответ не относится к посылу в цитате.

Цитата afq ()
Если надо быстро посмотреть в каком порядке функция принимает параметры, то man самое лучшее

Обычно автодополнение показывает в каком порядке идут аргементы у функции, на крайний случай можно сразу в исходниках глянуть и документацию к функции (обычно сверху в виде комментариев оформляют) и порядок аргументов и их типы.
drcrackДата: Понедельник, 01 Июля 2019, 18:52 | Сообщение # 12
старожил
Сейчас нет на сайте
Цитата
Если надо быстро посмотреть в каком порядке функция принимает параметры

... то самое время перейти с vim на полноценную IDE

Цитата
drcrack, зато на этом языке много чего написано и пишут.

ОС и драйвера? да, это именно то что нужно ТСу сейчас!

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

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

Цитата
Сможешь использовать все возможности твоей системы.

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


Сообщение отредактировал drcrack - Понедельник, 01 Июля 2019, 18:59
XakepДата: Понедельник, 01 Июля 2019, 18:52 | Сообщение # 13
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата afq ()
нафиг это ооп и прочее, если хочется сначала научиться программировать?

согласен, ООП вообще переоценено и в кривых руках только навредит, но почему-то все пытаются в каждую дырку его запихать.
drcrackДата: Понедельник, 01 Июля 2019, 19:03 | Сообщение # 14
старожил
Сейчас нет на сайте
надо же, мода на хейт ООП и до сюда добралась :D
afqДата: Понедельник, 01 Июля 2019, 19:11 | Сообщение # 15
Разработчик
Сейчас нет на сайте
drcrack, да весь gnu написан на си, потом некоторое на c++ переписали. По этим примерах конечно сложно учиться, нужно на более простых учиться. Но кода на си завались. Например ( я вроде уже писал об этом ), я как то учавствовал в голосовании, участников было несколько, около 10. Я написал программу, которая отдаёт голос за меня и в цикле запускал через тор мою программку, она от разных ip ставила голос. Правда я дал знать, что можно таким способом голосовать и я не стал единоличным победителем, а в ходил в тройку победителей. ) :D Даже здесь ооп не потребовался. Пользовался libcurl, да конечно сишные функции можно использовать, например библиотеку libcurl, но для c++ есть libcurlpp. Но всё же я видел в исходном коде, с криптовалютой, в той программке на c++ использовался сишный libcurl. У си интерфейс простой. Но чтобы полноценно насладиться си, надо переходит на линукс. Тут всё просто в отличии от windows. На windows ты должен зайти на сайт, скачать программу и установить, а в линуксе ты из консоли можешь установить. После этого пользоваться консолью и использовать vim. Кстати рекомендую использовать vim на начальных этапах, без каких либо дополнений в коде. Так хорошо освоишься. Я например пишу на нетбуке иногда и там ide будет проблематично, экран для кода будет маленьким, а vim консольный предоставляет весь экран для кода. Да и vim командно ориентированный редактор. В редакторе ты должен кликнуть мышью несколько опций, прежде чем дойдешь до нужной функции, а в vim ты можешь нажать esc и всё ты в командном режиме. Я редко иногда напишу не так что-то, можно с помощью регулярного выражения поменять слово на другое слово. Вот так. :s/foo/bar/g, и это поменяет во всём документе все слова foo на слова bar. Видишь как удобно. Это я несколько предложений для DrVoodoo написал.
XakepДата: Понедельник, 01 Июля 2019, 19:12 | Сообщение # 16
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата drcrack ()
надо же, мода на хейт ООП и до сюда добралась :D

я не хейтю ООП, более того я пользуюсь ООП, просто не для всего подряд, и часто встречался с тем, что не правильное использование ООП очень сильно вредило системе, особенно в многопоточной среде. Есть множество других интересных подходов, к примеру - функциональное программирование, реактивное программирование, Data Oriented Programming итд, не обязательно ограничиваться одним лишь ООП, можно использовать вместе разные подходы. Каждое направление учит чему-то новому и интересному.
Сейчас становится довольно популярным использовать ОПП вместе с ФП.
afqДата: Понедельник, 01 Июля 2019, 19:13 | Сообщение # 17
Разработчик
Сейчас нет на сайте
Ооп удобно например для программирования игр. А так утилиты писать и си хватит.

Добавлено (01 Июля 2019, 19:16)
---------------------------------------------
На c++ я например написал утилитку, которая увеличивает размер изображения в n-ое количество раз. Да и писал я из-за того, что мне лень было сишные функции все писать, а в c++ написать так.

Код
out.write
, и всё, картинка сохранилась, а в си мне пришлось бы написать около десяти функций.
XakepДата: Понедельник, 01 Июля 2019, 19:25 | Сообщение # 18
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата afq ()
Ооп удобно например для программирования игр. А так утилиты писать и си хватит.

Забавно, но как раз таки в программировании игр обычно не используют ООП (и это я сейчас не про unity, а про крупные студии, к слову unity тоже потихоньку мигрируют на Data Oriented Design), а предпочитают DataOrientedDesign, ООП плохо ложится в кеш процессора, и если для серверных систем это не проблема, потому-что там узкое место обычно - это БД или сеть, то в играх это критично.

Вот немного интересного видео на эту тему:





Цитата afq ()
Тут всё просто в отличии от windows. На windows ты должен зайти на сайт, скачать программу и установить, а в линуксе ты из консоли можешь установить

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

Цитата afq ()
После этого пользоваться консолью и использовать vim. Кстати рекомендую использовать vim на начальных этапах, без каких либо дополнений в коде. Так хорошо освоишься. Я например пишу на нетбуке иногда и там ide будет проблематично, экран для кода будет маленьким, а vim консольный предоставляет весь экран для кода. Да и vim командно ориентированный редактор. В редакторе ты должен кликнуть мышью несколько опций, прежде чем дойдешь до нужной функции, а в vim ты можешь нажать esc и всё ты в командном режиме


это просто максимализм, у меня такое же было, только с emacs'ом. Во первых нужно знать инструменты, с котоырми работаешь, и IDE не исключение, сейчас любая современная IDE предоставляет возможность работать с кодом не отрывая рук от клавиатуры, да и чего уж говорить, сейчас в любой IDE есть плагин для vim, благодаря которму, твоя IDE превращается в vim, да чего уж говорить об IDE, даже в браузере есть подобные плагины.


Сообщение отредактировал Xakep - Понедельник, 01 Июля 2019, 19:26
drcrackДата: Понедельник, 01 Июля 2019, 19:25 | Сообщение # 19
старожил
Сейчас нет на сайте
Цитата
Я написал программу, которая отдаёт голос за меня и в цикле запускал через тор мою программку, она от разных ip ставила голос. Правда я дал знать, что можно таким способом голосовать и я не стал единоличным победителем, а в ходил в тройку победителей. ) :D Даже здесь ооп не потребовался. Пользовался libcurl, да конечно сишные функции можно использовать, например библиотеку libcurl, но для c++ есть libcurlpp.

это походу в 2000 году было, сейчас при заходе через тор в любую голосовалку ты будешь рекапчу решать пять минут без остановки, выбирая машины, витрины, велосипеды и опять все по кругу пока оно тебя наконец не пустит :D

Цитата
Вот так. :s/foo/bar/g, и это поменяет во всём документе все слова foo на слова bar. Видишь как удобно. Это я несколько предложений для DrVoodoo написал.

нет, это не удобно
AlexRabbitДата: Понедельник, 01 Июля 2019, 19:28 | Сообщение # 20
старожил
Сейчас нет на сайте
DrVooDoo, попробуйте поставить себе простую, конкретную задачу. И изучайте только то, что будет способствовать её решению.
Возьмите любую самую простую игру. Тот же морской бой с компьютером. Сапер. Крестики нолики.
Все эти задачи многократно и многими способами решены.

Потому что я могу конечно закидать Вас примерами умных книжек, (типа "эрудированно" понаписать чего нибудь типа,

  • Стивен С. Скиена – Алгоритмы. Руководство по разработке
  • Роберт Седжвик – Фундаментальные алгоритмы на С++
  • Алгоритмы и структуры данных. Никлаус Вирт
  • Искусство программирования. Кнут Д.
)
но толку от всего этого?


Нам требуются партнеры для продвижения и поддержки нашего ПО

Сообщение отредактировал AlexRabbit - Понедельник, 01 Июля 2019, 19:29
Форум игроделов » Программирование » Общие обсуждения программистов » Как начать
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг