Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[107.21.137.184] |
|
Сообщ.
#1
,
|
|
|
Столкнувшись с ООП выбор среды программирования у меня был невелик. C++, Java, C# и пока все.
В этом же порядке и пришлось писать программы с ООП. В конечном счете решил вернуться к С++ обратно. На Java все стало deprecated (забыто), С# таскает гибабайты runtime и все уже забыто тоже. Можно сказать, устал как Жан-Мишель Вокруг да около одного и того же... Теперь начинаю все сначала. Классы описывают как работать с обьектами. Обьекты могут быть блоками или модулями. Блок - большой, а модуль маленький. К примеру телевизор это такая конструкция. Он состоит из многих блоков, например блок развертки, блок питания и т.д. Блок развертки состоит из модулей вертикальной развертки, горизонтальной развертки и т.п. Модуль содержит набор более мелких и простых деталей. Идея в том, что из блоков и модулей все можно собирать конструкции как из кубиков. В реальных языках программирования кроме общей концепции есть еще и неожиданности. "Вы не можете иметь статические переменные внутри Java функций". И т.д. в больших количествах. Попробуем писать что-то просто на русском языке: класс Телевизор { Антенный_блок, Блок_питания, Блок_разверток,...... ........ } класс Блок_разверток{ модуль_горизонтальной_развертки, модуль_вертикальной_развертки, модуль_синхронизации,...... ...... } Можно ли как-то транслировать свой язык верхнего уровня в С++ например ? И забыть о неожиданностях языков, чтобы все-таки все было как с кубиками ? (ООП как-то это обещало,обещало, но почему-то не совсем вышло...) Английский в программировании как-то уже утомил. Что можно сделать ? Хорошо бы забыть про указатели и иметь возможность узнавать на ходу длины массивов и т.д. Классический язык без лишних рунтаймов вне программы, вот чего хочется. |
Сообщ.
#2
,
|
|
|
Весьма сильный изъян, сразу бросающийся в глаза следующий: вы описываете предмет с помощью просто кучи мелких предметов, при этом нисколько не устанавливая связи и не поясняя задачу функционирования чего бы то ни было. a'la Китайская комната или как-то так. Так не получится. Так что надо поначалу разрешить сей важный качественный прокол.
Добавлено Язык же Си, с коего вы содрали описание, содержит в себе некую функциональность, посему позволяет хучь сколько-то описывать нужное людям. Так в классе: class Телевизор { int канал; int Пульт( int кнопка, float громкость); } мы сразу видим, что поле 'канал' несёт в себе некое хранилище, а, запуская Пульт, можно посылать в него такие-то команды, осуществлять некоторую плавную≈непрерывную регулировку. |
Сообщ.
#3
,
|
|
|
Свои программы следует писать сообразно объектной модели выбранного языка, а не наоборот. Вероятно, поэтому другие языки и не зашли. Посему и Плюсовая может не зайти.
Объектная модель у Плюсов одна из наиболее продуманных. Это не значит, что она самая лучшая на свете, но это значит, что если что-то в ней не нравится, скорее всего иначе было бы хуже. Цитата yuan @ Поверь, лучше ничего. будет только хуже.Английский в программировании как-то уже утомил. Что можно сделать ? Цитата yuan @ Не вопрос.Хорошо бы забыть про указатели и иметь возможность узнавать на ходу длины массивов и т.д. Цитата yuan @ Не вопрос. Классический язык без лишних рунтаймов вне программы, вот чего хочется. |
Сообщ.
#4
,
|
|
|
Цитата yuan @ Попробуем писать что-то просто на русском языке: Микрософтный с++ это позволяет. Только лучше не злоупотреблять. #define класс class класс БЛОК { int xxmm; }; класс МОДУЛЬ { int mmxx; }; класс Телевизор { БЛОК Антенный_блок; БЛОК Блок_питания; БЛОК Блок_разверток; }; класс Блок_разверток { МОДУЛЬ модуль_горизонтальной_развертки; МОДУЛЬ модуль_вертикальной_развертки; МОДУЛЬ модуль_синхронизации; }; // .... int __cdecl _tmain(void) { _tprintf(_T("Hello, world!\n")); Телевизор Рубин714, Рекорд, Филипс; Блок_разверток Универсальный; ///... |
Сообщ.
#5
,
|
|
|
Цитата ЫукпШ @ Любой с++ это позволяет. FIXED. Препроцессор — не прерогатива MS. Добавлено Цитата yuan @ На Java все стало deprecated (забыто) Что «всё»? Цитата yuan @ В реальных языках программирования кроме общей концепции есть еще и неожиданности. "Вы не можете иметь статические переменные внутри Java функций". И т.д. в больших количествах. Да ты ладно! Видимо, тебе нужен нереальный язык программирования. Цитата yuan @ И забыть о неожиданностях языков, чтобы все-таки все было как с кубиками? Какое отношение это имеет к статическим переменным, например? Впрочем, может, тебе нужно в детский садик, там будут тебе кубики. Цитата yuan @ (ООП как-то это обещало,обещало, но почему-то не совсем вышло...) Что оно тебе обещало и почему не вышло? А может ты просто тролль, пытающийся развести холивар? |
Сообщ.
#6
,
|
|
|
Цитата korvin @ Цитата ЫукпШ @ Любой с++ это позволяет. FIXED. Препроцессор — не прерогатива MS. Не надо искажать цитаты. Критерием истины является практика. Попробуй взять другой компилятор, откомпилировать и собрать программу с приведённым мной исходником. |
Сообщ.
#7
,
|
|
|
Сообщ.
#8
,
|
|
|
Цитата korvin @ Problems? Ещё пробуй. |
Сообщ.
#9
,
|
|
|
Цитата ЫукпШ @ Ещё пробуй. Мне-то зачем? У меня всё работает. |
Сообщ.
#10
,
|
|
|
Спасибо, в общем примерно так я себе это и представлял.
Мне нужен пре-препроцессор со встроенным словарем русских слов и перекодировкой в латиницу. Это как-нибудь со временем. Кстати массив обьектов имеет свои сложности. Обьекты-потомки имеют бОльшие габариты и не помещаются в ячейках массива (портят память). (Java сразу использует массивы указателей на обьекты). Всем пока. |
Сообщ.
#11
,
Сообщение отклонено: Qraizer -
|
Сообщ.
#12
,
Сообщение отклонено: Qraizer -
|