Самообучение программированию.

Добрый день.

Давайте знакомиться. Меня зовут code_complete. Я живу в Сиэтле.
Я решил стать программистом по нескольким причинам. Так как работа отнимает много времени, занимаюсь по вечерам.
Начал было с СИ, но трудно пошло. Тогда решил Python освоить.
Купил книжку python for kids и еще занимаюсь на codeacademy.com . Хотя и курсы по 2й версии питона, а книга по третей.
Как освою питон, снова возьмусь за СИ. Так как хочется стать хорошим кодером и знать, что такое указатели и управлние памятью.

В будущем планирую изучать алгоритмы, базы данных, дискретную математику. Хотелось бы после нового года начать изучать Java.
Надеюсь успею освоить основы программирования к новому году.

В США я 2 года.

Буду рад познакомиться с единомышленниками из мира IT.

Нашел неплохой сайт meetup там полно тусовок кодеров. Но я пока считаю, что мало освоил еще. попозже может куда-нибудь схожу.

Люблю альпинизм на уровне хайкинга одна-двухдневнего и кататься на сноуборде.

Спасибо за внимание.

2 лайка

Ох, какие в Вашей голове разброд и шатание…
Учиться программированию - это не выучить синтаксис какого-то языка. В первую очередь как раз алгоритмы, дискретка, формальная логика и т.п. Если, конечно, хотите стать серьёзным высокооплачиваемым профессионалом. Если же хочется просто “влиться в тусовку”, то про “c” или “cpp” лучше и не задумываться - время истратите, а ничего реального не получите. Времена, когда можно было по книжке почитать про си, а затем на коленке слабать за пару недель что-то, от чего все ахнут, давненько канули в лету. И работодателям не нужен насильник или джавист, который не знает алгоритмов.
Может Вы сначала поконкретнее разберётесь с целями?

3 лайка

Да, а мы разобраться поможем)

1 лайк

Как преподаватель программирования на первом курсе программистского факультета, могу сказать, что знание синтаксиса какого-либо языка программирования вам мало поможет. Действительно начинать следует с алгоритмов.
Вот ссылка на сайт с материалами лекций, которые у нас читаются в первом семестре в рамках вводного курса по программированию. В первой лекции есть несколько слайдов с литератерой по теме. Большинство книг есть в инете в свободном доступе.
http://algcourse.cs.msu.su/?page_id=30

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

12 лайков

Еще могу вот такой сайт порекомендовать.
http://acmp.ru/?main=tasks

Это сервер на котором можно тренироваться решать задачи по программированию. Отправляете код, на сервере он компилируется и запускается на различных тестах, соответственно получаете ответ о работоспособности вашей программы. Дальше можете тренироваться и отптимизировать программу по объему используемой памяти например, или по размеру кода. Там есть рейтинг, соответственно можете получить представление о своем уровне. Ресурс бесплатный.

Это аналогичный сайт но с задачами более продвинутого уровня
http://acm.timus.ru/problemset.aspx

8 лайков

в свою очередь чтобы не убивать в авторе надежду и стремление, отмечу

  • учусь сам года 3
  • работаю все это время - фриланс, живу на эти деньги
  • “алгоритмы” пока не пригодились, я их толком и не знаю
  • это веб
  • хватит ли этого для того чтобы зарабатывать серьезное бабло в штатах? вряд ли
  • хватит ли этого чтобы зарабатывать обычное бабло в штатах? скорее всего да, судя по многим проектам

из предпосылок

  • спектрум в детстве, “математический склад ума” и базовое общение с фортранами, паскалями и т.п.
1 лайк

В инете можно нагуглить массу задач, которые предлагаются программистам на собеседовании. Берете задачку, выключаете инет, засекаете время. Если за 15-20 минут осилили, то можете пытаться проходить собеседование в американских конторах. Кстати задача на программирование будет одна-две. Остальные будут из серии подумать и решить задачку на школьной городской олимпиаде по математике. Пузырьковую сортировку надо, например, написать на листе за 30 секунд.
Не знаю, что Вы подразумеваете под веб. Клепать стандартные сайты из шаблонов - это не программирование в принципе. Вряд ли такие навыки сподобят работодателя делать h1b.

под веб я подразумеваю решение задач клиентского бизнеса (“веб” это собирательный образ, из различных обсуждений, для ■■■■■кодерства), так вышло что на этапе entry level business, а может и дальше, народ использует готовые решения, а не пишет велосипеды, кастомизация таких решений - то чем я занимаюсь сейчас, “клепать сайтики” не умею и не имею желания. Пузырьковая сортировка не пригодилась ни разу.
Речь о h1b не идет, мы вроде здесь все адекватные люди, парень уже в США, я говорил о том что этим можно зарабатывать.

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

1 лайк

Я Вас видимо просто не так поняла. Восприняла Ваш пост как о вопрос о том уровне, который требуется для программиста, чтобы получить рабочую визу в США. Через мелкие компании и проекты это сложно сделать.
Если Вы уже там и имеете возможность законно работать, то да облагораживание инет-пространства - это вполне достойный заработок.

Не согласен. Можно зарабатывать upto 200k(это серьезное бабло?) в год без особого знания теории и алгоритмов. В мире web точно. И полно примеров. Вот хорошее видео на эту тему.

1 лайк

Учиться программированию - это не выучить синтаксис какого-то языка

Согласен на 100%

В первую очередь как раз алгоритмы, дискретка, формальная логика и т.п.

Не согласен. По крайней мере это далеко не единственный путь и подходит не всем.

ps Вообще на эту тему уже много дебатов было на этом форуме.

Начал было с СИ, но трудно пошло. Тогда решил Python освоить.
Хотелось бы после нового года начать изучать Java.

А в чем смысл такого метания? Вы ищете что вам понравится или что? Имхо на первом этапе лучше взяться за один язык(для этого определить область куда хотите попасть) и учить основы на нем. Потом найти работу фулл тайм. И уже после какого-то времени начать смотреть на другие языки и разные парадигмы. Многие рекомендуют учить новый язык раз в год для саморазвития(это написано например в книге Progmatic programmer очень рекомендую)

ps В США вообще со всем этим легче в 100 раз.

2 лайка

Доброе утро.
Спасибо за ответы.

Проясню ситуацию.
Про алгоритмы и онлайн курсы я знаю. По поводу синтаксиса. Вы ошибаетесь, что синтаксис знать сначала не нужно.
Очень даже нужно. Например купил я книгу Hackers Delight автор Warren, там объяснение идет с помощью математической логики. На примере программирования на СИ.

Я бы может и сам не сильно хотел изучать СИ, но онлайн курсы обучают ему. например CS50 от EDX.org

Спасибо за ссылки кстати.

Поэтому так или иначе, придется сначала основы уяснить на СИ.

Почему я перешел на Python ? Отвечаю, потому что грамматические ошибки лучше видны. И язык заставляет сразу оформлять как надо код.
Плюс сейчас в американских университетах обучают на питоне. Я прислушиваюсь к академическим курсам их методикам. Например MIT переписал SICP с LISP на Python. В интернете уже есть учебники по новому курсу в PDF. Печатная же версия пока только 2го издания по LISP.

Скачал себе советский учебник по математике за 10-11 класс, для школ с углубленным изучением математики. Там в конце комбинаторика есть. Так что этим тоже займусь.

Чем я хочу заниматься в программировании. Меня интересуют прежде всего корпоративные базы данных, системы типа Enterprize Oracle итд.
Играми и вебом заниматься не хочу.

Виза в США мне не нужна, у меня есть грин карта.

1 лайк

Есть разные случаи, есть люди которые кроме как склепать сайтик “на шаблоне” или вообще без этого извлекают и большие суммы из сети даже здесь, вне США. Но сказать человеку - не учи алгоритмы, не учи теорию, будешь подымать 200К, вот видео - я не могу :slight_smile:
Поначалу я все время сравнивал себя с “настоящими” программистами, ну типа какими знаниями и навыками они владеют, примерялся, почитав хабр понял что может по положительным качествам я и отстаю, но по отрицательным (аля прокрастинация и т.п.) я уже самый настоящий)) хотя, программирование я лично рассматриваю исключительно как инструмент, прочидеть всю жизнь в офисе (пусть и бесплатной едой и теннисным столом) решая задачи больших дядь - не мое.

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

Я не о таких говорил, а о нормальных web программистах, которым платят фиксированную зарплату за код. Знаю полно людей с поверхностными или вообще без знания теории которые зарабатывают 100-150к рублей в месяц, а это вполне приличная сумма в РФ. И пушут они нормальные web приложения и системы. Думаю есть и зарабатывающие больше, но они уже вне моего круга общения ибо не дорос наверн :slight_smile:

Но сказать человеку - не учи алгоритмы, не учи теорию, будешь подымать 200К, вот видео - я не могу

И не надо так говорить. Все это полезно и нужно. Но не обязательно для 99% web работ и не обязательно через теорию идти.

Поначалу я все время сравнивал себя с “настоящими” программистами

Многие так делают. Но факт в том что слово программист сейчас уж очень обширное. Посмотрите видео, что я скидывал если знаете английский достаточно.

Чем я хочу заниматься в программировании. Меня интересуют прежде всего корпоративные базы данных, системы типа Enterprize Oracle итд.
Играми и вебом заниматься не хочу.

Ну тогда java точно. И С пригодится. И алгоритмы со всем остальным скорее всего. Такая уж специфика.

1 лайк

Посоветую прочитать книгу Объектно Ориентированое Мышление.
Не шедевр, но возможно поможет поставить мозги на место или хотя бы даст представление, с чем на самом деле придется иметь дело. Для чтения не обязательно знание какого-либо языка, но то малое количество примеров которое там есть - на джаве(примитив).
Знание синтаксиса и алгоритмов - это хорошо, но это больше академические знания… их полировать нужно со временем и на практике.
+книги по патернам программирования.

3 лайка

И тебе не скучать.

Нет, дружище, мы не ошибаемся. Ты просто не совсем правильно нас понял :slight_smile: Если собираешься изучать то си то питон и только затем - алгоритмы, то это означает изучение синтаксиса ради синтаксиса. Так вот такой метод “изучения” не даст ничего. Точно так же никто не советует изучать алгоритмы чисто по книжкам без языковых конкретных примеров.

Так вот об этом и стоит говорить. “Изучать си” и “изучать основы программирования с примерами на си” - две большие разницы. Большинство программистов сейчас знают по несколько языков. И “изучение” нового языка (то бишь ознакомление с синтаксисом) при наличии опыта становится задачей достаточно тривиальной.

Если именно разрабатывать СУБД энтерпрайз уровня, то С++. На джаве там очень мало написано - в оракле том же инсталлятор да клиентские утилиты.

Охохо… может я, конечно, немного узковато мыслю, но мне всё же кажется, что для MS SQL Server лучше мелкомягкие .Net-ы, для Оракла - java.