Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   IT, компьютеры, электроника (http://www.trainsim.ru/forum/forumdisplay.php?f=32)
-   -   Языки - с чего начать новичку и почему (http://www.trainsim.ru/forum/showthread.php?t=18008)

TRam_ 17.12.2016 15:00

Языки - с чего начать новичку и почему
 
[QUOTE]Книжка мне понравилась и все тут.[/QUOTE]Переучиваться с Бейсика на остальные языки программирования тяжелее всего. Один из известных программистов когда-то писал "кто учился программировать на бейсике - тот потерян для программирования".

[QUOTE]Это свойства, а не код. А мне нужен чистый код. Чтобы после каждого действия я мог видеть изменения в коде.[/QUOTE]Ну вот в VB такого просто нет. Есть библиотеки, в которых код, исполняющий создание и управление формой, уже создан, а тебе предоставляется возможность только настроить "параметры окна" и "функции, обрабатывающие такое-то и такое-то взаимодействие". И, как я понял, просмотреть именно на применение параметров тут нельзя (в отличии от многих других сред визуального программирования типа Делфи или VisualStudio), но меняет это не так много (так что если просто хочешь посмотреть на примеры, проще это сделать тут - [url]https://ru.wikipedia.org/wiki/Visual_Basic[/url]). Код обработчиков тебе всё равно надо написать самому, он будет иметь не много общего по сравнению с "установкой начальных параметров". А учиться "как писать код" лучше всего именно на консольном приложении, без ООП.

[QUOTE]VB от просто BASICA я так понимаю только визуализацией отличается[/QUOTE]нет. В простом бэйские нет объектов ([url]https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5[/url]), а VB они есть, и ими являются все элементы интерфейса...

сандро 17.12.2016 18:24

1. Кто сказал, что мне понравится программирование? И из меня вообще получится хоть какой то программист. Это процесс долгий. Может помучаюсь с книжкой и брошу это занятие.
2. Я все понял, спасибо за подсказки.
3. Что такое объекты? Объясните простым языком человеку, который не знает что такое программирование?
4. Популярный тест "точка по кругу" или "таблицы шульте", можно сделать в VB без проблем.

TRam_ 17.12.2016 19:01

[QUOTE]Что такое объекты? Объясните простым языком человеку, который не знает что такое программирование?[/QUOTE]Объекты (экземпляры классов) - элементы программы, которые могут проводить над собой некие заложенные в них действия согласно кода программы. Например, объектом является кнопка на форме, кнопке можно задать новую надпись или задать новые координаты, тем самым переместив её на экране.

[QUOTE]Популярный тест "точка по кругу" или "таблицы шульте", можно сделать в VB без проблем[/QUOTE]Если сможешь найти элемент, который выглядит как квадрат и который можно вращать, а также разберёшься как подключить периодические изменения цвета к таймеру, то может быть и да. Но вот начинать надо не с этого. Для начала попробуй сделать хотя бы кнопку, которая бы двигала другие кнопки по экрану или меняла в них надписи (или цвет заливки).

сандро 17.12.2016 20:11

Я та почитал что такое объектно-ориентированное программирование и ничего не понял. Как я вижу программирование? Разрабатываем алгоритм. Допустим, при нажатии на кнопку "p" (у каждой клавиши есть сэкн код или как там его) даем команду винде на воспроизведение какого-то звука с определенной громкостью, с определенной частотой, при нажатии на клавишу "+" частота звука допустим будет увеличиваться на 11025 ГЦ, при нажатии "-" частота будет падать на тоже значение, при нажатии на клавишу "0" звук прекратит проигрываться. Потом это хозяйство компилируется.
Открываем викимапию: Методы
Процедуры и функции, связанные с классом. Они определяют действия, которые можно выполнять над объектом такого типа, и которые сам объект может выполнять.

Классы могут наследоваться друг от друга. Класс-потомок получает все поля и методы класса-родителя, но может дополнять их собственными либо переопределять уже имеющиеся. Большинство языков программирования поддерживает только единичное наследование (класс может иметь только один класс-родитель), лишь в некоторых допускается множественное наследование — порождение класса от двух или более классов-родителей. Множественное наследование создаёт целый ряд проблем, как логических, так и чисто реализационных, поэтому в полном объёме его поддержка не распространена. Вместо этого в 1990-е годы появилось и стало активно вводиться в объектно-ориентированные языки понятие интерфейса. Интерфейс — это класс без полей и без реализации, включающий только заголовки методов. Если некий класс наследует (или, как говорят, реализует) интерфейс, он должен реализовать все входящие в него методы. Использование интерфейсов предоставляет относительно дешёвую альтернативу множественному наследованию.

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

Инкапсуляция обеспечивается следующими средствами:

Или: Появление в ООП отдельного понятия класса закономерно вытекает из желания иметь множество объектов со сходным поведением. Класс в ООП — это в чистом виде абстрактный тип данных, создаваемый программистом. С этой точки зрения объекты являются значениями данного абстрактного типа, а определение класса задаёт внутреннюю структуру значений и набор операций, которые над этими значениями могут быть выполнены. Желательность иерархии классов (а значит, наследования) вытекает из требований к повторному использованию кода — если несколько классов имеют сходное поведение, нет смысла дублировать их описание, лучше выделить общую часть в общий родительский класс, а в описании самих этих классов оставить только различающиеся элементы.

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

Отдельного пояснения требует понятие обмена сообщениями. Первоначально (например, в том же Smalltalk) взаимодействие объектов представлялось как «настоящий» обмен сообщениями, то есть пересылка от одного объекта другому специального объекта-сообщения. Такая модель является чрезвычайно общей. Она прекрасно подходит, например, для описания параллельных вычислений с помощью активных объектов, каждый из которых имеет собственный поток исполнения и работает одновременно с прочими. Такие объекты могут вести себя как отдельные, абсолютно автономные вычислительные единицы. Посылка сообщений естественным образом решает вопрос обработки сообщений объектами, присвоенными полиморфным переменным — независимо от того, как объявляется переменная, сообщение обрабатывает код класса, к которому относится присвоенный переменной объект. Данный подход реализован в языках программирования Smalltalk, Ruby, Objective-C, Python.

Однако общность механизма обмена сообщениями имеет и другую сторону — «полноценная» передача сообщений требует дополнительных накладных расходов, что не всегда приемлемо. Поэтому во многих современных объектно-ориентированных языках программирования используется концепция «отправка сообщения как вызов метода» — объекты имеют доступные извне методы, вызовами которых и обеспечивается взаимодействие объектов. Данный подход реализован в огромном количестве языков программирования, в том числе C++, Object Pascal, Java, Oberon-2. Однако, это приводит к тому, что сообщения уже не являются самостоятельными объектами, и, как следствие, не имеют атрибутов, что сужает возможности программирования. Некоторые языки используют гибридное представление, демонстрируя преимущества одновременно обоих подходов — например, CLOS, Python.

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

От таких слов хочется блевать.

Dublin 17.12.2016 22:40

Вот хорошо написано про ООП
[URL="https://habrahabr.ru/post/87119/"]Часть 1[/URL]
[URL="https://habrahabr.ru/post/87205/"]Часть 2[/URL]

сандро 18.12.2016 00:08

Это уже лучше. Я так понимаю в обычном программировании ("в блокноте") никаких классов и объектов нет?

TRam_ 18.12.2016 02:52

[QUOTE]Я так понимаю в обычном программировании ("в блокноте") никаких классов и объектов нет?[/QUOTE]Собственно любое программирование - это и есть написание кода "в блокноте" (размещение элементов на форме и настройка их свойств - это не программирование, а вёрстка). Наличие или отсутствие поддержки объектов определяется только языком программирования, и они могут применяться в том числе для "простых" консольных приложений. Язык VisualBasic объекты поддерживает и широко использует.

сандро 18.12.2016 12:05

Короче прежде чем программист начнет писать код в блокноте, он нарисует себе схемку? Что из чего следует?

alex8888 18.12.2016 13:14

Недавно попался сайтик и книжки про язык [URL="http://drakon.su/"] "Дракон"[/URL]. Скорее всего это пока только описание работы с блок-схемами, но сами схемы действительно составлены очень грамотно и точно. Жалко, что нет пока "интертрепатора" для разработки пользовательских приложений, но вот в разработке алгоритма очень даже неплохо.

сандро 18.12.2016 13:31

А что такое интерпретатор?

Garikk 18.12.2016 13:44

Не путайте человека, ООП, схемки и т.п.

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

alex8888 18.12.2016 13:59

Возьми ка ты для начала вот эту [URL="https://yadi.sk/i/bWCF-hPs33vxUv"]книженцию[/URL]. Для самого начала можно почитать. А там будет видно, интересно тебе это или нет.

SmaiL 18.12.2016 14:43

А почему все против начала изучения программирования с С++? Ну серьезно..

GeneZone 18.12.2016 15:09

[QUOTE=сандро;544161]А что такое интерпретатор?[/QUOTE]

Интерпретатор - это "переводчик" команд языка высоко уровня в машинный или объектный код. В отличие от компилятора, интерпретатор работает "на лету", т.е. каждая строка программы, при вводе(нажатии клавиши "ввод" или "Enter") или запуске программы командой RUN(если это, к примеру, BASIC), переводится в код и сразу же определяется наличие ошибок. Вернее, сначала проверяется наличие ошибок, потом перевод в код и выполнение.

сандро 18.12.2016 15:39

[QUOTE=SmaiL;544178]А почему все против начала изучения программирования с С++? Ну серьезно..[/QUOTE]
Объясню почему я купил две книжки по VB и Phytonу, а не по С. Научиться программировать, я хотел давно. Но я не собираюсь принимать участие в олимпиадах по программированию, где надо разрабатывать математический алгоритм. Я хочу скажем для начала создать программку как у психолога -"тока по кругу". И мне нужна такая книга, где после описания листинга будет пример работы программы. Т.е. либо это чистый EXE файл, либо ЕХЕ + DLL. Либо только DLL. А таких книг я не встречал. Кто подскажет, ну что, куплю. Электронные книги в формате DJVU или PDF мне не интересны. Я человек старой советской закалки и мне нужна нормальная бумажная книга. Нужен упор на графику. Ну например игра "пасьянс".


Текущее время: 19:50. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim