Sup /pr/. В процессе изучения ОЧЕРЕДНОГО языка программирования, снова столкнулся с одной и той же проблемой.
Еще в школе на поверхностном уровне преподавали Pascal, а именно - вывод на экран решений примитивных формул (с заранее инициализированными переменными). Не успел я поступить в "шарагу", так мне там сразу всучили Visual Studio 2010, и сказали, теперь ты будешь программировать на C#. И в течение полутора лет, без особого желания, писал примитивнейшие консольные программки, для решения элементарных задачек (Алгоритм Евклида, Числа Фибоначчи, etc.), на этот раз с вводом с клавиатуры. А так-же делал пару примитивных проектов на Windows Forms, для обучения детей %науканейм% с ограниченными возможностями, а именно с нарушениями зрения.
После подобных истязаний над моим мозгом, сложилось далеко не приятное отношение к программированию, которое я всё-же смог перебороть. Окончательно поняв, что если сам не научишься, то никто не научит, решил заняться самообразованием. Поблуждав по просторам Рунета, набрел на пасту Высшее образование в IT своими руками, мне она показалась вполне убедительной и серьезной, и я начал не спеша обучаться по модулям изложенной в ней. SICP было решено отложить до лучших времен. Учебник Дейтелов по Си был изучен до конца 6 главы без особых трудностей, легко и не принужденно, за месяц.
Итак, следующим этапом было изучение Java, а так-же написание более серьезных проектов, оконных приложений, примитивных серверных программок, и конечно же игрушек. Вот тут-то у меня и полыхнуло. Во всех учебниках, сплошные сравнения C/C++ и Java, СРЕДУВЫБЕРЕТЕСАМИ, и всё в этом духе. Я прошел не маленький путь и хотел бы скорее сформировать себе базу знаний. Я хочу знать, как написать : парсер, игрушку, mp3 плеер, текстовый редактор, клиент для сайта, чатик с сервером, но я не знаю откуда мне почерпнуть эти знания!
Так вот теперь о той самой проблеме. Почему знания обрываются на консолечке и формулках? Дальше стоп. Просто конец. Похлопали по плечу и сказали, теперь ты официально можешь бухать каждый 256 день в году, ибо ты теперь ПРОГРОММИСТ! Нет, сука, я быдлокодер, который нихуя не знает, но бешено хочет и постоянно бьется головой в стену.
Подскажи мне Анон, что делать дальше? Какую книгу мне взять, чтобы всё не закончилось на том-же самом месте?
>>387770 > Какую книгу мне взять, чтобы всё не закончилось на том-же самом месте? > парсер, игрушку, mp3 плеер, текстовый редактор, клиент для сайта, чатик с сервером По каждой из этих тем написан уже ни один десяток книг. На что ты рассчитываешь? Что все это можно уместить в одном мега-талмуде, который один раз достаточно прочитать и станешь мега-погромистом?
Если тебя устраивает текущий навык погромирования дальше только профильная литература.
>Я хочу знать, как написать : парсер, игрушку, mp3 плеер, текстовый редактор, клиент для сайта, чатик с сервером, но я не знаю откуда мне почерпнуть эти знания! Нууу не знаааю, в интернете попробуй поискать.
>>387770 >Я хочу знать, как написать : парсер, игрушку, mp3 плеер, текстовый редактор, клиент для сайта, чатик с сервером >но я не знаю откуда мне почерпнуть эти знания! Гитхаб, битбакет. Но сначала бери и пиши с нуля. Можешь даже не писать, а просто смоделируй ситуацию - типа, надо написать mp3-плеер уровня винампа 3-й версии или текстовый редактор уровня ноутпада, что для этого нужно? Накидай архитектуру, классы, методы. Потом запили прототип. Вот и поймешь, нахуй, как писать софтину-нейм. А все нужные знания по языку книги вполне себе дают, разве что библиотеки сторонние могут пригодиться, но по ним никто тебе 1000-страничных книг писать не будет.
>>387770 У тебя типичная ошибка начинающего, ты думаешь, что программирование - это что-то такое одно большое.
Ты подсознательно считаешь, что можно взять хорошую дорогую книгу, посидеть с ней три месяца и спустя это время выйти новым человеком, с чистым светлым разумом, в котором структурированная, разложенная по полочка информация о: >как написать : парсер, игрушку, mp3 плеер, текстовый редактор, клиент для сайта, чатик с сервером
Нет, не получится. Твоя текущая задача - выбрать, что ты будешь делать. Не на всю жизнь, в данный конкретный момент. И учить. Можешь прямо тут и спрашивать: "Хочу клепать говноформочки на плюсах", тебе скажут "Жри говно QT!". "Хочу клепать говноформочки на сайтах", тебе скажут "Жри КАКАХИ, не ожидал, да, думал говно будет? PHP"
>>387770 > Я хочу знать, как написать : парсер Ну вот конкретно по тряпу столько макулатуры исписано, будешь читать до конца жизни и половины не осилишь.
>>387770 >Не успел я поступить в "шарагу", так мне там сразу всучили Visual Studio 2010, и сказали, теперь ты будешь программировать на C#. Выкинь все свои впечатления от шараги. Я сейчас учусь в не самом дерьмовом дс2 универе и меня всё равно тянет блевать от здешнего программирования на C/C++, хотя без универа оно дико доставляет. А Вижл Студио - няшная хрень, в разы лучше всего остального.
>Почему знания обрываются на консолечке и формулках? Ты осилил ООП & паттерны & шаблоны?
>парсер, игрушку, mp3 плеер, текстовый редактор, клиент для сайта, чатик с сервером Как уже сказали, это разные области. В игрушке будешь ебаться с SDL/OpenGL/DX/говно/моча и ещё кучей другой херни а потом внезапно охуеешь, что 70% работы для игрушки это нихуя не программирование, для чатика с сервером будешь изучать всякие там вебсокеты, параллельно дроча на жаваскрипт хтмл цсс; парсер тебе писать надоест сразу же, и ты поймёшь, что готовые либы лучше; mp3-плеер - дрочи всякие Qt, чтобы запилить хороший интерфейсик, а также изучай работу аудиокодеков & етц. К слову, нагуглить всё это не составит труда. Часто можно обойтись только оригинальной документацией на инглише, на крайняк - есть всякие туториалы по каждой конкретной технологии. Иногда даже на русском, но готовься к инглишу.
>>387779 > А дальше книги уже не помогут. Дальше нужно делать что-то практичное и полезное самостоятельно. >>387779 > На что ты рассчитываешь? Что все это можно уместить в одном мега-талмуде, который один раз достаточно прочитать и станешь мега-погромистом? Я рассчитываю на то, что создав себе базу знаний смогу САМ написать %чтолибо%. Использование библиотек ООП - это сборка ебанного ЛЕГО, но я не знаю большинства фигурок, и рассчитываю узнать как можно больше. >>387783 > Нууу не знаааю, в интернете попробуй поискать. Пишем парсер на %языкнейм%, уроки от ErokhinCrysis1989? >>387799 > Гитхаб, битбакет Я не хочу смотреть как сделал кто-то >>387800 > Ты подсознательно считаешь, что можно взять хорошую дорогую книгу, посидеть с ней три месяца и спустя это время выйти новым человеком, с чистым светлым разумом, в котором структурированная, разложенная по полочка информация о Нет, я так не считаю >>387822 Самый годный ответ, благодарю Анон. >>387827 > Начальник, закрывай. Ололо
>>387822 > Ты осилил ООП & паттерны & шаблоны? В процессе > параллельно дроча на жаваскрипт хтмл цсс Уооу... > дрочи всякие Qt Советуешь перейти на C++?
>>387770 Учусь программировать, не для того, чтобы зарабатывать, так, ради фана. Так вот, я делаю все наоборот - беру задачу, начинаю ее решать, и уже потом, сталкиваясь с проблемами, их решаю. В том числе и с помощью чтения вполне классических трудов по CS. И когда я их читаю, я уже сразу представляю, как я буду использовать полученные знания на практике. В общем, советую такой подход.
>>387770 ОП, вот тебе чеклист, который разомнёт мозг: 1. Тетрис (обычное окно, вывод графики gdi/cairo) 2. Battle city, те самые танчики. Если сделаешь хорошо и аккуратно (минимум кода) - будет правильное понимание обработки столкновений. 3. Генератор судоку. На самом деле сложная задачка, но научит придумывать алгоритмы.
Далее развлекушки с API:
4. Написать TCP клиент-сервер на низкоуровневом сокет API. Мозг охуеет с количества подходов в реализации обработки подключений (потоки, асинхронность, ебучий select, поймёшь зачем нужны всякие epolls, kqueue). Чтобы задачка была достижимой напиши чятик, одна единственная комната, отправил сообщение - всем разошлось. 5. Звуковой API. Сделай для начала генератор синусоиды. Условия - безшовность смены буферов, постепенное включение (fade in, fade out). Внешне - окно с одной единственной кнопкой.
Парсеры и грамматики: 6. Почитать что такое БНФ, грамматики LL(1), LALR, и прочее, освоить готовые инструменты генерации кода по БНФ. Взять какой-нибудь язык и готовую БНФ в сети и написать подсветку кода.
>>387822 > Ищи пути, короче Видимо проблема в моём измученном сознании, я решал задачки по методичкам, и при этом старался как можно меньше гуглить, или не гуглить вообще. А теперь получается, что перед тем как запилить своё говно, я должен ковыряться в чужом? >>387799 > Но сначала бери и пиши с нуля. > Накидай архитектуру, классы, методы. > и поймешь, нахуй, как писать софтину-нейм. > А все нужные знания по языку книги вполне себе дают > библиотеки сторонние Благодарю
Более-менее неплохой список щитобынопейсать в книге Мозговой Занимательное программирование. Автор делфипарашник, но это похуй, он подробно описывает алгоритмы и вся хуйня.
>>388066 Это тебе только кажется. Collision detection не хуй собачий, базарю. Нужно разрулить случаи: танчик отспавнился на танчике, танчике стоит на стенке (оголённый штаб, становишься рядом, второй берёт лопату), танчики едут навстречу, танчик упёрся в другой, который стоит или движется перпендикулярно. Ещё заморочка с поворотами - они резко перемещают на небольшое расстояние, и это нужно подружить с коллизиями.
Пока это сделаешь, выдрочишь AABB алгоритмы на пять.
>>388091 Сначала пилишь максимально быстро чтобы решало конкретную задачу любой ценой: 1. выделил подзадачу 2. загуглил на стековерфлоу готовое 3. нашел -> ура, взял следующую 4. не нашел -> разбил на подзадачи и пошел в п1
Потом смотришь на получившееся говно и переписываешь чтобы работало пиздато и тебе нравился код. (тут уже дуплишь теорию, когда надо, дрочишь на синтаксический сахар итп)
>>388098 > переписываешь чтобы работало пиздато > и тебе нравился код > тут уже дуплишь теорию, когда надо, дрочишь на синтаксический сахар итп Годно, благодарю
Я для себя нашёл хороший способ изучения новых ЯП и увеличения знаний. Просто беру какую либо уже написанную программу/сервис/утилиту и не глядя на реализацию пытаюсь ещё повторить. После окончательного запила сверяю свой код с эталонным. Помогает изучить новый яп на практике и проверить насколько ты сам можешь рождать алгоритмы, похожие или нет на уже опробованные.
Как пример я изучил питон реализовав сокращалку ссылок а-ля битли без использования крутых БД, на файлах
Каждый раз вижу протухший SICP или ещё какое говно родом из 80-х и во мне рождается ярость.
Я понимаю, что наши макаки не знают ничего кроме древних книг, которые перевели на русский, но почему нигде не упоминаются те же "Touch of Class", "Concepts, Techiques and Models of Computer Programming", "Introduction to Computer Science and Programmming Using Python" и прочее?
А потом получаем на выходе людей, которые дрочат треугольник Паскаля, но не понимают как код писать.
>>388181 > которые перевели на русский Это первая, и основная проблема. Мой уровень знания английского, как и у большинства людей, подойдёт лишь для трёпа в онлайн игре, но уж точно не для чтения "технических" тестов.
>>388367 Наоборот, переход с документации на гугл это прогресс, производительность значительно повышается. Так что или решай гуглом, или возвращайся в пещеру.
>>388373 > переход с документации на гугл это прогресс У меня полыхает от этого факта. Никакой разработки ПО оффлайн, так и дебил может понагуглить и говно сварганить
>>387770 Забей на Java. Учить Java после C# - все равно, что учить C после C++ или Turbo Pascal после Delphi. Разве что ты собираешься писать под Android. Хочешь знать C# - читай Троелсена, там есть и про оконные приложения на WPF, и про базы данных, и про сайты/веб-приложения. Если есть вопросы - см. в MSDN. Обязательно прочти Роберта Мартина, про рефакторинг, юнит-тесты и вообще гибкую разработку (AGILE). Перед этим желательно изучить паттерны по GoF или другим книгам. По алгоритмам рекомендую Никлауса Вирта "Алгоритмы и структуры данных". Когда осилишь, можешь попробовать перейти к SICP и Кнуту. Изучай в совершенстве C#, LINQ, yield/async/await, сериализацию, это все, чтобы от зубов отскакивало. И все основные библиотеки/фреймворки - WPF, ADO.NET Entity Framework, ASP.NET, WCF. Когда освоишь C# - попробуй F#, это упрощенный вариант Haskell для платформы .NET. Можно изучить паттерн матчинг, монады и другие концепции функционального программирования. Некоторые, вроде лямбд, есть и в C#. Скриптопараша не нужна, все эти PHP/Perl/Python/Ruby для детей и быдлокодеров. Единственное, нужно знать JavaScript и желательно Smalltalk для лучшего понимания ООП (например, почему в C++ оно неполноценное). Местные борщееды не любят байтоебов, однако же советую изучить C и ассемблер. Просто чтобы знать устройство компьютера, как работают твои программы. Со знанием ассемблера и ФП тебе, возможно, захочется написать компилятор для своего языка, тогда читай "книгу дракона" Ахо. AST, грамматики, LEXX/YACC и т.д. Из математики - достаточно обычной вузовской программы (матан, статистика, теория вероятностей, аналитическая геометрия, матрицы, графы, множества, исчисление предикатов, численные методы и методы оптимизации) + теория категорий, которую в рашкованских вузах не изучают.
>>388499 > приложения на WPF > упрощенный вариант Haskell > PHP/Perl/Python/Ruby для детей и быдлокодеров > Единственное, нужно знать JavaScript и желательно Smalltalk > для лучшего понимания ООП > например, почему в C++ оно неполноценное > советую изучить C и ассемблер > захочется написать компилятор для своего языка Ну просто 10/10, best advice evAr
Ораклорабство оно такое, что почти не ощущается. Любая ос, куча сторонних библиотек и фреймворков, куча сторонних IDE, открытые исходники.. Раньше даже была куча реализаций ява-машины, но потом померли за ненужностью. Хотя вот дальвик гугловский живет, несмотря на анальные притязания ораклогосподина.
>>388686 У меня нет столько денег, чтобы 20к за IDE отвалить, 10к за ОС, и еще постоянно башлять за обновления. За эти деньги можно Mac преобрести, с бесплатной ОС и IDE, причем на порядок качественней
>>388795 > эта ос уже даже производителем пять лет не поддерживается? А хуле её поддерживать, это ж не штаны, которые спадают и надо поддерживать. И при чем тут производитель? Ты, ебанько, автомобиль, холодильник, телевизор и т.д. и т.п. тоже выкидываешь на помойку когда производитель прекращает производство?
>>388813 В случае с холодильником, если производитель или еще кто левый выпускает новую модель, от них никто не ожидает совместимости деталей и прошивок с холодильником десятилетней давности. Так же и с windows xp - ты можешь ей пользоваться хоть еще 50 лет, но не ожидай, что когда кто-то пишет новый софт/делает новый процессор/что еще, он будет заботиться о их работоспособности на говне мамонта.
>>388846 > комплексы ебаные по поводу гугления чужого кода > мимогуманитарий Понимаешь, манечка. Технарь - это работающий механизм, который должен уметь что-либо делать, а гуманитарий лишь сраный хранитель БД, человек-флека, которая без технаря, нахуй никому не сдалась. Иди вызубри тонну какого-нибудь говна, перескажи, а потом забудь.
>>389021 Посмотреть как что-то сделано - это самый быстрый и простой способ узнать как это что-то делать (или даже как лучше не делать и почему). При чем тут зубрение?
>>389160 Если задача сложная/комплексная, а чужой код более-менее годный - да. Получится в разы быстрее разобраться. Кроме того, обычно же не читаешь всю кодобазу, а смотришь только что тебе надо.
>>389160 > ЧИТАТЬ ЧУЖОЙ КОД? Есть мнение, что это утверждение очередная говняшка из ПРОГРАММИСТСКОГО ФОЛЬКЛОРА. Вот допустим я утверждаю: ЧТЕНИЕ ЧУЖОГО КОДА - НЕВЕРОЯТНО БЕССМЫСЛЕННАЯ И БЕСПОЛЕЗНАЯ ТРАТА ВРЕМЕНИ Что можешь возразить по этому поводу, кроме > Ну как же так.. ко-ко-ко чпок-чпок-чпок ?
>>388464 Хуле ж тогда с разработки своего языка программирования не начать? С нуля так с нуля ёбана. Ощущение, что ОП, блядь, собрался заново придумать все в мире велосипеды и костыли вместо того, чтобы решать поставленную задачу. Тебе, по сути, дан аппарат в виде уже готового кода. Бери его, пользуйся, разбирай, дорабатывай, пиши свой. Нет, не хочу, хочу написать свой велосипед. Нахуя тогда вообще книги читать? Чем этот твой кот с примерами, разжеванный, в книге, принципиально отличается от кота, взятого с какого-то стороннего сайта и разжеванного там же? В чем разница, блядь? Дидактический эффект другой или что, я нихуя понять не могу? Я хуею от системы нашего образования. Ни в школе, ни в шараге этого ОПа-долбоеба не научили даже учиться, зато голова каким-то говном забита.
>>389481 > Я хуею от системы нашего образования > не научили даже учиться В шараге, ничему не учили, а ставили только за деньги. А в школе всем было похуй, и учителям и ученикам
>>389539 >>389785 Судя по тому, что ты нихуя не умеешь, кроме как выполнять задачки по книжке, не можешь понять, что тебе дальше делать и куда развиваться, а хочешь только, чтобы тебя и дальше водили за ручку по заданиям, тыкая носом в нужный момент, упущение довольно серьезное. А выход, анон, только один: если ты не можешь ходить своими ногами, то тебе нужно учиться ходить своими ногами, т.к. других ног у тебя уже никогда не будет. То есть, если ты не умеешь учиться самостоятельно, то у тебя нет другого выхода, кроме как научиться учиться. Возможно, тебе стоит пойти на хорошие курсы, на которых тебе привьют любовь к систематическим занятиям и научат самообучению. Возможно, тебе стоит прибиться куда-нибудь джуном, где, конечно, охуеют от того, что ты нихуя не умеешь, но ты получишь представление о том, что от тебя как от человека и программиста требуется. А иначе так и будешь всю жизнь хромой на голову.
Я, кстати, наоборот, немогу просто брать и читать книги по программированию. Сука в сон клонит после пары глав и руки ноют после набивания страницы ненужного кода с примеров. Лучше выбрать себе интересную задачу, молча её делать, а где не знаешь - то тогда лезть в книгу или гугл. Я, после небольшого введения в язык, начал сразу писать онлайн игоря. И тут же пришли и понимания сетей, сокетов, SQL, дизайна, шаблонов, компоновки, графики, геометрии и т.д. >парсер, игрушку, mp3 плеер, текстовый редактор, клиент для сайта, чатик с сервером, всё это я реализовал в своём игоре (ну кроме клиента для сайта, что это за хуйня вообще?) без всяких книг. Просто берешь и думаешь, что должна делать эта штука и мысленно разбиваешь на алгоритмы и реализуешь. ИМХО 95% всех алгоритмов состоят из If и GoTo
>>389881 >ИМХО 95% всех алгоритмов состоят из If и GoTo Просто jmp. Добро пожаловать в увлекательный мир машин Тьюринга и прочего Брейнфака. Все эти парадигмы погромирования суть есть синтаксический сахар на этим. Но ты почему-то пишешь вовсе не на асме, не так ли?
>>389995 Но ведь эксперт - человек обладающий опытом - с этим ты надеюсь спорить не будешь? Так что все сходится. Тебе может и от ФУНКЦИОНАЛ бомбит, болезненный?
>>389876 > чтобы тебя и дальше водили за ручку по заданиям Нет, мне должны объяснить основные типы, массивы и т.д., а потом выбросить в бездну ООП > ты не умеешь учиться самостоятельно Беру учебник, учу. В чем проблема? А проблема в том что нужен учебник и задачник, которые идут в ногу, а не груда теории
>>389481 > хочу написать свой велосипед Не потому что это правильно или нет, а потому-что хочу научиться > пользуйся, разбирай, дорабатывай, пиши свой МАНУАЛЫ НА РУССКОМ БЛЯТЬ, ХОТЯ-БЫ КАКАЯ-НИБУДЬ ДОКУМЕНТАЦИЯ
Вот возьмем тот же ебанный Питон. Либо жри Diveintopython3 in english, либо наверни Лутца, с его огромной книгой Изучаем Python полной теории, практика в следующей, а еще есть справочник... В общем, от гумманитарности данного метода изучения тошнит
Еще в школе на поверхностном уровне преподавали Pascal, а именно - вывод на экран решений примитивных формул (с заранее инициализированными переменными). Не успел я поступить в "шарагу", так мне там сразу всучили Visual Studio 2010, и сказали, теперь ты будешь программировать на C#. И в течение полутора лет, без особого желания, писал примитивнейшие консольные программки, для решения элементарных задачек (Алгоритм Евклида, Числа Фибоначчи, etc.), на этот раз с вводом с клавиатуры. А так-же делал пару примитивных проектов на Windows Forms, для обучения детей %науканейм% с ограниченными возможностями, а именно с нарушениями зрения.
После подобных истязаний над моим мозгом, сложилось далеко не приятное отношение к программированию, которое я всё-же смог перебороть. Окончательно поняв, что если сам не научишься, то никто не научит, решил заняться самообразованием. Поблуждав по просторам Рунета, набрел на пасту Высшее образование в IT своими руками, мне она показалась вполне убедительной и серьезной, и я начал не спеша обучаться по модулям изложенной в ней. SICP было решено отложить до лучших времен. Учебник Дейтелов по Си был изучен до конца 6 главы без особых трудностей, легко и не принужденно, за месяц.
Итак, следующим этапом было изучение Java, а так-же написание более серьезных проектов, оконных приложений, примитивных серверных программок, и конечно же игрушек. Вот тут-то у меня и полыхнуло. Во всех учебниках, сплошные сравнения C/C++ и Java, СРЕДУВЫБЕРЕТЕСАМИ, и всё в этом духе. Я прошел не маленький путь и хотел бы скорее сформировать себе базу знаний. Я хочу знать, как написать : парсер, игрушку, mp3 плеер, текстовый редактор, клиент для сайта, чатик с сервером, но я не знаю откуда мне почерпнуть эти знания!
Так вот теперь о той самой проблеме. Почему знания обрываются на консолечке и формулках? Дальше стоп. Просто конец. Похлопали по плечу и сказали, теперь ты официально можешь бухать каждый 256 день в году, ибо ты теперь ПРОГРОММИСТ! Нет, сука, я быдлокодер, который нихуя не знает, но бешено хочет и постоянно бьется головой в стену.
Подскажи мне Анон, что делать дальше? Какую книгу мне взять, чтобы всё не закончилось на том-же самом месте?