![]() |
|
Модераторы: LSD |
![]()
|
|
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
Для четкого порядка выполнения существуют скобки, вовсе не обязательно помнить порядок выполнения всех операторов. Отказываться от какой либо возможности языка стоит лишь тогда, когда от нее есть только вред и никакой пользы. А так код испортить можно чем угодно, функция math.abs вполне может форматировать диск, никто не мешает программисту написать такой код, но это не значит, что от функций нужно отказываться. Добавлено @ 11:10 Мне непонятно что в перегрузке удивительного? Можно написать функцию add, которая будет выполнять деление, это тоже будет удивительно, но это НЕ аргумент в пользу отказа от функций, это аргумент в пользу увольнения программиста. Это сообщение отредактировал(а) azesmcar - 6.12.2011, 11:10 |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 1 Всего: 19 |
Нет. Если в мануале по языку сказано, что встроенная функция add обладает всеми свойствами математического плюса и предназначена для сложения двух чисел, в случае с отсутствием возможности перегрузки (или перегрузки встроенных функций, не знаю, бывает ли такое в жизни), я могу со всей уверенностью писать add(a,b), не опасаясь угробить свой порно-архив.
Это сообщение отредактировал(а) newbee - 6.12.2011, 11:56 -------------------- You're face to face With man who sold the world |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 1 Всего: 19 |
Стандартный оператор +. Я его перегружаю и переназначаю на деление. Потом вижу в коде a<стандартный оператор +>b и открываю небольшой кирпичный заводик.
azesmcar, наш спор не имеет смысла, т.к. я сама выступаю за максимальную вседозволенность - фрилав, анархия и полный легалайз! - просто в топике выступаю в роли Кэпа: чем язык гибче, тем больше потенциальных косяков может всплыть во время его использования. Это не должно останавливать от использования такого языка, но просто быть готовым к неожиданностям надо. Еще в кучу перегрузки (функций): если программа на нашем языке выполняется нативно, перегрузка неизбежно (или нет?) приведет к name-mangling в исполняемом файле программы. -------------------- You're face to face With man who sold the world |
|||
|
||||
| 502 |
|
|||
![]() Я всегда прав ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 16.7.2011 Репутация: нет Всего: 4 |
||||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 1 Всего: 19 |
Делай, но согласись, одно дело, когда непонятное поведение преследует тебя только в твоем коде, и другое - если оно по факту может происходить в любом месте.
Ну вообще то да, случается, что волнует. -------------------- You're face to face With man who sold the world |
|||
|
||||
| 502 |
|
|||
![]() Я всегда прав ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 16.7.2011 Репутация: нет Всего: 4 |
||||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 1 Всего: 19 |
Это в язык не встроено. Тут ты полагаешься на авось, изучаешь документацию на функцию add или вычитываешь ее исходник. Если в языке включена перегрузка, выполняешь квест, описанный ниже.
Это встроено. Если перегрузки нет, ты уверен, что выполнится именно то, что написано: значения двух переменных будут сложены - вот в этом весь цимес. Если мы имеем перегрузку функций/операторов, в этом ты тоже не уверен и полагаешься на авось или ищешь типы переменных (а в с++ еще и то к каким типам они могут быть приведены! (а в с++ типы приводятся двумя способами, совсем свихнуться можно!)), устанавливаешь какой из множества операторов + будет выполнен и изучаешь документацию на него или вычитываешь его исходник. -------------------- You're face to face With man who sold the world |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
a + b для НЕ фундаментальных типов тоже в документацию не встроено. Речь идет не о переопределении операторов, а о перегрузке. |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 1 Всего: 19 |
-------------------- You're face to face With man who sold the world |
|||
|
||||
| 502 |
|
|||
![]() Я всегда прав ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 16.7.2011 Репутация: нет Всего: 4 |
подставь a.add(b) вместо a+b, ничего не изменится => методы/функции не нужны Это сообщение отредактировал(а) 502 - 6.12.2011, 14:38 |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 1 Всего: 19 |
Добавлено через 1 минуту и 16 секунд И ваще, господа спорщики, выкладывайте свои мнения по поводу сабжа а не моего первого комментария -------------------- You're face to face With man who sold the world |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
Я и говорю о том, что если программист перегружает оператор + и реализует в нем деление, то его надо кастрировать. Это не повод отменять операторы и их перегрузку, как неправильное использование исключений не повод отменять исключения. Перегрузка операторов - это всего лишь еще одна возможность языка и это возможность (как и впрочем 99% других) дает программисту возможность написать индокод, но это не значит, что сама возможность плохая и она не нужна. Я говорю о том, что не считаю аргументом в пользу отказа от некой возможности то, что используя эту возможность можно написать плохой код. Мое мнение о сабже я давно высказал. Операторы и их перегрузка довольное полезные штуки, но использовать их надо по назначению. У меня нет аргументов, почему язык должен этого не поддерживать, у меня есть аргументы для обратного утверждения. Почему я должен делить значение встроенного типа int с помощью оператора, а своего типа big_int с помощью функции? Это сообщение отредактировал(а) azesmcar - 6.12.2011, 14:58 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
Да полностью согласен.. Для тех, кому гибкость не нужна, такие языки как С++ противопоказаны, в крайнем случае С в котором отсутсвует перегрузка как таковая, хотя и он для неокрепшей психики не рекомендуются.. Лучше уж к языкам Виртам приобщиться (привет главному агитатору этого дела, давно его видно не было).. Сухие, не эмоциональные предложения обеспечат мнимую уверенность в безопасности кода.. Но есть люди, которым охота придать окрас своим предложениям.. Им не нравится односложные предложения первого класса, а хочется передать свою мысль во всей ее красоте. Таким неохота нудно и банально описывать компилятору, что он должен сделать, а проще переложить эту рутинную работу на его плечи, извлекая из системы типов максимальную пользу... Но для второго мало желания красиво выражаться, нужно еще и учиться, знать правила (а в некоторых языках (С++) из за многообразия ньюансов это действительно затруднительно).. Мало вероятно, что некто имея уровень образования соответсвующий 3му классу, сможет писать сочинения на уровне Чехова.. Поэтому мое мнение, спорить надо не о наличие в языке возможностей перегрузки, в частности, операторов, а о пороге вхождения таких языков.. P.S. (примеры языков приводил со своей колокольни) Это сообщение отредактировал(а) mes - 7.12.2011, 09:01 |
|||
|
||||
![]()
|
| Правила ведения Религиозных войн | |
|
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Религиозные войны | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |