Эксперт С++
3189 / 870 / 39
Регистрация: 29.12.2008
Сообщений: 952
1

FAQ по теориям и технологиям программирования или С чего начать программировать?

06.08.2009, 10:42. Показов 78044. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1) Смогу ли я стать программистом?
Если Вы начнете и Вам понравится программирование, а также если Вы готовы прилагать усилия в этом направлении, то, скорее всего, у Вас всё получится и Вы станете программистом.

2) Какие качества нужны программисту?
  • Усидчивость – программы не пишутся быстро и далеко не всегда получаются с первого раза;
  • способность к быстрому обучению – языки меняются, требования к программам тоже, учиться придется постоянно, иначе вы не будете востребованы на рынке;
  • готовность исправить сделанное – то, что нравится вам, совсем не обязательно нравится вашему заказчику.
Необходимо быть готовым к не самым лестным отзывам, а, следовательно, к возможной переделке сделанного проекта.
Важным является знание английского языка, потому что зачастую важная информация расположена на англоязычных Интернет-ресурсах или в англоязычных книгах.
Очень желательна также хорошая математическая подготовка.
Кроме того, необходимо знать и понимать основы проектирования интерфейсов пользователя, владеть базовыми понятиями разработки архитектуры и проектных решений.
Про дополнительные знания читать здесь: Какие дополнительные знания наиболее полезны программисту?

3) Можно ли освоить программирование самостоятельно, без специального образования?
Ответы на этот вопрос есть в этих топиках:
Чтобы знать программирование, обязательно быть программистом?
Нужен ли диплом чтоб нормально устроится на работу

4) Куда поступить учиться на программиста и что для этого нужно?
Ответы на этот вопрос есть в этих топиках:
Куда поступить на програмиста и что для этого нужно?
На кого конкретно (в компьютерной сфере) стоит идти учиться

5) Какой язык, платформу и область выбрать?
Этот вопрос очень часто задается на форуме. Для начала рекомендуется посмотреть следующие топики:
Какой язык лучше учить? Подскажите люди, новичку. Какой язык выбрать? О порядке изучения. Начинающему программисту. С чего начать?

На форуме по поводу выбора языков и их актуальности ведутся дискуссии и успело накопиться очень много мнений.
Например в теме "Сравнение C++ и Pascal". Очень интересной получилась тема про изучение ассемблера.

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

В заключение, приведу мнения некоторых наших гуру, людей, мнению которых можно доверять. Вот их ответы на некоторые интересные вопросы:
С какого языка лучше всего начать изучение программирования?
Цитата Сообщение от mik-a-el
Паскаль
Цитата Сообщение от Humanoid
Паскаль
Цитата Сообщение от Vourhey
Паскаль
Цитата Сообщение от odip
Сильно зависит от конкретной ситуации и от того какую цель ты хочешь достичь.
Например если человек один год изучает язык программирования, чтобы сдать его, а потом больше ни разу в жизни не будет программировать, то можно начинать с Паскаля, С, Модулы2.
А если это колледж информатики и там готовят программистов, тогда лучше начинать с C.
Цитата Сообщение от lexus_ilia
Я считаю что лучше начинать с Pascal'я либо с C
Цитата Сообщение от Green
В рамках школьной программы Pascal, Basic. Если старше C.

На чем лучше всего писать игры?
Цитата Сообщение от mik-a-el
С++.
Цитата Сообщение от Humanoid
Си, т.к. под него есть SDK
Цитата Сообщение от Vourhey
С & С++
Цитата Сообщение от odip
Игры лучше писать на том языке, где есть поддержка нужных для игр технологий.
Игры для мобильников пишут на спец. версии Java насколько я знаю.
Игры под Windows скорее всего потребуют поддержки DirectX или OpenGL. То есть C или C++.
Цитата Сообщение от lexus_ilia
всё зависит от ситуации.
Цитата Сообщение от Green
С++, там где возможно. В остальном, как сказал odip, зависит от технологии/протокола/устройства/и т.д.

Какие области программирования/платформы/языки наиболее актуальны и востребованы?
Цитата Сообщение от mik-a-el
C++, C#, Java, SQL Server, Oracle.
Цитата Сообщение от Humanoid
Зависит от конкретного места работы... где-то C#, где-то C++, где-то Delphi, а где-то Ассемлер... однозначного ответа тут не может быть.
Цитата Сообщение от Vourhey
Актуально все. Востребованы все. От вантузятников до юниксоидов, от вэб-программистов до системщиков. Если варишь.
Цитата Сообщение от odip
Которые чаще используются, те и актуальны.
Смотря где опять же.
Цитата Сообщение от lexus_ilia
Знание Windows для программирования - это как знание "Отче наш" для верующего. На счёт остальных платформ, я думаю всё зависит от ситуации, но кроссплатформенность в программах - это очень даже неплохо.
Цитата Сообщение от Green
Актуально все. Лучше копнуть себя и ответить на вопрос, что нужно себе любимому. От туда и копать.

Неактуальный язык/платформа/область?
Цитата Сообщение от Humanoid
Brainfuck/калькулятор/(?)
Цитата Сообщение от Vourhey
Любой язык, созданный "поприкалываться". Как указано выше, пример - брэйнфак/хз/хз
Цитата Сообщение от odip
PL-1 точно не актуален
Цитата Сообщение от Green
Cмотря как актуальность мерить. Кому-то может и брейнфак актуален.


6) Прикладное, системное и Web-программирование.
Прикладное программирование [application programming] - разработка и отладка программ для конечных пользователей, например бухгалтерских, обработки текстов и т.п.
Само понятие «разработка и отладка программ» обязывает человека знать хотя бы один язык программирования Delphi, Cи++, Java и пр. Если вы с этим никогда не сталкивались, то стоит отметить, что освоить язык за пару дней фактически невозможно.
Человек, которые занимается прикладным программированием:
  • знает основы алгоритмизации и конструкции программ, то есть владеет теоретической базой программирования;
  • в совершенстве владеет языком программирования (лучше несколькими языками);
  • имеет опыт работы в этой области, уже создавал работающие программы хорошего качества.
Что хочется отметить для тех, кто хочет попробовать свои силы в этой области. Прежде всего, радует то, что прикладное программирование зачастую неплохо оплачивается. Если программа получается удачной, вы не только получите обещанную сумму, но и приобретете потенциального клиента. Как правило, если программист заказчику нравится, он не торопиться его менять.
Прикладное программирование есть процесс творческий и интересный. Вас могут попросить написать абсолютно любую программу. Это может быть учет на каком-либо производстве, создание мультимедийных дисков на определенную тему, создание поисковых систем и пр.©

Системное программирование (или программирование систем) — род деятельности, заключающийся в работе над системным программным обеспечением. Основная отличительная черта системного программирования, что его результатом является выпуск программного обеспечения, предлагающего сервисы по взаимодействию с аппаратным обеспечением (например, дефрагментация жёсткого диска), что подразумевает сильную зависимость таких программ от аппаратной части. В частности выделяют следующее:
  • программист должен учитывать специфику аппаратной части и другие свойства системы в которой функционирует программа, использовать эти свойства, например, применяя специально оптимизированный для данной архитектуры алгоритм.
  • обычно используется низкоуровневый язык программирования или такой диалект языка программирования, который
    • позволяет функционирование в окружении с ограниченным набором системных ресурсов
    • работает максимально эффективно и имеет минимальное запаздывание по времени завершения
    • имеет маленькую библиотеку времени выполнения (RTL) или не имеет её вообще
    • позволяет прямое управление (прямой доступ) к памяти и управляющей логике
    • позволяет делать ассемблерные вставки в код
    Примером таких языков служат C и C++, именно они наиболее популярны в этой области.
  • отладка программы может быть затруднена при невозможности запустить её в отладчике из-за ограничений на ресурсы, поэтому может применяться компьютерное моделирование для решения этой проблемы.
Системное программирование существенно отличается от прикладного, что обычно приводит к специализации программиста в одном из них.
Топик по теме:Работа системным программистом, вопрос актуальности

Вэб-программирование - бурно развивающийся раздел программирования, ориентированный на разработку динамических Internet приложений. Языки веб-программирования — это соответственно языки, которые в основном предназначены для работы с интернет-технологиями. Языки веб-программирования делятся на две группы: клиентские и серверные.
Как следует из названия, клиентские языки обрабатываются на стороне пользователя, а если проще — программы на клиентском языке обрабатывает браузер. Самым распространенным из клиентских языков является JavaScript, разработчиками которого является компания Netscape совместно с компанией Sun Microsystems. Другой вариант клиентского языка это, например, VBScript.
Когда пользователь дает запрос на какую-либо страницу (переходит на нее по ссылке, или вводит адрес в адресной строке своего браузера), то вызванная страница сначала обрабатывается на сервере, то есть выполняются все программы, связанные со страницой, и только потом возвращается к посетителю в виде простого HTML-документа. Но работа программ уже полностью зависима от сервера, на котором расположен сайт, и от того, какая версия того или иного языка поддерживается.
Серверные языки программирования открывают перед программистом большие просторы в деятельности, однако без предварительного груза знаний освоить довольно-таки тяжело.
Среди серверных языков программирования выделяются PHP (PHP: Hypertext Preprocessor) (www.php.net), Perl (www.perl.com), ASP.NET, SSI (Server Side Include). Для тестирования этих скриптов Вам понадобится уже побольше: сервер (www.apache.org), интерпретатор языка (можно взять на сайте производителя), ну и конечно при продуктивной работе еще и СУБД (об этом будет сказано ниже).
Топик по теме:Хочу стать веб-программистом. Что учить?

7) Что такое среда разработки?
(Интегрированная) среда разработки программного обеспечения (англ. IDE, Integrated development environment) — система программных средств, используемая программистами для разработки программного обеспечения.
Обычно среда разработки включает в себя текстовый редактор, компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Иногда также содержит средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке ПО.
В качестве примера приведу некоторые известные языки программирования и среды разработки для них:
C\C++ - Microsoft Visual C++ (входит в состав комплекта Microsoft Visual Studio, который можно взять здесь), С++ Builder (от Borland, можно найти тут), Dev-C++ (можно взять тут).
Топик по теме: В чем разница между Microsoft Visual Studio и Borland C++ Builder?
Pascal - Turbo Pascal, FreePascal, Pascal TMT, Pascal ABC, Pascal for Windows и другие.
Delphi - Delphi 7, Delphi 2009 и другие, продукты от Borland, их и многое другое можно найти здесь, Lazarus (официальный сайт разработчика).

8) Что такое процедурное программирование?
Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 40-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием «машина Тьюринга».
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании.
Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.

9) Что такое структурное программирование?
Структу́рное программи́рование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.
В соответствии с данной методологией
  1. Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
    • последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
    • ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
    • цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).
    В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
  2. Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур или функций). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.
  3. Разработка программы ведётся пошагово, методом «сверху вниз». Сначала пишется текст основной программы, в котором, вместо каждого связного логического фрагмента текста, вставляется вызов подпрограммы, которая будет выполнять этот фрагмент. Вместо настоящих, работающих подпрограмм, в программу вставляются «заглушки», которые ничего не делают. Полученная программа проверяется и отлаживается. После того, как программист убедится, что подпрограммы вызываются в правильной последовательности (то есть общая структура программы верна), подпрограммы-заглушки последовательно заменяются на реально работающие, причём разработка каждой подпрограммы ведётся тем же методом, что и основной программы. Разработка заканчивается тогда, когда не останется ни одной «затычки», которая не была бы удалена. Такая последовательность гарантирует, что на каждом этапе разработки программист одновременно имеет дело с обозримым и понятным ему множеством фрагментов, и может быть уверен, что общая структура всех более высоких уровней программы верна. При сопровождении и внесении изменений в программу выясняется, в какие именно процедуры нужно внести изменения, и они вносятся, не затрагивая части программы, непосредственно не связанные с ними. Это позволяет гарантировать, что при внесении изменений и исправлении ошибок не выйдет из строя какая-то часть программы, находящаяся в данный момент вне зоны внимания программиста.

10) Что такое ООП?
ООП - объектное ориентированое программирование, основной принцип которого заключается в том что основная еденица кода не функция как в функциональном программировании а объект. Где объект некоторая динамическая структура имеющая некоторый набор свойств.

Ключевые черты ООП хорошо известны:
  1. Первая — инкапсуляция — это определение классов — пользовательских типов данных, объединяющих своё содержимое в единый тип и реализующих некоторые операции или методы над ним. Классы обычно являются основой модульности, инкапсуляции и абстракции данных в языках ООП.
  2. Вторая ключевая черта, — наследование — есть способ определения нового типа, наследуя элементы (содержание и методы) существующего и модифицируя или расширяя их. Это способствует выражению специализации и генерализации.
  3. Третья черта, известная как полиморфизм, позволяет единообразно ссылаться на объекты различных классов (обычно внутри некоторой иерархии). Это делает классы ещё более удобными и делает программы, основанные на них, легче для расширения и поддержки.
Топик по теме: В чём особенность ООП?

11) Что такое COM?
Итак, "технология COM". Аббревиатура COM расшифровывается просто, это - Component Object Model - компонентная объектная модель. Иногда говорят и "модель COM". Сутью данной технологии является то,что программы строятся из компонент, которые состоят из объектов. Само по себе это обстоятельство не является последней новостью в области программостроения - модульная архитектура и объектно-ориентированный подход к построению программ давно являются признанными стандартами de facto. Новостью является то, что является этими компонентами и объектами - ими является непосредственно исполняемый двоичный код. Да-да, не "включаемые исходные тексты" компилируемые совместно с проектом, не "библиотеки стандартных программ", присоединяемые линкером, а непосредственно исполняемые файлы, которые никак не надо "связывать" со своим проектом - их достаточно зарегистрировать в операционной системе и они будут доступны любой программе исполняющейся на данной машине. Т.е. их использование в своей программе производится "без использования операций сборки модуля".©
Стандарт COM был разработан в 1993 году корпорацией Microsoft как основа для развития технологии OLE. Об OLE тоже необходимо сказать пару слов.
OLE (англ. Object Linking and Embedding, произносится как oh-lay [олэй]) — технология связывания и внедрения объектов в другие документы и объекты, разработанные корпорацией Майкрософт.
OLE позволяет передавать часть работы от одной программы редактирования к другой и возвращать результаты назад. Например, установленная на персональном компьютере издательская система может послать некий текст на обработку в текстовый редактор, либо некоторое изображение в редактор изображений с помощью OLE-технологии.
В 1996 году Microsoft переименовала технологию OLE (версии 2.0) в ActiveX. Были представлены элементы управления ActiveX, ActiveX документы и технология Active Scripting. Эта версия OLE в основном используется веб-дизайнерами для вставки в страницы мультимедийных данных.
Полезные ссылки по теме:
Справочник по технологии COM
Раздел на форуме, посвященный обсуждению технологий COM и OLE, решению задач и вопросов.
Исходники программ на C++, Visual C++ с примерами использования технологии COM.
Примеры программ на Pascal и Delphi для работы с технологиями СОМ, OLE, ActiveX

12) Что такое WinAPI?
Windows API (application programming interfaces) — общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Windows и Windows NT корпорации «Майкрософт». Является самым прямым способом взаимодействия приложений с Windows. Для создания программ, использующих Windows API, «Майкрософт» выпускает SDK, который называется WinSDK (Platform SDK) и содержит документацию, набор библиотек, утилит и других инструментальных средств.
Windows API — это наиболее близкий к системе способ взаимодействия с ней из прикладных программ.
Полезные ссылки по теме:
Win API FAQ
Раздел на форуме, посвященный рограммированию с использованием средств платформы Win API.

13) Что такое .NET платформа?
Microsoft .NET Framework — программная технология, предназначенная для создания как обычных программ, так и веб-приложений (в качестве платформы для разработок впервые предложена корпорацией Microsoft).
Одной из основных идей Microsoft .NET является совместимость различных служб, написанных на разных языках. Например, служба, написанная на C++ для Microsoft .NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследованный от класса, написанного на Visual Basic .NET, а исключение, созданное методом, написанным на C#, может быть перехвачено и обработано в Delphi. Каждая библиотека (сборка) в .NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок.
Мнения наших гуру по этой платформе.
Цитата Сообщение от mik-a-el
Это наше всё. Главное - избавляет от необходимости работы с множеством разнородных технологий и платформ.
Цитата Сообщение от Vourhey
Мелкомягкие хорошую штуку сделали для своей системы. Удобно. Отлично документирована.
Цитата Сообщение от odip
Сама по себе идея .NET хорошая и правильная.
Вместо зоопарка несовместимостей в WinAPI сделать единую платформу для всех ОС семейства Windows (и не только Windows).
Но вот реализация что-то хромает - приложения получаются тормознутые, наплодили кучу несовместимых версий этого .NET: 1.0, 1.1, 2.0, 3.0, 3.5, 4.0, ...
Цитата Сообщение от Green
Хорошая затея. Актуальна для прикладного софта. Наличие большого кол-ва дизайнеров и поддержки их расширения ускоряет процесс разработки в разы, оставляя больше времени на реализацию бизнес модели.


14) Что такое базы данных? Что такое СУБД?
База данных (БД) — информационная модель, позволяющая в упорядоченном виде хранить данные о группе объектов с одинаковым набором свойств или поименованную совокупность структурированных данных (поименованная совокупность структурированных данных предметной области).
«Базой данных» часто упрощённо или ошибочно называют системы управления базами данных (СУБД). Необходимо различать набор данных (собственно БД) и программное обеспечение, предназначенное для организации и ведения базы данных (СУБД).
Проще говоря, СУБД - это специализированная программа (чаще комплекс программ), предназначенная для организации и ведения базы данных.

15) Необходимые информационные ресурсы.
Помимо www.google.com, который поможет Вам найти ответы на большинство вопросов, обратите внимание на следующие ресурсы в Сети:
www.cyberguru.ru - полезнейший сайт, на нем можно найти всю интересующую Вас информацию.
msdn.microsoft.com - Microsoft Developer Network, подразделение компании Майкрософт, ответственное за взаимодействие фирмы с разработчиками. Тут можно найти всю справочную информацию по их продуктам и примеры кода.
Программисты Delphi также могут найти в Интернете большую базу знаний по языку – Delphi Russian Knowledge Base (DRKB). Она поможет решить многие вопросы.

16) Какую литературу выбрать?
В изучении языка поможет правильный выбор литературы. Опытные форумчане уже набросали списки хорошей литературы практически по любому языку. Вот топики по самым популярным:
C/С++ FAQ
Литература Delphi
Лучший сборник книг в электронном виде по Ассемблеру
Литература по c#
Литература по Win API
Литература .NET
Статьи и учебники Pascal, справочные материалы Pascal.
Кроме того, на форуме очень полный раздел по Visual Basic, можно просто почитать топики, они очень полные.

17) Как развить логику программирования?
Ответ на этот вопрос Вы найдете в топике: Логика программирования

18) Как оттачивать знания и упражняться?
Для этого нужно постоянно практиковаться. Отличной практикой станет помощь таким же программистам в их вопросах в рамках данного форума. Помни, помогая другим, развиваешь себя.
Топик по теме:С чего продолжить...

19) Дайте совет новичку…
Цитата Сообщение от mik-a-el
Читайте документацию и слушайтесь родителей
Цитата Сообщение от odip
Не лениться читать документацию ДО, а не ПОСЛЕ.
Не считать, что самый умный и все знаешь.
Не изобретать велосипед.
Цитата Сообщение от lexus_ilia
Советую прежде чем писать какие-либо серъёзные проекты и вообще прежде чем придумывать свои программы или писать за деньги, ну короче прежде чем серъёзно начать заниматься программированием, подготовить себе хорошую теоретическую базу.
Цитата Сообщение от Green
RTFM прежде всего.
Цитата Сообщение от Vourhey
Хватит читать бред, который мы тут написали и иди в магазин за книжкой.
75
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2009, 10:42
Ответы с готовыми решениями:

С чего начать программировать на С++
Добрый день. Понимаете, загорелась в одном месте сажа у меня. Понял, что хочу кодить. Я ни разу не...

С чего начать программировать?
Извините за информация которая вам может показаться не нужной(не интересной) У меня есть цель...

С чего начать программировать на C++
С чего начать кодить на C+

С чего лучше начать программировать?
Помогите, я не знаю с чего начать программировать? :eek:

0
06.08.2009, 10:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2009, 10:42
Помогаю со студенческими работами здесь

С чего начать учиться программировать на C#?
Здравствуйте, хотелось бы начать учиться программировать на с# так, как это самый оптимальный для...

С чего начать программировать на Мак ОС?
Добрый день, Мне нужно выучиться программировать на Мак. Но проблема в том что у меня дома нету...

С чего все же начать учиться программировать?
Хочу научиться программировать. Подскажите с чего начать.

Как вернуть веру в программирования и начать нормально программировать?
Добрый день, Мне 25 лет, я сейчас работаю в гос. структуре получаю когда как но в районе 500$ в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru