Модераторы: Се ля ви

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А можно без классов? 
:(
    Опции темы
slavaentp
Дата 18.9.2008, 17:44 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Совершенно не знаю, где спросить, решил спросить здесьsmile 

Имеют ли право на существование языки программирования без классов(я так понимаю, что то, что с классами, называется ООП) или нет?smile Потому что вот эта система с классами мне совсем не нравится. Любой язык программирования нравится ровно до того момента, как выясняю, что там есть ЭТА хреньsmile Ну вот такое моё мнение об этом.

Если такие языки программирования есть(кроме Ассемблера), то можно ли рассчитывать получиьт работу с нормальной зарплатой, программируя на них, и если да, то где и как?

Спасибо.
PM MAIL   Вверх
Mayk
Дата 18.9.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



И за что не нравится ООП, раз уж мы в филосфии программирования?

Это сообщение отредактировал(а) Mayk - 18.9.2008, 17:53


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Gwynbleidd
Дата 18.9.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.3.2007

Репутация: нет
Всего: нет



Цитата(slavaentp @ 18.9.2008,  15:44)
Совершенно не знаю, где спросить, решил спросить здесьsmile 

Имеют ли право на существование языки программирования без классов(я так понимаю, что то, что с классами, называется ООП) или нет?smile Потому что вот эта система с классами мне совсем не нравится. Любой язык программирования нравится ровно до того момента, как выясняю, что там есть ЭТА хреньsmile Ну вот такое моё мнение об этом.

Если такие языки программирования есть(кроме Ассемблера), то можно ли рассчитывать получиьт работу с нормальной зарплатой, программируя на них, и если да, то где и как?

Спасибо.

есть конечно. например можно программировать на С (простой си) для микроконтроллеров, там хочешь не хочешь а классов нет. так же можно писать например по юникс.. возможностей много smile
PM MAIL   Вверх
slavaentp
Дата 18.9.2008, 18:50 (ссылка)    | (голосов:14) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(Mayk @ 18.9.2008,  17:52)
И за что не нравится ООП, раз уж мы в филосфии программирования?

За бесполезный код.

Class A: ClassB{

public A = new A();

Вот эти две строчки ровным счётом ничего не делают. Не выводят ничего на экран, не выполняют вычислений, не включают даже какую-то там функцию, которая бы не работала без этого, ВООБЩЕ НИЧЕГО НЕ ДЕЛАЮТ. А строчка "public A = new A();" да ещё и после объявления класса А, по моему мнению вообще верх маразмаsmile Ну зачем это? Я помнимаю, что это что-то там делает, выполняет какие-то условия в ОО языке программирования, мне это жутко не нравится. Я хочу, чтобы код был максимально простым и значимым.

Я даже переменные стараюсь не использовать, поскольку они тоже являются бесполезным кодом. Использую только тогда, когда без них никак. Функции - признаю их право на существование, возможно иногда используя их, код станет более компактным, но ненавижу оверюз их. А goto люблю гораздо больше функцийsmile Классы не перевариваю вообще. Считаю ненужным бредом.

Вот такое моё мнениеsmile

Это сообщение отредактировал(а) slavaentp - 18.9.2008, 18:52
PM MAIL   Вверх
skyboy
Дата 18.9.2008, 18:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



А чего: без классов нельзя написать бессмысленный код?
Код

c := с + 2;
с := с - 2;  



Добавлено через 1 минуту и 45 секунд
классы - такие же инструменты языка, как переменные, функции и тот же goto. не нравится - не используешь. если выходит коряво - мучаешься.
вот только на java писать чисто в процедурном стиле не получится. значит, на работу по java ты в жизни не пройдешь.
PM MAIL   Вверх
slavaentp
Дата 18.9.2008, 19:08 (ссылка)    | (голосов:14) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата

А чего: без классов нельзя написать бессмысленный код?

Можно конечноsmile

Цитата
классы - такие же инструменты языка, как переменные, функции и тот же goto. не нравится - не используешь. если выходит коряво - мучаешься.
вот только на java писать чисто в процедурном стиле не получится. значит, на работу по java ты в жизни не пройдешь. 

Дело тут вот в чём.

Я - человек, ориентированный на результат. Если программа работает, если цель ДОСТИГНУТА полностью - значит задача выполнена. Меня абсолютно не интересует, "оптимизирована" ли программа. Поставлена задача(в т.ч. и мной самим перед собой) - я написал код, который её решил - значит всё выполнено ИДЕАЛЬНО и ОПТИМАЛЬНО.

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

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

Но это так, отступление. Суть в том, что по-другому я не могу.

А если мою работу будут оценивать по принципу "Да, Ваша программа работает, всё полностью выполнено, но такой код нужно писать через классы, иначе программа через 10 лет будет работать чуточку медленнее" - я так не смогу.
PM MAIL   Вверх
kosmonaFFFt
Дата 18.9.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



[OFFTOP]
Одно из преимуществ классов: наследование
Понадобилось мне по учебе прогу сваять (преобразования плоского графич. объекта) и решил я ее по быстрому сделать на C#.
А там по заданию надо перемножение матриц. А самому то все писать лень =>
Код

public class FMatrix : List<List<Single>>
{
//А здесь конструктор и перегрузка оператора *
}

smile
[/OFFTOP]

А насчет языкрв без классов, знаю только C, Pascal (!!! не Object Pascal)
Могу ошибаться, но по моему в Lisp и Prolog их тоже нет.


--------------------
user posted image
PM MAIL ICQ   Вверх
skyboy
Дата 18.9.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(kosmonaFFFt @  18.9.2008,  18:10 Найти цитируемый пост)
но по моему в Lisp и Prolog их тоже нет. 

"Lisp" и "Prolog" - не более, чем общие названия. в одних версиях есть, в других - нет.
Цитата(slavaentp @  18.9.2008,  18:08 Найти цитируемый пост)
А если мою работу будут оценивать по принципу "Да, Ваша программа работает, всё полностью выполнено, но такой код нужно писать через классы, иначе программа через 10 лет будет работать чуточку медленнее" - я так не смогу. 

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

Добавлено через 33 секунды
Цитата(slavaentp @  18.9.2008,  18:08 Найти цитируемый пост)
иначе программа через 10 лет будет работать чуточку медленнее

это шутка? как использование классов ускоряет работу программы?
PM MAIL   Вверх
slavaentp
Дата 18.9.2008, 19:18 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(kosmonaFFFt @ 18.9.2008,  19:10)
[OFFTOP]
Одно из преимуществ классов: наследование
Понадобилось мне по учебе прогу сваять (преобразования плоского графич. объекта) и решил я ее по быстрому сделать на C#.
А там по заданию надо перемножение матриц. А самому то все писать лень =>
Код

public class FMatrix : List<List<Single>>
{
//А здесь конструктор и перегрузка оператора *
}

smile
[/OFFTOP]

А насчет языкрв без классов, знаю только C, Pascal (!!! не Object Pascal)
Могу ошибаться, но по моему в Lisp и Prolog их тоже нет.

Может быть если бы где-то расписаны вот такие подобные НАСТОЯЩИЕ преимущества - я бы и поменял отношение к классам или понял их лучшеsmile

А так, бред какой-то:

"Пишем программу HelloWorld. Создадим класс для нашей программы, дальше создадим экемпляр этого класса, а теперь поговорим подробно, какие аттрибуты мы можем поставить классу, и имейте в виду, что классы это такие-то такие-то ... <длиннейшее описание сути и философии классов и всех их разновидностей, из которого непонятно, зачем они вообще нужны>. Вот теперь, когда вы поняли всё о том, как создавать классы, экземпляры и конструкторы, правда не поняли, зачем это всё нужно, мы, наконец, напишем - Console.WriteLine("Hello, World!");"

Добавлено через 2 минуты и 39 секунд
Цитата

это шутка? как использование классов ускоряет работу программы? 

Это непонимание, зачем классы нужныsmile Я предположил, что для скорости - а иначе для чего?

Ибо все коды, которые я видел с классами, прекрасно могли быть написаны без них.
PM MAIL   Вверх
kosmonaFFFt
Дата 18.9.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  18.9.2008,  19:18 Найти цитируемый пост)
Может быть если бы где-то расписаны вот такие подобные НАСТОЯЩИЕ преимущества - я бы и поменял отношение к классам или понял их лучше


ИМХО пока сам не начнешь это все юзать - не поймешь.
Я например вначале тоже думал на# они надо, а щас как то и не знаю даже иногда как без ООП smile

Добавлено через 4 минуты и 24 секунды
Цитата(slavaentp @  18.9.2008,  19:23 Найти цитируемый пост)
А разве от программиста не готовый продукт требуется? По идее кроме программиста, никто в коде и не должен копаться.


А как же те несчастные, которые будут потом поддерживать проект, если тебя уже не будет (место работы например сменишь)?
А им например надо будет какую то фичу добавить или баг устранить.
Вот и будут сидеть и проклинать автора, пытаясь разобраться в коде. smile


--------------------
user posted image
PM MAIL ICQ   Вверх
slavaentp
Дата 18.9.2008, 19:23 (ссылка)    | (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата

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

А разве от программиста не готовый продукт требуется? По идее кроме программиста, никто в коде и не должен копаться.
PM MAIL   Вверх
slavaentp
Дата 18.9.2008, 19:27 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(kosmonaFFFt @ 18.9.2008,  19:23)
Цитата(slavaentp @  18.9.2008,  19:18 Найти цитируемый пост)
Может быть если бы где-то расписаны вот такие подобные НАСТОЯЩИЕ преимущества - я бы и поменял отношение к классам или понял их лучше


ИМХО пока сам не начнешь это все юзать - не поймешь.
Я например вначале тоже думал на# они надо, а щас как то и не знаю даже иногда как без ООП smile

Дело в том, что когда я программирую для себя, я программирую на Ассемблереsmile

Если честно - я считаю этот язык программирования вообще единственным, имеющим право на существованиеsmile

Другой вопрос, что за программирование на нём не платят, а что такое "прошивка микроконтроллеров", я вообще понятия не имею, как и то, почему это делается на Ассемблере.
PM MAIL   Вверх
kosmonaFFFt
Дата 18.9.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Чет отправка глюканула, и не новый пост получился, а старый отредактировался.

Цитата

Дело в том, что когда я программирую для себя, я программирую на Ассемблере


Для себя и для кого-то разные вещи.

Это сообщение отредактировал(а) kosmonaFFFt - 18.9.2008, 19:30


--------------------
user posted image
PM MAIL ICQ   Вверх
slavaentp
Дата 18.9.2008, 19:30 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата


А как же те несчастные, которые будут потом поддерживать проект, если тебя уже не будет (место работы например сменишь)?
А им например надо будет какую то фичу добавить или баг устранить.
Вот и будут сидеть и проклинать автора, пытаясь разобраться в коде. smile

Неужто так сложно разобраться в чужом коде, если автор его намеренно что-то там не скрывал?smile

Добавлено через 3 минуты и 24 секунды
Цитата(kosmonaFFFt @ 18.9.2008,  19:29)
Чет отправка глюканула, и не новый пост получился, а старый отредактировался.

Цитата

Дело в том, что когда я программирую для себя, я программирую на Ассемблере


Для себя и для кого-то разные вещи.

Так чтобы получить "для кого-то", нужно квалификацией обладать.

Вот я и спрашиваю, где силы приложить, и вообще имеет ли мне смысл прилагать силы в программированииsmile

Ибо если "надо сделать программу, чтобы работала" - это я могу сделать

А если нужно думать каждую секунду думать "Ой, как написать? Класс? Функцию? Или просто код?" - то тогда вряд ли, ибо для меня ответ(хотя бы по умолчанию) всегда - "просто код":)

Это сообщение отредактировал(а) slavaentp - 18.9.2008, 19:31
PM MAIL   Вверх
kosmonaFFFt
Дата 18.9.2008, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  18.9.2008,  19:30 Найти цитируемый пост)
Неужто так сложно разобраться в чужом коде, если автор его намеренно что-то там не скрывал?


Сам несколько раз пытался разобраться в чужом кривоватом коде
(например все имена переменных в стиле a, aa, ttt, d, v, tt и т. д. и тут даже имеющиеся в обилии коменты не спасали)
, забивал и писал сам. smile



--------------------
user posted image
PM MAIL ICQ   Вверх
slavaentp
Дата 18.9.2008, 19:39 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(kosmonaFFFt @ 18.9.2008,  19:34)
Цитата(slavaentp @  18.9.2008,  19:30 Найти цитируемый пост)
Неужто так сложно разобраться в чужом коде, если автор его намеренно что-то там не скрывал?


Сам несколько раз пытался разобраться в чужом кривоватом коде
(например все имена переменных в стиле a, aa, ttt, d, v, tt и т. д. и тут даже имеющиеся в обилии коменты не спасали)
, забивал и писал сам. smile

Но сделал же в итогеsmile Работодателю по идее должно быть всё равно - при любом варианте он имеет работающую програму.
PM MAIL   Вверх
kosmonaFFFt
Дата 18.9.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  18.9.2008,  19:30 Найти цитируемый пост)
Ибо если "надо сделать программу, чтобы работала" - это я могу сделатьА если нужно думать каждую секунду думать "Ой, как написать? Класс? Функцию? Или просто код?" - то тогда вряд ли, ибо для меня ответ(хотя бы по умолчанию) всегда - "просто код":)


Я например "просто код" всегда разбиваю на классы+методы/функции ибо мне так например легче.
Разбил задачу на более мелкие - написал и протестировал каждую, потом соединил и все работает. smile
А потом, если что-то аналогичное потребуется (да хоть те же матрицы с их умножением,а они у меня в отдельном классе)
взял, скопировал/унаследовал+дописал и можно юзать.

Добавлено через 2 минуты и 54 секунды
Цитата(slavaentp @  18.9.2008,  19:39 Найти цитируемый пост)
Но сделал же в итоге Работодателю по идее должно быть всё равно - при любом варианте он имеет работающую програму.


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


--------------------
user posted image
PM MAIL ICQ   Вверх
slavaentp
Дата 18.9.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(kosmonaFFFt @ 18.9.2008,  19:41)
Цитата(slavaentp @  18.9.2008,  19:30 Найти цитируемый пост)
Ибо если "надо сделать программу, чтобы работала" - это я могу сделатьА если нужно думать каждую секунду думать "Ой, как написать? Класс? Функцию? Или просто код?" - то тогда вряд ли, ибо для меня ответ(хотя бы по умолчанию) всегда - "просто код":)


Я например "просто код" всегда разбиваю на классы+методы/функции ибо мне так например легче.

Не спорю, у разных людей разные предпочтения.

Я же, например, классы, функции, переменные буду избегать всегда, когда это только возможно, вот мне и интересно, оплачивается ли такой подход в программированииsmile
PM MAIL   Вверх
kosmonaFFFt
Дата 18.9.2008, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  18.9.2008,  19:46 Найти цитируемый пост)
оплачивается ли такой подход в программировании

ИМХО нет.
Думаю что если бы оплачивался, то ООП не возникло бы smile



--------------------
user posted image
PM MAIL ICQ   Вверх
Mayk
Дата 18.9.2008, 20:32 (ссылка) |    (голосов:9) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Цитата(slavaentp @  18.9.2008,  23:08 Найти цитируемый пост)
Если программа работает, если цель ДОСТИГНУТА полностью - значит задача выполнена

Абсолютно не верный вывод. После ввода программы в эксплуатацию требуется её активная поддержка для добавления фич и устранения багов. 
Цитата(slavaentp @  18.9.2008,  23:08 Найти цитируемый пост)
Поставлена задача(в т.ч. и мной самим перед собой) - я написал код, который её решил - значит всё выполнено ИДЕАЛЬНО и ОПТИМАЛЬНО.

соответсвенно это тоже не верно, ну и всё последующее.

Это сообщение отредактировал(а) Mayk - 18.9.2008, 20:34


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Shaggie
Дата 18.9.2008, 20:40 (ссылка) |    (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(slavaentp @  18.9.2008,  20:08 Найти цитируемый пост)
Я - человек, ориентированный на результат. Если программа работает, если цель ДОСТИГНУТА полностью - значит задача выполнена.

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

Цитата(slavaentp @  18.9.2008,  20:08 Найти цитируемый пост)

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

Умоляю тебя! В данный момент я - жертва такого программиста. Не бывает задачи "неоптимизированность кода". Бывает задача "эй вы, парни, нам надо вот такую фишку сделать и тут поменять", и в решении задачи ты сотни, тысячи раз обматеришь предшественника, поменяешь всё до чего дотянешься (или, что случается чаще, примешь как есть. Нет времени всё переписывать). Ура - задача (не скажу какой ценой) решена, можно перестать ругаться на заплатанный код. Думаешь, какая задача встанет следующей? Правильно! "Вот вылез баг, вот здесь плюшечку, и мы тут с бухгалтерией подумали, что надо вот этот момент по-другому вычислять...", но задачи оптимизации тебе в жизни никогда не поставят. И даже если выбьешь с начальника время на таковую, что теперь уже можно поменять? Только переписать всё целиком.

Чем дальше, тем больше заплатанным становится код. Изменение одной его части влечёт совершенно непредсказуемые для всей программы последствия. Автоматизированные тесты навесить на это разваливающееся и подпёртое костылями чудо невозможно, и тестирование превращается в каторгу. Представь теперь, какое количество иголок будет втыкаться в твою восковую фигуру - нужна такая тяжесть на карме?

Цитата(slavaentp @  18.9.2008,  20:46 Найти цитируемый пост)

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

Эй, на чём-то придётся остановиться! Ни классов, ни функций, ни переменных - так не бывает, хотя бы что-то одно придётся использовать, причём это одно наверняка окажется функциями  smile 

Диагноз - повышенное оптимизаторство, плавали - знаем, сам с ассемблера начинал. Жизнь заставит - всё полюбишь. И функции (за что на них-то взъелся?), и классы (с опытом поймёшь, как их юзать). И даже переменные. Всё хорошо, когда растёт на своём месте.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
slavaentp
Дата 19.9.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(Shaggie @ 18.9.2008,  20:40)
функции (за что на них-то взъелся?)

Зачем:

function superkod($a, $b){

echo $a+$b;

}

superkod(3+1);

если можно:

echo 3+1;

Это сообщение отредактировал(а) slavaentp - 19.9.2008, 15:18
PM MAIL   Вверх
kosmonaFFFt
Дата 19.9.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  19.9.2008,  15:18 Найти цитируемый пост)
Зачем:function superkod($a, $b){echo $a+$b;}superkod(3+1);если можно:echo 3+1;


А представь себе, что там не echo $a + $b, а около 40 строк кода, который делает что то с этими самыми переменными
а в программе это делать с ними надо часто. И тут появляется выбор - функция или копирование кода через
Ctrl+C, Ctrl+V (или как там у кого хоткеи настроены) smile
Я лично предпочитаю в такой ситуации написать функцию.


--------------------
user posted image
PM MAIL ICQ   Вверх
slavaentp
Дата 19.9.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(kosmonaFFFt @ 19.9.2008,  15:59)
Цитата(slavaentp @  19.9.2008,  15:18 Найти цитируемый пост)
Зачем:function superkod($a, $b){echo $a+$b;}superkod(3+1);если можно:echo 3+1;


А представь себе, что там не echo $a + $b, а около 40 строк кода, который делает что то с этими самыми переменными
а в программе это делать с ними надо часто. И тут появляется выбор - функция или копирование кода через
Ctrl+C, Ctrl+V (или как там у кого хоткеи настроены) smile
Я лично предпочитаю в такой ситуации написать функцию.

Чем "goto" не устраивает?

PM MAIL   Вверх
Shaggie
Дата 19.9.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(slavaentp @  19.9.2008,  16:18 Найти цитируемый пост)

function superkod($a, $b){

echo $a+$b;

}

Действительно отстой. Название superkod не говорит совершенно ни о чём. Функция обладает побочным эффектом, заключающимся в использовании echo. Ну её такую нафиг!


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
smartov
Дата 19.9.2008, 17:26 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



slavaentp, тролль нехороший smile Но зато живая беседа.

Начнем, полжалуй, с функций.
Чтобы пример был нагляднее, возмем матрицу.
Нам нужно посчитать детерминант матрицы. Возьми матрицу 5x5 и попробуй написать код для рассчета ее детерминанта без функций. 
А теперь представь что матрица не 5х5, а вообще произвольного размера - как пользователь задаст.
Это тоже можно написать без функций. И даже будет работать, но код будет во много раз длиннее, а читать этот код будет нереально. Следовательно поддержка программы сводится к нулю.
Итого: больше потраченного времени программиста, программа занимает больше места, большее количество кода увеличивает шанс человеческой ошибки (скрытые баги), поддержку программы осуществлять трудно.

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

Это сообщение отредактировал(а) smartov - 19.9.2008, 17:28
PM MAIL   Вверх
Shaggie
Дата 19.9.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(slavaentp @  19.9.2008,  17:23 Найти цитируемый пост)
Чем "goto" не устраивает?

Истории много лет, не одна сотня копий разбита в боях. Поисковики в помощь.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
kosmonaFFFt
Дата 22.9.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  19.9.2008,  16:23 Найти цитируемый пост)
Чем "goto" не устраивает?

Хорошо, а теперь взять те же матрицы и их умножение (недавно сам делал):
как с помощью goto реализовать умножение двух произвольных матриц?
мне это представляется возможным только так:
Код

начало_умножения:
    тут идет умножение матрицы А на Б и результат записывается в С;
    switch (куда_идти)
    {
        case 1: goto куданибудь1;
        ...
        case n: goto куданибудьn;
    }

//А тут понадобилось умножить 2 матрицы
А = ... //Инициализация А
Б = ... //Инициализация Б
куда_идти = 1;
goto начало_умножения;
куданибудь1:
    //В итоге в С оказывается результат.

//А где то здесь тоже надо умножить матрицы. И где нибудь ниже тоже.


А теперь с функциями (даже без классов):
Код

Матрица УмножитьМатрицы(Матрица м1, Матрица м2)
{
    //Тут умножение и возврат результата.
}

//Тут понадобилось умножение.
Матрица С = УмножитьМатрицы(А, Б);

//И здесь и ниже так-же.
Матрица СN = УмножитьМатрицы(АN, БN);


И какой же вариант более простой и легчечитаемый? smile

Это сообщение отредактировал(а) kosmonaFFFt - 22.9.2008, 18:42


--------------------
user posted image
PM MAIL ICQ   Вверх
ne0n
Дата 22.9.2008, 19:34 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: нет
Всего: 11



Нет, я конечно не ярый фанат ООП, но вы батенька ,slavaentp, похоже немного бередите. Вы мне напоминаете китайцев, которые сначало создают себе трудности а потом их решают. 
Например я не люблю использовать ООП в тех случиях когда без него можно обойтись, ну например какаянито маленькая програмка(обычно системная утила) - я стараюсь реализовать все на api, используя процедурный подход.  а когда речь идет о чем то более глобальном...например база данных. зачем создавать себе трудности, лопатить кучу документации, зачем изобретать велосипед, когда можно воспользоваться готовым классом и при необходимости дорабоать его. 
ну а уж слова по поводу того что функция - это ненужная вещь, я задам лишь один вопрос...вы когданибудь писали программы на нсеколько тысяч строк??!!  разбираться в такой мешанине кода это наверно веселое занятие...когда гораздо удобнее все фуки раскидать по юнитам, и при необгодимости вызывать их из главной программы.
PM MAIL ICQ   Вверх
nerezus
  Дата 22.9.2008, 19:43 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

Я - человек, ориентированный на результат. Если программа работает, если цель ДОСТИГНУТА полностью - значит задача выполнена. Меня абсолютно не интересует, "оптимизирована" ли программа. Поставлена задача(в т.ч. и мной самим перед собой) - я написал код, который её решил - значит всё выполнено ИДЕАЛЬНО и ОПТИМАЛЬНО.
 ООП позволяет тебе писать меньше кода на больших проектах. Вопросы есть?

Добавлено через 2 минуты и 51 секунду
Есть такие штуки, как полиморфизм. Они уменьшают количество кода.
Есть такие штуки, как инкапсуляция. Они повышают читабельность кода.
Есть такие штуки, как шаблоны проектирования. Они уменьшают количество головной боли при разработке.
Есть такие штуки, как фреймворки. Они в разы сокращают количество кода по сравнению с C-style библиотеками.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
korian
Дата 27.9.2008, 21:07 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



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

PM   Вверх
smartov
Дата 27.9.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



korian, надо же. Даже статья на Вики есть. Не знал.
PM MAIL   Вверх
DRUID3
Дата 28.9.2008, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 20.6.2005
Где: Kyyiv

Репутация: -1
Всего: 9



Цитата(smartov @  19.9.2008,  16:26 Найти цитируемый пост)
slavaentp, тролль нехороший smile Но зато живая беседа.

100% тролль ...
Цитата(smartov @  19.9.2008,  16:26 Найти цитируемый пост)
Это тоже можно написать без функций. И даже будет работать, но код будет во много раз длиннее, а читать этот код будет нереально. Следовательно поддержка программы сводится к нулю.
Итого: больше потраченного времени программиста, программа занимает больше места, большее количество кода увеличивает шанс человеческой ошибки (скрытые баги), поддержку программы осуществлять трудно.

именно...
Цитата(Shaggie @  18.9.2008,  19:40 Найти цитируемый пост)
Программы приходится развивать. Вырастают новые технические требования, отмирают старые. Вылезают ошибки, а иногда переделывать приходится больше половины готового кода. Есть даже отдельные программисты, которые работают не на написание новых проектов, а на поддержку старых. Что в таком случае является целью? Что думать о товарище программисте, который написал "чтобы работало" и свалил? Не проще ли было изначально задуматься о стройной архитектуре? Я не пытаюсь заставить тебя полюбить ООП, хочешь - решай в функциональной парадигме, но только безо всяких "после нас хоть потоп"!

Все верно, как и в предыдущем пояснении, но товариСЧ решил пЕсать для себя... Для себя можно как угодно )))


Цитата(Shaggie @  18.9.2008,  19:40 Найти цитируемый пост)
но задачи оптимизации тебе в жизни никогда не поставят

Ну только вот таких вот обобщений не надо  smile ... Смотря кто где и над какими задачами работает.

Цитата(kosmonaFFFt @  22.9.2008,  17:41 Найти цитируемый пост)
как с помощью goto реализовать умножение двух произвольных матриц?
. . . И какой же вариант более простой и легчечитаемый?

Цитата(kosmonaFFFt @  19.9.2008,  14:59 Найти цитируемый пост)
А представь себе, что там не echo $a + $b, а около 40 строк кода, который делает что то с этими самыми переменными
а в программе это делать с ними надо часто. И тут появляется выбор - функция или копирование кода через
Ctrl+C, Ctrl+V (или как там у кого хоткеи настроены) smile
Я лично предпочитаю в такой ситуации написать функцию. 

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


ну Ваши представления об возможностях оператора безусловного перехода несколько искажены. Дейкстра ругал goto за полную дезориентацию синхронизма выполняемых действий - затруднения в очевидности, наглядности работы системы. А совсем, как раз, не за усложнение и утяжеление чтения исходника в пределах одного блока кода - кстати оба Ваших варианта читаются довольно легко. Поколдовав с препроцессором можно добиться ясности и простоты для намного более запутанных случаев... Мало того ПП(или ООП smile ) на asm будет тоже тяжелочитаемым. Кстати никто goto собственно и не запрещает, в планировщике задач Linux, что 2.4 что 2.6(более ранних - невидал) он на каждом шагу... И Торвальдс такую работу принимает.
slavaentp
прав в своих кратких тезисах. Все это (+ процедурное программирование) парадигмы - мировоззренческие точки отсчета. Но никто никого не заставляет  smile ... 

Цитата(Gwynbleidd @  18.9.2008,  17:10 Найти цитируемый пост)
есть конечно. например можно программировать на С (простой си) для микроконтроллеров, там хочешь не хочешь а классов нет. так же можно писать например по юникс.. возможностей много 

Не совсем верен сам подход... Можно писать ООП на asm. Но это, конечно, экстрим. Но уже для С так очень часто поступают - для тех же микроконтроллеров может не оказаться C++, например, а команда хочет ООП. Кстати, ранние версии GCC преобразовывали C++ в C. И книги встречались на английском как писать на C в стиле C++. Вот неплохой материал по-теме. Ну а все, что можно на C можно и на asm  smile . 

Цитата(Shaggie @  18.9.2008,  19:40 Найти цитируемый пост)
Ни классов, ни функций, ни переменных - так не бывает, хотя бы что-то одно придётся использовать, причём это одно наверняка окажется функциями

есть такой язык brainfack... там ничего этого нет. И он работает... Правда именно так как и называется...



--------------------
Every time if you use Linux, you are joined to the communism...
практика - критерий истины ... отделенной от нас пропастью субъективного восприятия...
PM MAIL WWW Skype   Вверх
RockClimber
Дата 3.10.2008, 10:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Мое скромное имхо по теме...
1) ООП - не панацея от кривого кода. Кто не верит, могу прислать пару модулей, написанных моим коллегой на VB smile 
2) Модульность и полиморфизм/инкапсуляция/наследование - не одно и тоже. А от переписывания большого количества кода спасать должна правильная структура программы (и модульность - пророк её)...
3) ООП - это все-таки здорово, но только если без фанатизма...


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
Fiyanov
Дата 3.11.2008, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 255
Регистрация: 19.4.2007
Где: Kazakhstan->Te mirtau

Репутация: нет
Всего: 2



По теме сообщения:
Без классов можно, но имейте виду что их придумал для того что бы упростить жизнь программиста...
PM MAIL ICQ   Вверх
Фантом
Дата 6.11.2008, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 0
Всего: 49



Ко всему этому можно добавить, что в классах (и ООП в целом) нет ничего плохого... но только до тех пор, пока их не начинают пихать куда попало. У этой парадигмы есть определенная область применения, а попытки использовать ее в других задачах (к сожалению, чрезвычайно частые) обычно выглядят так, что вызывают желание полностью отказаться от ООП.  smile 
PM   Вверх
slavaentp
Дата 24.12.2008, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Хорошо, спрошу так: где граница между теми программами, где не нужно применять ООП, и теми, где ООП лучше применить?
PM MAIL   Вверх
Lazin
Дата 24.12.2008, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



по любому прийдется учить ООП smile 
PM MAIL Skype GTalk   Вверх
slavaentp
Дата 24.12.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Я и так ООП учу, просто пока что считаю его бесполезнымsmile Я не пытаюсь что-то доказать, я для себя хочу понять.

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

a = GetString();

b = LetUserInput(3);

InitiateConversation();

и т.д.

При этом - чтобы узнать, что каждая функция значит, нужно прыгать вверх, вниз(не знаешь же, где программист функции разместил, он как попало это часто делает), потом возвращаться к центру, следующая функция, опять вверх-вниз. Разве это удобно и читаемо?

---

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

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

---

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

А вот аргумент сторонника goto убийственный(с форума http://www.sql.ru:

"3) Целевой машинный код в конечном счете будет содержать goto, какие-бы вы не использовали структурно-обьектно-функциональные компилляторы.".

Ещё раз, я не спорю, я хочу для себя понять.
PM MAIL   Вверх
nerezus
Дата 24.12.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Конечно же можно без классов. Но нельзя без ООП, а классы в этом сильно помогают.

Пример огромной программы без классов: linux. Но ООП там есть.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
kosmonaFFFt
Дата 25.12.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  24.12.2008,  14:58 Найти цитируемый пост)
же состоит сплошь из юзером определённых функций, названия которых ничего не говорят стороннему наблюдателю!a = GetString();b = LetUserInput(3);InitiateConversation();и т.д.


Насчет нечитаемости/читаемости названия функций - это уже от их автора зависит,
а про прыжки туда - сюда, для этого есть много различных IDE и просто продвинутых текстовых
редакторов, где это все быстро и удобно реализовано.

И опять же комментарии при объявлении функций еще не отменял.

Кстати мну тут друг недавно рассказывал - пытался одной знакомой по
программированию помочь, у нее простенькая прога максимум строк на 400 на с++ была написана
сплошным текстом (без функций/классов) и с использованием того же goto, причем было много коментов нормальных, так он часа 3
пытался разобраться в этом всем - не смог, и минут за 30 написал то же самое, но с разбивкой
на функции, и заняло это по объему кода намного меньше.


--------------------
user posted image
PM MAIL ICQ   Вверх
Shaggie
Дата 29.12.2008, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Точно тролль.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
ksili
Дата 29.12.2008, 11:48 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Такое ощущение, что здесь почти все кроме slavaentp - тролли.

ООП почти ничего к читаемости кода не добавляет. Объём становится больше - без вопросов. А вот читаемость могут повысить только комментарии, внятные имена переменных и документация.
Я сейчас участвую в проекте на ООП. Куча классов, куча проектов, куча всего. И ни хрена сходу непонятно. Мне дают задание, говорят что надо использовать такой-то класс или либу с набором классом. Я начинаю делать, а потом оказывается, что там не то, или недоделано или есть ограничения, которые обходить дороже, чем сделать заново. В результате куча времени - сами знаете куда. А все потому, что в этой куче кода - ни строчки комментариев, о документации я вообще молчу. 

Я смотрю на класс и по тому, что он кого-то наследует, использует полиморфизм и другую х, мне не становится понятно, что он получает, что дает на выходе и какие он имеет ограничения в использовании. А теперь подставьте в предыдущем предложении вместо слова "класс" слово "функция" или "модуль" и оно останется справедливым. Потому что читаемость кода от подхода в программировании зависит самую малость, можно сказать в пределах погрешности.

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

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


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Lazin
Дата 29.12.2008, 12:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



ksili, при чем тут документация?
Разве не логичней, когда у тебя есть класс "строка", ты создаешь объект этого класса, а затем посылаешь сообщение "ToUpper" этому объекту, по твоему лучше когда вместо класса, объекта и сообщения у нас есть область памяти выделенная под строку, указатель на строку, куча переменных хранящих длину строки, кодировку символов и тд и функция, принимающая в качестве параметра указатель на область в памяти и кодировку символов?
Вообще, ###код можно писать как угодно, но код написанный в ООП стиле, если он написан правильно, намного проще использовать и сопровождать. Например мы пишем программу - редактор текста, и у нас есть класс CDocumentElement, от которого порожден класс CText, и от которого в свою очередь порожден CFormattedText, единственное отличие которого от простого текста - наличие форматирования. Теперь представим что нам потребовался класс CImage(наследник CDocumentElement) - встроенное в документ изображение, затем нам потребуется CAlignedImage итд. Это плохой дизайн, в этом случае получится очень сильно упростить программу, если ввести класс CFormat который был-бы декоратором для CDocumentElement и мог-бы изменять поведение вложенного в него объекта. 
Дело даже не в языке программирования, а в подходе, можно и на асме писать ОПП программы.
зы
кстати, хорошо спроектированная программа или библиотека не нуждается в большом количестве комментариев.

Добавлено через 1 минуту и 4 секунды
Цитата(ksili @  29.12.2008,  11:48 Найти цитируемый пост)
Такое ощущение, что здесь почти все кроме slavaentp - тролли.

Такое ощущение, что здесь почти все кроме slavaentp - занимались сопровождением собственного кода smile 
PM MAIL Skype GTalk   Вверх
ksili
Дата 29.12.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Lazin, и как часто мы пишем текстовые редакторы, которые будем сопровождать полжизни? 
Я не говорил, что ООП вообще не нужно. Если проект большой - пожалуйста. Но большая часть программ - не такие крупные проекты как Word. 
И еще. Меня всегда поражал такой фанатизм в дроблении: сделаем Image, из него AlignedImage, из него ещё какой-нибудь имэйдж... Любит человек размножаться ничего не скажешь... Нельзя было сразу сделать объект со всеми нужными свойствами? AlignedImage же тоже можно сделать невыровненным.
Цитата(Lazin @  29.12.2008,  16:47 Найти цитируемый пост)
по твоему лучше когда вместо класса, объекта и сообщения у нас есть область памяти выделенная под строку, указатель на строку, куча переменных хранящих длину строки, кодировку символов и тд и функция, принимающая в качестве параметра указатель на область в памяти и кодировку символов?

Есть базовые классы, они хорошо отработаны. их хватает для большинства часто решаемых задач. Если их не хватает, значит проект наверняка большой  и используй ООП на здоровье. Но все это 
Цитата

область памяти выделенная под строку, указатель на строку, куча переменных хранящих длину строки, кодировку символов и тд и функция, принимающая в качестве параметра указатель на область в памяти и кодировку символов

у тебя опять же  будет, только кроме этого ещё куча воды.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Lazin
Дата 29.12.2008, 13:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



Цитата(ksili @  29.12.2008,  13:07 Найти цитируемый пост)
Есть базовые классы, они хорошо отработаны. их хватает для большинства часто решаемых задач. Если их не хватает, значит проект наверняка большой  и используй ООП на здоровье. Но все это 
Цитата

область памяти выделенная под строку, указатель на строку, куча переменных хранящих длину строки, кодировку символов и тд и функция, принимающая в качестве параметра указатель на область в памяти и кодировку символов

у тебя опять же  будет, только кроме этого ещё куча воды. 

Только я ее видеть не буду, это уже кое-что
А насчет больших и маленьких проектов, ты слышал когда-нибудь про принцип DRY, разве ты не захочешь использовать повторно код, который ты писал для маленького проекта? В случае если это ООП код, то это легко сделать, если код, к примеру чтения из реестра размазан по коду программы, то даже в маленьком проекте его будет трудно изменить а использовать в другом проекте, то что ты уже делал крайне затруднительно. Мне однажды пришлось переписать такую "небольшую" программу. Там было всего около 4к строк, но это был абсолютно не сопровождаемый и не читаемый код, все состояло из пары десятков функций и такого-же количества глобальных переменных, все отправилось в унитаз =)
PM MAIL Skype GTalk   Вверх
ksili
Дата 29.12.2008, 13:34 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Цитата(Lazin @  29.12.2008,  17:29 Найти цитируемый пост)
но это был абсолютно не сопровождаемый и не читаемый код

а комментарии там были читаемые? Готов поспорить, что их там не было или почти не было
Цитата(Lazin @  29.12.2008,  17:29 Найти цитируемый пост)
ты слышал когда-нибудь про принцип DRY

неа
Цитата(Lazin @  29.12.2008,  17:29 Найти цитируемый пост)
разве ты не захочешь использовать повторно код

обычно я для этого использую CTRL-C  CTRL-V, но вообще обычно делать то, что уже делал раньше, не берусь. Как-то так получается

Это сообщение отредактировал(а) ksili - 29.12.2008, 13:35


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Lazin
Дата 29.12.2008, 14:01 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



какая разница были там комментарии или нет, мне что-бы что-то изменить в программе нужно весь код разбирать что-ли?
Don't Repeat Yourself smile 
Цитата(ksili @  29.12.2008,  13:34 Найти цитируемый пост)
обычно я для этого использую CTRL-C  CTRL-V, но вообще обычно делать то, что уже делал раньше, не берусь. Как-то так получается

вот представь, есть у тебя код для работы с реестром, скажем добавление ключа в реестр, ты его скопипастил в N проектов, потом выходит windows vista, в которой немного изменилась работа с атрибутами безопасности и этот код перестал работать, ты будешь руками править все эти N проектов?
PM MAIL Skype GTalk   Вверх
ksili
Дата 29.12.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Цитата(Lazin @  29.12.2008,  18:01 Найти цитируемый пост)
вот представь, есть у тебя код для работы с реестром, скажем добавление ключа в реестр, ты его скопипастил в N проектов, потом выходит windows vista, в которой немного изменилась работа с атрибутами безопасности и этот код перестал работать, ты будешь руками править все эти N проектов?

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


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Lazin
Дата 30.12.2008, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



Цитата(ksili @  29.12.2008,  14:08 Найти цитируемый пост)
если там много работы с реестром, то для этого у меня будет пара соответствующих функций. Собственно их и надо будет переправить.

функция это уже какая-то абстракция, один шаг до ООП, к примеру функции такие:
Код

  void regstry_addkey(HANDLE h, LPCSTR key, LPCSTR value);//добавить ключ в реестр
  void registry_remkey(HANDLE h, LPCSTR key);//удалить ключ из реестра

это уже ООП, только ты не знаешь об этом smile 
лично я тут вижу класс registry, и два его метода, то что это его методы нам говорит название ф-й и то, что они принимают в качестве первого аргумента один и тот-же параметр, который определяет экземпляр объекта
Это все эквивалентно такому коду:
Код

class registry
{
  HANDLE h;
public:
...
  void addkey(LPCSTR key, LPCSTR value);//добавить ключ в реестр
  void remkey(LPCSTR key);//удалить ключ из реестра
};

этот код с вашей с троллем точки зрения содержит много лишнего, а с моей точки зрения он понятней, к тому-же безопасней, так как нельзя вызвать метод с неверным аргументом smile 
PM MAIL Skype GTalk   Вверх
nerezus
Дата 30.12.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

это уже ООП, только ты не знаешь об этом
 О да, void * — офигенческий ООП.
Тогда можно сказать, что асм - самый оопный язык, т.к. там вообще типов нет.

Добавлено через 13 минут и 42 секунды
Lazin, а представь, что ты наследуешь "класс", т.е. дополняешь структуру(на которую тьвой void* смотрит) новыми данными.
Что получишь? Рантайм-ошибку конечно же.

На самом деле тебе придется при наследовании ПЕРЕписывать все ф-ии, т.е. писать над ними обертку для наследника.

+ отсутствует контроль во время компиляции, не говоря уже о подчеркивании красным в IDE.

Это сообщение отредактировал(а) nerezus - 30.12.2008, 10:06


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
ksili
Дата 30.12.2008, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Цитата(Lazin @  30.12.2008,  13:57 Найти цитируемый пост)
нельзя вызвать метод с неверным аргументом

для этого надо будет ещё постараться.

Цитата(Lazin @  30.12.2008,  13:57 Найти цитируемый пост)
функция это уже какая-то абстракция, один шаг до ООП

не передергивай. Также можно сказать, что создание своего типа типа - еще один шаг до ООП.

Цитата(Lazin @  30.12.2008,  13:57 Найти цитируемый пост)
это уже ООП, только ты не знаешь об этом

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

Не используя классы, я избавляюсь от 
1) неявных действий в виде конструкторов/деструкторов
2) глупых ограничений, типа "эту функцию над этими данными выполнить нельзя, т.к. они вообще друг друга не знают" (как же они меня бесят)


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
nerezus
Дата 30.12.2008, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



ksili, ООП возможно и без классов, если все принципы ООП соблюдаются.

Цитата

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


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
ksili
Дата 30.12.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Цитата(nerezus @  30.12.2008,  14:26 Найти цитируемый пост)
ksili, ООП возможно и без классов, если все принципы ООП соблюдаются

Ну я просто не знал, что их можно соблюсти и без классов

Добавлено через 7 минут и 56 секунд
А это реально бывает? или так, существует вероятность...


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Lazin
Дата 30.12.2008, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



Цитата(nerezus @  30.12.2008,  10:01 Найти цитируемый пост)
О да, void * — офигенческий ООП.


Цитата(nerezus @  30.12.2008,  10:01 Найти цитируемый пост)
Lazin, а представь, что ты наследуешь "класс", т.е. дополняешь структуру(на которую тьвой void* смотрит) новыми данными.
Что получишь? Рантайм-ошибку конечно же.

На самом деле тебе придется при наследовании ПЕРЕписывать все ф-ии, т.е. писать над ними обертку для наследника.


Код

struct my_base
{
    char* name;
    int data;
};

my_base* ctor_base(void* mem, char* name, int data)
{
  my_base* p = (my_base*)mem;
  size_t name_len = strlen(name);
  p->name =  (char*)malloc(name_len);
  strcpy(p->name, name);
  p->data = data;
  return p;
}

void base_method(by_base* self)
{
  print("%s, %d", self->name, self->data);
}

void dtor_base(my_base* self)
{
  free(self->name);
}

...
my_base* inst = ctor_base(malloc(sizeof(my_base)), "inst name", 111);
base_method(inst);
dtor_base(inst);
free(inst);
...

//Наследование
struct my_derived
{
    my_base base;
    double value;
}

my_derived* ctor_derived(void* mem, char* name, int data, double value)
{
  my_base* b = ctor_base(mem, name, data);
  my_derived* d = (my_derived*)b;
  d->value = value;
  return d;
}

void derived_method(my_derived* self)
{
  base_method((my_base*)self);
  print("%g", self->value);
}

void dtor_derived(my_derived* self)
{
  dtor_base((my_base*)self);
}

...
my_derived* inst = ctor_derived(malloc(sizeof(my_derived)), "derived", 111, 3.14159);
derived_method(inst);
dtor_derived(inst);
free(inst);
...

как видишь переписывать не пришлось, в общем, так выглядит наследование если убрать синтаксический сахар в виде классов smile 
что-бы такое не писать и придумали классы
вообще я тут не изображал виртуальные ф-ии, это не сложно в принципе, достаточно в my_base добавить указатель на таблицу виртуальных функций
Цитата(ksili @  30.12.2008,  10:21 Найти цитируемый пост)
Не используя классы, я избавляюсь от 
1) неявных действий в виде конструкторов/деструкторов
2) глупых ограничений, типа "эту функцию над этими данными выполнить нельзя, т.к. они вообще друг друга не знают" (как же они меня бесят) 

1) используй explicit для конструкторов, что плохого в том что вызывается деструктор я не понял...
2) ради этого все и задумывалось, что-бы обходить ограничения есть шаблоны, например:
Код

void send_to(int* where)
{
   while(somethig) *where++ = anything;
}

это плохо
Код

template<class Iter>
void send_to(Iter where)
{
   while(somethig) *where++ = anything;
}

а это хорошо, так-как будет работать как с std::vector<int>::intertor так и с int*
Цитата(ksili @  30.12.2008,  10:21 Найти цитируемый пост)
для меня ООП - это классы со всей их байдой. Если у меня в программе много сложных данных, я разруливаю это при помощи структур и функций, работающих с этими структурами. Как то я вот так привык. 

для меня ООП - это способ ясно выразить архитектуру приложения, классы в этом помогают smile 

Это сообщение отредактировал(а) Lazin - 30.12.2008, 10:58
PM MAIL Skype GTalk   Вверх
Shaggie
Дата 30.12.2008, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(ksili @  29.12.2008,  11:48 Найти цитируемый пост)
А вот читаемость могут повысить только комментарии, внятные имена переменных и документация.

У меня в legacy проекте есть комментарии и документация, два пункта из трёх. Но этого, оказывается, маловато. И даже переименовывание переменных не помогает. Чую отчётливый запах серы.

Цитата(ksili @  29.12.2008,  11:48 Найти цитируемый пост)

Больше всего в ООП мне не нравятся всякие неявные действия - конструкторы и особливо десктрукторы. От того, что в программе выполняется функция, которой нет в тексте исполняемого модуля, по-моему ни фига не проще программировать.

Сложно? Создаётся объект - вызывается конструктор, уничтожается объект - вызывается деструктор. Другое дело, что в них можно любой лишний код засунуть, ну так это не от ООП зависит. Опять же - действия конструкторов/деструкторов разрешено документировать так же свободно, как любой другой код.

Неявный вызов деструкторов? Это не std::auto_ptr ли в коллекциях замешан? Тут несколько другая ситуация, неоднократно упомянутая в различных источниках. Другой случай? Давай разберёмся - я искренне заинтересован.

Чем дальше, тем больше в программировании неявных действий. Ты же не ругаешься, что компилятор без твоего участия сам PE заголовок виндовому экзешнику выстраивает, секции кода/данных/стека размечает. Никогда не было трудностей с пониманием работы коллбеков (мне крышу сорвали в своё время начисто)? Сейчас даже в программировании на ассемблере неявностей выше крыши, и сделано это не ради запутывания несчастных мятущихся программерских душ, но для упрощения процесса программирования. И это ты ещё АОП не видел!

А по факту, современные скриптовые языки (самые известные - перл, пайтон, руби), все как один обладают вагоном неочевидных на первых взгляд тонкостей. Перловые "$<symbols>", пайтоновые "__<functions>__", и так далее. Я лично от таких плюшек в полном восторге.

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


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
ksili
Дата 30.12.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Цитата(Shaggie @  30.12.2008,  15:32 Найти цитируемый пост)
Другой случай? Давай разберёмся - я искренне заинтересован

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

Цитата(Shaggie @  30.12.2008,  15:32 Найти цитируемый пост)
Да, процесс программирования имеет постоянную тенденцию к усложнению, обсуждено тысячи раз. А всё для того, чтобы один программист мог как можно дольше удерживать в голове картинку происходящего.

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

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


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Lazin
Дата 30.12.2008, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



Цитата(ksili @  30.12.2008,  12:04 Найти цитируемый пост)
Вообще таких специалистов как топикстартер сейчас пожалуй даже не хватает в реальном производстве. Я имею в виду людей который не ломает писать на ассемблере или С без использования каких бы то ни было шаблонов. А ООП-шников навалом. Предложи человеку, который первое что узнал - ООП, что-нибудь написать для микроконтроллера, так он и на С наверно этого сделать не сможет. 

я думаю это заблуждение, программирование развивается в сторону большей абстракции, так-как:
  • железо стоит дешево
  • программисты стоят дорого
то-есть, нанимая 10 программистов на Си, работодатель получает через какое-то время готовый проект который относительно быстро работает, но он его разработка обошлась дорого и его сложно поддерживать, так-как для этого опять-же нужны программисты на Си. 
В то-же время можно нанять одного ООП-шника программиста на python, java, C# etc (в зависимости от задачи), который сделает то-же самое, но быстро, этот проект сможет поддерживать кто угодно, а разницу в скорости работы программы можно очень недорого компенсировать лучшим железом. В общем это намного дешевле, соответственно конечный продукт при том-же функционале будет стоить намного меньше.
Кстати, контроллеры нынче часто программируют на java, и в этом нет ничего плохого smile

user posted image

Это сообщение отредактировал(а) Lazin - 30.12.2008, 12:54
PM MAIL Skype GTalk   Вверх
ama_kid
Дата 30.12.2008, 13:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: нет
Всего: 95



Цитата(Lazin @  30.12.2008,  13:51 Найти цитируемый пост)
Кстати, контроллеры нынче часто программируют на java, и в этом нет ничего плохого
Можешь привести парочку наименований? Я хоть для общего развития почитаю про них, а то не слышал про такое... Кстати, хорошего на мой взгляд в этом ничего нет, но возможно, у меня взгляд замылен, и технологии уже утопали настолько далеко, что я безнадежно отстал от них. Тогда надо наверстывать smile
Цитата(Lazin @  30.12.2008,  13:51 Найти цитируемый пост)
то-есть, нанимая 10 программистов на Си, работодатель получает через какое-то время готовый проект который относительно быстро работает, но он его разработка обошлась дорого и его сложно поддерживать, так-как для этого опять-же нужны программисты на Си. 
В то-же время можно нанять одного ООП-шника программиста на python, java, C# etc (в зависимости от задачи), который сделает то-же самое, но быстро, этот проект сможет поддерживать кто угодно, а разницу в скорости работы программы можно очень недорого компенсировать лучшим железом.
Я думаю, ksili не зря упомянул про реальный сектор. А там - всякие питоновцы, пхп-вцы, C#-цы и прочие (около)web-кодеры места себе не найдут или найдут, но где-то на очень высоком уровне абстракции от собственно реального уровня промышленного оборудования... 
Для темы общесофтварной разработки - ты, конечно, прав... smile 
Цитата(Lazin @  30.12.2008,  13:51 Найти цитируемый пост)
железо стоит дешево
Опять же, сертифицированное железо, применяемое в реальном (т.е. околотехнологическом) производстве, стоит ОЧЕНЬ дорого (по сравнению с себестоимостью, конечно). Несертифицированное - просто мало кто применяет, а кто применяет - на свой страх и риск и как правило на некритичных\вспомогательных участках и\или в условиях недофинансирования...
Цитата(ksili @  30.12.2008,  13:04 Найти цитируемый пост)
Вообще таких специалистов как топикстартер сейчас пожалуй даже не хватает в реальном производстве. Я имею в виду людей который не ломает писать на ассемблере или С без использования каких бы то ни было шаблонов. А ООП-шников навалом. Предложи человеку, который первое что узнал - ООП, что-нибудь написать для микроконтроллера, так он и на С наверно этого сделать не сможет. 
правильно сказал, я бы даже немного добавил - очень нехватает людей, которые могут с легкостью обучиться чему-то нестандартному и подхватить на лету "идею", и именно люди с незашоренным философией ООП взглядом могут проявить себя в таком качестве максимально эффективно. Собственно, берусь это утверждать именно потому, что за несколько лет работы в этой отрасли из всех студентов, что у меня были - только два смогли реально быстро включиться в работу и оба, как ни странно, очень хорошо знали только ассемблер\базовый С, ну и аппаратно\электронную сторону железа. Всякие ООП им нафиг не сдались на то время...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Lazin
Дата 30.12.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



вот например

Добавлено через 3 минуты и 23 секунды
Цитата(ama_kid @  30.12.2008,  13:40 Найти цитируемый пост)
Я думаю, ksili не зря упомянул про реальный сектор. А там - всякие питоновцы, пхп-вцы, C#-цы и прочие (около)web-кодеры места себе не найдут или найдут, но где-то на очень высоком уровне абстракции от собственно реального уровня промышленного оборудования... 

реальный сектор это не только встраиваемые системы smile 

Цитата(ama_kid @  30.12.2008,  13:40 Найти цитируемый пост)
правильно сказал, я бы даже немного добавил - очень нехватает людей, которые могут с легкостью обучиться чему-то нестандартному и подхватить на лету "идею", и именно люди с незашоренным философией ООП взглядом могут проявить себя в таком качестве максимально эффективно. Собственно, берусь это утверждать именно потому, что за несколько лет работы в этой отрасли из всех студентов, что у меня были - только два смогли реально быстро включиться в работу и оба, как ни странно, очень хорошо знали только ассемблер\базовый С, ну и аппаратно\электронную сторону железа. Всякие ООП им нафиг не сдались на то время... 

так ведь это не проблема ООП подхода а проблема обучения, кто мешает знать и то и другое?
PM MAIL Skype GTalk   Вверх
perloid
Дата 30.12.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 14.11.2008

Репутация: нет
Всего: -1



Можно и без классов - напирмер oberon, javascript ... Классы это всего лиш способ реализации ООП в некоторых языках. В oberon (zonnon, blackbox) нету никаких классов, есть расширяемые структуры, есть модули.
PM MAIL   Вверх
source777
Дата 7.1.2009, 18:41 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Цитата(Lazin @  29.12.2008,  12:47 Найти цитируемый пост)
кстати, хорошо спроектированная программа или библиотека не нуждается в большом количестве комментариев.
+1
На практике комментарии не так уж полезны, как об этом теоретизируют, зачастую даже вредны. Надо чётко осознавать, что хорошие комментарии не дублируют код и не объясняют его, они лишь поясняют его цель, т.е. описывают намерения программиста, а не то, что он написал, т.к. сам язык программирования в этом плане гораздо яснее и лаконичнее. Если же программист не способен написать код, который понятен без комментариев(т.е. комментарии чуть ли не в каждой третьей строке), то с чего вы взяли, что он будет способен написать понятный комментарий  smile  Такие комментарии вредны, и со временем вовсе рассинхронизируются с кодом, что приводит к тому, что неправильными становятся и код, и комментарии к нему.
Хороший код читается как простой текст на английском(пусть и немного корявый со стилистической точки зрения), и классы в данном плане отлично помогают. Но надо понимать, что классы - это синтаксический сахар, как тут уже говорили, т.е. они делают процесс кодирования более приятным, но отнюдь не обеспечивают ООП... 
ООП может быть без классов, а классы могут быть без ООП. Большинство противников ООП просто не осознают сей простой факт.
 



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
nerezus
Дата 7.1.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



source777, *doc - это тоже комментарии, если что ;)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
lukas
Дата 8.1.2009, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: нет
Всего: 15



Поди напиши VCL на одних функциях и goto.

Хороший пример применения ООП это обертка GUI для WinAPI.


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
31416
Дата 9.1.2009, 06:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



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

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

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

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

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

Вот такое вот у меня на сегодняшний день мнение)
--------------------
Мой блог
PM MAIL WWW ICQ   Вверх
Torsten
Дата 11.2.2009, 20:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 10.6.2008
Где: Pskov

Репутация: нет
Всего: 7



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

Добавлено через 3 минуты и 47 секунд
Цитата(source777 @  7.1.2009,  18:41 Найти цитируемый пост)
+1На практике комментарии не так уж полезны, как об этом теоретизируют, зачастую даже вредны. Надо чётко осознавать, что хорошие комментарии не дублируют код и не объясняют его, они лишь поясняют его цель, т.е. описывают намерения программиста, а не то, что он написал, т.к. сам язык программирования в этом плане гораздо яснее и лаконичнее. Если же программист не способен написать код, который понятен без комментариев(т.е. комментарии чуть ли не в каждой третьей строке), то с чего вы взяли, что он будет способен написать понятный комментарий    Такие комментарии вредны, и со временем вовсе рассинхронизируются с кодом, что приводит к тому, что неправильными становятся и код, и комментарии к нему.Хороший код читается как простой текст на английском(пусть и немного корявый со стилистической точки зрения), и классы в данном плане отлично помогают. Но надо понимать, что классы - это синтаксический сахар, как тут уже говорили, т.е. они делают процесс кодирования более приятным, но отнюдь не обеспечивают ООП... 

+1, на учебе мне постоянно вдалбилвали - вы должны все комментировать (чуть ли не каждую строку), только потом почитав умных людей и проанализировал я понял что нужно комментировать, а что не нужно. И это очевидно.
Все эти системы наподобие doxygen, вместо того чтобы помочь комментировать код - его портят. Отсюда и появилось выражение, "такой хороший код, комментариями испортили".

Это сообщение отредактировал(а) Torsten - 11.2.2009, 20:12
--------------------
We have no begining, we have no end. We are infinite.
PM MAIL   Вверх
makarov_dv
Дата 14.2.2009, 15:25 (ссылка)   | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 19.1.2008

Репутация: нет
Всего: нет



Очень интересная тема.....

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

Программист, работающий под конкретную задачу, это боец. Мгновенная реакция. Идеальное владение техникой. Хакер, с точки зрения не деструктивных мотиваций, а возможности программирования on-line.

Архитектор продает продукт, Хакер свою работу.

Как правильно программировать, вопрос не принципа, а психологии.

Холерик и сангвиник - Хакеры.
Флегматик и меланхолик - Архитекторы.



PM MAIL   Вверх
Krawler
Дата 15.3.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 25.6.2008

Репутация: нет
Всего: нет



Цитата(makarov_dv @  14.2.2009,  15:25 Найти цитируемый пост)
Флегматик и меланхолик - Архитекторы.

 [offtopic] Я флегматик. => Я архитектор... Верно подмечено, мне ООП нравится гораздо больше процедурного стиля... И когда пришлось работать как-то с чистым WinAPI у меня промелькнула мысль: а почему бы не сделать обертку для всего этого с использованием ООП

Это сообщение отредактировал(а) Krawler - 15.3.2009, 17:34
PM MAIL   Вверх
kosmonaFFFt
Дата 15.3.2009, 20:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



smile Кстати да, я тож например флегматик и ближе к архитектору, чем к хакеру...
Сейчас например LISP осваиваю, так первое за что взялся - объектная система... smile


--------------------
user posted image
PM MAIL ICQ   Вверх
slavaentp
Дата 29.11.2009, 16:33 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Объясню, за что я на функции взъелся: не люблю прыгать по коду и постоянно скроллить туда-сюда.

Я когда писал программы для себя какие-то, часто начинал(или продолжал) писать по "общим правилам" - мол, надо функции, одна функция делает одну штуку и т.д.

А через какое-то время в программе наступает тупик - не получается реализовать что-то. И я понимаю, что запутался в собственной программе.

Начинаю оптимизировать и понимаю, что программе не хватает комментариев. Делаю комментарии. А потом замечаю, что мне очень неудобно работаьт с функциями.
Код

if (условие)
{
     Funktsiya();
}

А потом надо скроллить куда-то в конец кода, где эта функция. Смотреть, что там. А потом прыгать обратно. Жутко неудобно. Поэтому я сношу эту функцию и вставляю в общий код и делаю нужные комментарии.

Добавлено через 6 минут и 33 секунды
И ещё меня бесят функции в учебных примерах. Очень неудобно читать. MSDN любит писать примеры программы "Hello, world!" кодом на 1000 строк, чтобы программа одновременно ещё и теорему Ферма доказывала(вдруг кто заинтересуется?), хотя я всего лишь интересовался "Console.WriteLine".

И меня раздражает, когда вместо обычного линейного кода я получаю что-то типа "LetThisShitWork()" и полные непонятки, чот это означает. Приходится скроллить весь код, искать название этой функции, потом скроллить обратно. 

В то же время, если бы код был написал линейно, я бы сразу определил ненужные мне инструкции, пропустил бы их и дошёл до нужных, быстро найдя то, что я искал.
PM MAIL   Вверх
DenWPF
Дата 29.11.2009, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



для этого в MSDN есть синтаксис, который показывает функцию, и если ты доверяешь своим знаниями, то ты можешь без примера всё сделать. а пример это уже для тех кто не смог справится иил не азохтел с одним синтаксисом.
PM MAIL   Вверх
source777
Дата 29.11.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Цитата(slavaentp @  29.11.2009,  16:33 Найти цитируемый пост)
И меня раздражает, когда вместо обычного линейного кода я получаю что-то типа "LetThisShitWork()" и полные непонятки, чот это означает. 

А ты пробовал именовать функции нормальными идентификаторами, а не такими дебильными как LetThisShitWork и Funktsiya?

P.S. Нехорошо откапывать такие старые темы smile 



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
slavaentp
Дата 29.11.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(DenWPF @ 29.11.2009,  17:15)
для этого в MSDN есть синтаксис, который показывает функцию, и если ты доверяешь своим знаниями, то ты можешь без примера всё сделать. а пример это уже для тех кто не смог справится иил не азохтел с одним синтаксисом.

Что ты имеешь в виду под словом "синтаксис"? Я плохо понимаю описания MSDN. Я гораздо лучше понимаю на примерах.

Добавлено через 1 минуту и 50 секунд
Цитата(source777 @ 29.11.2009,  19:15)
Цитата(slavaentp @  29.11.2009,  16:33 Найти цитируемый пост)
И меня раздражает, когда вместо обычного линейного кода я получаю что-то типа "LetThisShitWork()" и полные непонятки, чот это означает. 

А ты пробовал именовать функции нормальными идентификаторами, а не такими дебильными как LetThisShitWork и Funktsiya?

P.S. Нехорошо откапывать такие старые темы smile

Я делаю функции с хорошими именами. А вот MSDN и многие авторы туториалов - нет.
А тему поднял, потому что возник непонятный вопрос.

На самом деле не так всё однозначно - я написал тот пост и сам засомневалсяsmile) Но вот про туториалы и МСДН точно так.
PM MAIL   Вверх
Exai1e
Дата 30.11.2009, 04:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



slavaentp, незнаю, у меня доки в мсдн практически не когда не вызывали проблем с понятием кода по какой либо функции или классу, а если оттуда не мог уловить описание той или иной информации, потому что не всегда хватало знания моего анг =) то гугл выручал всегда.
Это на вкус и цвет, пасмотрите Java api doc у sun. там вообще сам черт ногу сломит (имхо естесно) по сравнению с MSDN

комментарии дело хорошее, когда ими пользуются осмысленно, про что сказал source777[/B) а не в стиле:

Код

//Объявляем переменную А
int a;
//Объявляем переменную B
int b;
//Объявляем переменную RESULT
int result;
//Складываем значение переменной A со значением переменной B и заносим полученный результат в переменную RESULT
result = a + b;

//etc



например если я объявил где то [b]простой
 метод к примеру:
Код

        //Добавление пользователя в список на сервере
        public bool AddUser(string pUserName, string pUsersurname)
        {

        }

я помечу его однострочным комментирием, иногда по ним проще ориентироваться, хотя задача метода часто бывает понятна из имени метода =)

Это сообщение отредактировал(а) Exai1e - 30.11.2009, 11:36


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Любитель
Дата 30.11.2009, 06:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Цитата(slavaentp @  29.11.2009,  16:33 Найти цитируемый пост)
В то же время, если бы код был написал линейно, я бы сразу определил ненужные мне инструкции, пропустил бы их и дошёл до нужных, быстро найдя то, что я искал. 

Убило smile 


--------------------
PM MAIL ICQ Skype   Вверх
kosmonaFFFt
Дата 30.11.2009, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Насчет перескоков к функции - а не судьба пользоваться IDE, которые это умеют? Мну например, чтобы прыгнуть куда-то, надо просто нажать шифт и жмакнуть по функции мышом... Ну и к тому же если функция работает без ошибок, то зачем смотреть ее код, при каждом вызове? Достаточнотолько знать что она делает...


--------------------
user posted image
PM MAIL ICQ   Вверх
slavaentp
Дата 5.12.2009, 17:18 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



_______

Это сообщение отредактировал(а) slavaentp - 5.12.2009, 17:19
PM MAIL   Вверх
slavaentp
Дата 10.12.2009, 19:44 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Приведу пример насчёт MSDN.

Вот мне нужно сделать очень простую вещь. Простейшую. На экране должна появиться цифра 1 и через секунду должна появиться цифра 2. Всё, больше ничего не надо.

Я не знаю как это делать. Но знаю, что в C# есть "Timer", вроде он за это отвечает. Открываю MSDN, набираю "Timer" в поисковом окне. Жму на вторую ссылку, мне там выдаёт:

Цитата

Предоставляет механизм для выполнения метода в заданные интервалы времени. Этот класс не может наследоваться.

Примененный к данному типу или члену атрибут HostProtectionAttribute имеет следующее значение свойства Resources: Synchronization | ExternalThreading. Атрибут HostProtectionAttribute не оказывает влияния на настольные приложения (обычно запускаемые двойным щелчком значка, вводом команды или вводом URL в обозревателе). Дополнительные сведения см. в описании класса HostProtectionAttribute или в разделе Программирование SQL Server и атрибуты защиты основного приложения.
saba8ksx.alert_note(ru-ru,VS.90).gifПримечание.

Примененный к этому классу атрибут HostProtectionAttribute имеет следующее значение свойствResources: Synchronization | ExternalThreading. Атрибут HostProtectionAttribute не оказывает влияния на приложения рабочего стола (обычно запускаемые двойным щелчком значка, вводом команды или вводом URL-адреса в веб-обозревателе). Дополнительные сведения см. в описании класса HostProtectionAttribute или разделе Программирование SQL Server и атрибуты защиты основного приложения.

Следует использовать делегат TimerCallback для задания метода, который надо выполнить объектом Timer. Делегат таймера задается при создании объекта таймера и не может изменяться. метод не выполняется в потоке, создавшем таймер; он выполняется в отдельном потоке ThreadPool, предоставляемом системой.

При создании таймера можно задать количество времени, в течение которого ожидать первого выполнения метода (ожидаемое время), и количество времени, в течение которых происходит ожидание между последовательными вызовами (период). Можно изменять эти значения, или отключить таймера используя метод Change.
saba8ksx.alert_note(ru-ru,VS.90).gifПримечание.

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

Когда в таймере больше нет необходимости, следует использовать метод Dispose для освобождения ресурсов, которые занимает таймер. Для получения сигнала после ликвидации таймера следует использовать перегрузку метода Dispose(WaitHandle), использующую WaitHandle. Объект WaitHandle получает сигнал при удалении таймера.

Метод обратного вызова, выполняемый таймером, должен быть реентерабельным, так как он вызывается потоками из ThreadPool. Обратный вызов может выполняться одновременно в двух пулах потоков, если интервал таймера меньше, чем время, нужное для выполнения обратного вызова, или если все пулы потоков уже используются, а обратный вызов запрошен несколько раз.
saba8ksx.alert_note(ru-ru,VS.90).gifПримечание.

Объект System.Threading..::.Timer — простой таймер, использующий методы ответного вызова, который обслуживается потоками пула. Не рекомендуется использовать с Windows Forms, поскольку обратные вызовы не происходят в потоках пользовательского интерфейса. System.Windows.Forms..::.Timer является более желательным вариантом для использования с Windows Forms. Для функций таймера, базирующихся на сервере, можно использовать System.Timers..::.Timer, который управляет событиями и обладает дополнительными функциями.
 Примеры

Вот как мне по ЭТОМУ понять, как мне мою простенькую задачу выполнить?

PM MAIL   Вверх
kosmonaFFFt
Дата 10.12.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



0) написать метод, который вызывается по таймеру
1) создать таймер, передать ему делегат на метод
2) задать время срабатывания 1 с
3) задать однократное срабатывание
4) запустить таймер
smile Примерно так...
Я когда последний раз пользовался таймером на C#, вообще не читал ничего, а просто посмотрел какие методы у него есть,
и сделал то, что мне нужно...


--------------------
user posted image
PM MAIL ICQ   Вверх
Lazin
Дата 10.12.2009, 22:33 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



Цитата(slavaentp @  10.12.2009,  19:44 Найти цитируемый пост)
Вот как мне по ЭТОМУ понять, как мне мою простенькую задачу выполнить?
блин, да проблема оказывается не в классах, может начать с чего нибудь попроще, ну там с helloworld-a например?
PM MAIL Skype GTalk   Вверх
source777
Дата 10.12.2009, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Да закройте уже эту тему. А то скоро её будет пора в песочницу переносить...


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
GoldFinch
Дата 11.12.2009, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(slavaentp @  10.12.2009,  19:44 Найти цитируемый пост)
Вот мне нужно сделать очень простую вещь. Простейшую. На экране должна появиться цифра 1 и через секунду должна появиться цифра 2.

в псевдокоде:
Код

print("1")
sleep(1000)
print("2")


Это сообщение отредактировал(а) GoldFinch - 11.12.2009, 10:58
PM MAIL ICQ   Вверх
list2006
Дата 29.9.2010, 17:11 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 30.12.2006

Репутация: нет
Всего: нет



Тебе мой друг подойдет Си (чистый, не С++)
хотя не кто не заставляет классы строить, он идеален как объект данных, в остальном это не панацея и пихать куда не надо не стоит.
PM MAIL   Вверх
RockClimber
Дата 30.11.2010, 08:54 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Цитата(list2006 @  29.9.2010,  17:11 Найти цитируемый пост)
Тебе мой друг подойдет Си (чистый, не С++)

А паскаль не подойдет? Чорт, а я уже все написал...


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

• изменяющиеся языки и методологии программирования;


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Философия программирования | Следующая тема »


 




[ Время генерации скрипта: 0.2705 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.