Как начать
| |
DrVooDoo | Дата: Понедельник, 01 Июля 2019, 10:12 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| В общем хочу спросить как научиться погромировать. Не учить язык чтобы знать тонкости, с языка на язык не так трудно перейти, справку почитать лишь (ирония). А как научиться именно программировать. Алгоритмы (все вот эти сортировки), планирование программ, методы, логика и прочее. Где такое можно почитать?
|
|
| |
afq | Дата: Понедельник, 01 Июля 2019, 11:25 | Сообщение # 2 |
Разработчик
Сейчас нет на сайте
| DrVooDoo, у меня вот такая книжка есть по алгоритмам алгоритмы на c++. Только например если я понел алгоритм, то потом его забуду. Чтобы научиться планировать и прочее, нужен опыт в программировании. Пиши много программ консольных. Добавлено (01 Июля 2019, 11:34) --------------------------------------------- Например попробуй написать парсер регулярного выражения.
|
|
| |
drcrack | Дата: Понедельник, 01 Июля 2019, 11:43 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| Цитата Например попробуй написать парсер регулярного выражения. чел возможно еще не знает что такое цикл, какой еще парсер? вы линуксоиды реально странные ребята
Цитата Алгоритмы (все вот эти сортировки), ты к олимпиаде что ли готовишься, какие сортировки? тебе это не понадобится вообще никогда
Цитата планирование программ, методы, логика и прочее. 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 |
старожил
Сейчас нет на сайте
| надо же, мода на хейт ООП и до сюда добралась
|
|
| |
afq | Дата: Понедельник, 01 Июля 2019, 19:11 | Сообщение # 15 |
Разработчик
Сейчас нет на сайте
| drcrack, да весь gnu написан на си, потом некоторое на c++ переписали. По этим примерах конечно сложно учиться, нужно на более простых учиться. Но кода на си завались. Например ( я вроде уже писал об этом ), я как то учавствовал в голосовании, участников было несколько, около 10. Я написал программу, которая отдаёт голос за меня и в цикле запускал через тор мою программку, она от разных ip ставила голос. Правда я дал знать, что можно таким способом голосовать и я не стал единоличным победителем, а в ходил в тройку победителей. ) Даже здесь ооп не потребовался. Пользовался 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 ( ) надо же, мода на хейт ООП и до сюда добралась я не хейтю ООП, более того я пользуюсь ООП, просто не для всего подряд, и часто встречался с тем, что не правильное использование ООП очень сильно вредило системе, особенно в многопоточной среде. Есть множество других интересных подходов, к примеру - функциональное программирование, реактивное программирование, Data Oriented Programming итд, не обязательно ограничиваться одним лишь ООП, можно использовать вместе разные подходы. Каждое направление учит чему-то новому и интересному. Сейчас становится довольно популярным использовать ОПП вместе с ФП.
|
|
| |
afq | Дата: Понедельник, 01 Июля 2019, 19:13 | Сообщение # 17 |
Разработчик
Сейчас нет на сайте
| Ооп удобно например для программирования игр. А так утилиты писать и си хватит. Добавлено (01 Июля 2019, 19:16) --------------------------------------------- На c++ я например написал утилитку, которая увеличивает размер изображения в n-ое количество раз. Да и писал я из-за того, что мне лень было сишные функции все писать, а в c++ написать так. , и всё, картинка сохранилась, а в си мне пришлось бы написать около десяти функций.
|
|
| |
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 ставила голос. Правда я дал знать, что можно таким способом голосовать и я не стал единоличным победителем, а в ходил в тройку победителей. ) Даже здесь ооп не потребовался. Пользовался libcurl, да конечно сишные функции можно использовать, например библиотеку libcurl, но для c++ есть libcurlpp. это походу в 2000 году было, сейчас при заходе через тор в любую голосовалку ты будешь рекапчу решать пять минут без остановки, выбирая машины, витрины, велосипеды и опять все по кругу пока оно тебя наконец не пустит
Цитата Вот так. :s/foo/bar/g, и это поменяет во всём документе все слова foo на слова bar. Видишь как удобно. Это я несколько предложений для DrVoodoo написал. нет, это не удобно
|
|
| |
AlexRabbit | Дата: Понедельник, 01 Июля 2019, 19:28 | Сообщение # 20 |
старожил
Сейчас нет на сайте
| DrVooDoo, попробуйте поставить себе простую, конкретную задачу. И изучайте только то, что будет способствовать её решению. Возьмите любую самую простую игру. Тот же морской бой с компьютером. Сапер. Крестики нолики. Все эти задачи многократно и многими способами решены.
Потому что я могу конечно закидать Вас примерами умных книжек, (типа "эрудированно" понаписать чего нибудь типа,
- Стивен С. Скиена – Алгоритмы. Руководство по разработке
- Роберт Седжвик – Фундаментальные алгоритмы на С++
- Алгоритмы и структуры данных. Никлаус Вирт
- Искусство программирования. Кнут Д.
) но толку от всего этого?
Сообщение отредактировал AlexRabbit - Понедельник, 01 Июля 2019, 19:29 |
|
| |
|