Общие знания программирования?

Я совершенно новичок в программировании - мой интерес заключается в PHP и MySql для создания динамического веб-приложения для целей управления военными бандами. то есть общая информация и социальные сети для участников + добавленная функциональность для эффективной работы группы управления.

ОК, так что вопрос - как я больше узнаю о PHP, есть термины, которые я не понимаю, которые должны исходить из общей основы знакомства между всеми языками, т.е. "переполнение стека" кажется очевидным - "использование слишком многие рекурсивные функции могут разбить стек" - это другое.

Так есть книга (возможно, праймер) о программировании вообще, которая позволяет кому-то вроде меня лучше понять, что все это значит?

Имейте в виду, что мне 57 лет (молодой), и я действительно начинаю.

Стив

Ответ 1

Wikipedia, вероятно, ваш лучший ресурс для общей информации о терминологии программирования. Большая часть их сообщества перекрывается с сообществом разработчиков, поэтому связанные с технологией страницы, как правило, очень точные, образовательные и обновленные. Смотрите их страницы на переполнение стека и recursion в качестве примеров.

Кроме того, PHP.net - лучшее место, чтобы узнать о PHP, но пропустите главную страницу и перейдите прямо к учебнику, если вы только начинаете.

Наконец, я очень рекомендую книгу Head First SQL для изучения баз данных. Все примеры в книге используют MySQL. Вся серия Head First великолепна. Я слышал, что у них тоже есть PHP-книга, но я ее не читал.

Обновление: Head First PHP и MySQL теперь доступен.

Ответ 2

Похоже, что вам не хватает некоторых основ, охваченных программой компьютерных наук. Чтобы не волноваться, информация легко доступна. Вам не нужно платить кому-то, чтобы научить его (хотя иногда это приятно). Wikipedia компьютерная наука не так уж плохо для выделения основных областей, с которыми вы, вероятно, столкнетесь. Темы, которые хорошо знать:

  • Дискретная математика (помогает понять формальную логику, алгоритмическую сложность, вероятность)
  • Основы программирования (такие звуки, как вы, возможно, хорошо начинаете с них)
  • Структуры данных (Храните и управляйте вашими данными соответствующим образом для задачи.Например, зачем использовать хэш-таблицу в сравнении с массивом по сравнению с связанным списком? Из вашего списка стек в stackoverflow является структурой данных.)
  • Алгоритмы (Манипулируйте ваши структуры данных наиболее эффективным способом или, по крайней мере, знаете стоимость. Из вашего списка использование слишком многих рекурсивных функций для "разбивания стека" является алгоритмическим выбором.)
  • Архитектура компьютера (понимайте, что на самом деле происходит с вашим кодом после его компиляции или интерпретации.)
  • Сети (узнайте протоколы, что происходит с вашим программным обеспечением, когда он хочет поговорить с машиной, на которой он не работает)
  • Сравнительные языки программирования (PHP - это всего лишь один способ кошки кошки. Узнайте, почему его дизайнеры приняли решения, которые они сделали, и получили доступ к альтернативам.)
  • Операционные системы (знание того, как аппаратное обеспечение взаимодействует с вашим программным обеспечением, является хорошим, но, вероятно, более важно понять, как он взаимодействует с его операционной системой. Файловые системы, управление процессами, управление памятью, безопасность)
  • Формальные языки/Теория вычислений (Модели вычислений, грамматики [используются для проверки и интерпретации кода], пределы вычислений. Обычно не используются изо дня в день в качестве инженера-программиста. Затем регулярные выражения, наконец, имели смысл после этого класса.)
  • Методика разработки программного обеспечения и жизненного цикла (преднамеренное проектирование, кодирование, тестирование, выпуск и обслуживание вашего программного обеспечения.)

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

Стэнфорд предлагает набор классов онлайн бесплатно: http://see.stanford.edu/see/courses.aspx

MIT позволяет загружать учебные материалы бесплатно: http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/

Отметьте youtube для лекций, посвященных информатике.

Если вы хотите что-то менее ориентированное на учебу, быстрый поиск на Amazon с любой из вышеперечисленных тем даст вам результаты с отзывами пользователей.

Очевидно, что в совокупности этот список не является введением. Я бы начал с темы, которая звучит интересно и прыгать.

Ответ 4

Чтобы получить хорошее представление о внутренней работе компьютерного оборудования и программного обеспечения в очень читаемом (не слишком техническом) образе, я могу порекомендовать Code, The Скрытый язык компьютерного оборудования и программного обеспечения Чарльзом Петцольдом.

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

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

Есть лучшие книги, если вы ищете введение в программирование PHP/MySQL, но если вам нужны более общие знания о том, как работает программное обеспечение и аппаратное обеспечение, Code отлично работает.

Ответ 5

Я не уверен, есть ли там одна книга, которая научит вас "Основы программирования". Единственный способ узнать все эти вещи - это просто практика. Получите учебник по PHP и начните строить вещи. Всегда держите свой ум открытым для изучения новых вещей. Когда вы найдете лучший способ сделать что-то, чем вероятный очень неэффективный взлом, который вы собрали из неполных знаний, затем используйте его и изучите его и интегрируйте в свои знания... через несколько лет вы станете золотыми.

Ответ 6

Прошло пару лет с тех пор, как я его прочитал, но Программирование PHP неплохо выполнило концепцию фундаментального программирования на этом пути. Это не помогло понять более сложные концепции, такие как MVC (что редко встречается в мире PHP), это похоже на arrays, функции, обратные вызовы, classes и т.д., где это описано.

Ответ 7

Мне нравится комментарий Корбина, но я буду придерживаться противоположного подхода.

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

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

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

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

И, по мере того, как вы продвигаетесь, если вы действительно наслаждаетесь этой работой (вы, возможно, не можете), поле становится таким же широким, как вы хотите.

Сегодня сегодняшние вычисления похожи на "Home Depot". Вы можете это сделать, мы можем помочь. Для большинства тем есть сотни форумов и тысячи страниц документации, книг, блогов и дискуссий.

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

Вы будете ослеплены параметрами, методами, шаблонами, фреймворками и т.д. Не только существует "более чем один способ сделать это", есть сотни способов "сделать это". Игнорируйте сотни и сосредоточьтесь на "выполнении", но для вас это кажется естественным.

И не позволяйте yahoo в своих башнях из слоновой кости poo-poo ваши вопросы, или уничтожить ваш дизайн. Если их имя не "Бэббидж", или они режут механизмы для артиллерийских компьютеров еще во Второй мировой войне, все мы стоим на плечах гигантов, и мы все начали где-то. Честную критику всегда следует приветствовать, но некоторые люди, похоже, не могут предложить это и вместо этого прибегают к принижению.

Я восхищаюсь приложениями, которые я видел "взломанными", "забитыми" и "OMG'd" вместе, что люди получают реальное, практическое использование - и это настоящее имя игры.

Удачи вам в пути. Успех во всех ваших начинаниях.

Ответ 8

Обучение довольно индивидуальное, поэтому ваш пробег может отличаться, но я считаю, что задавать вопросы на публичных форумах очень полезно. Если вы не знаете много темы, легко спросить неправильные вопросы или как-то сосредоточиться на неправильных вещах. Как правило, непосредственная обратная связь с кем-то более опытным образом помогает в этом. PHP благословлен тем, что у него очень большое и дружелюбное сообщество. Кроме того, многие его пользователи - любители или неопытные программисты, а это значит, что есть культура, задающая основные вопросы о терминологии и тому подобное. Я предлагаю вам использовать этот источник.

Одно место для начала может быть sitepoint, но есть и другие места

Ответ 9

Если вы скорее визуальный ученик, я бы посмотрел некоторые видеоуроки. Начните с таких вещей, как базовые концепции программирования, а затем перейдите к названиям, таким как Up и Running с PHP и Advanced PHP и MySQL. Тогда я бы предложил структуру MVC, такую ​​как codeigniter.

Вы можете найти отличные видеоуроки на Lynda.com или Pluralsight.com и в нескольких других местах.