15 / 15 / 3
Регистрация: 04.02.2013
Сообщений: 124
|
|||||||||||
1 | |||||||||||
Что плохого в явном написании условия в if?28.06.2015, 12:37. Показов 3099. Ответов 78
Метки нет (Все метки)
Вы не погорячились? что такого плохого в
0
|
28.06.2015, 12:37 | |
Ответы с готовыми решениями:
78
Просьба помочь разобраться в написании проверки условия. Что означает объявить элемент в явном виде? Нарушение стека в RunDll32. Что плохого случится? Что плохого в 2 partial classes в одном файле? |
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
29.06.2015, 15:24 | 61 |
Только Вы путаете причину и следствие. Выдавая следствие за причину и наоборот. Цель - си совместимость, слабость типизации (тоже почему-то именно в этом вопросе, а не в остальных случаях) - следствие. Следовательно bool - костыль. Ненужно.
А слона-то Вы решили ненароком не заметить. А вот он: Факты применения не относятся к теме разговора. Осветите функциональныю составляющую этого типа в языке. Те возможности, которые он добавляет в язык и те возможности, которые без этого типа нивелируются.
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
29.06.2015, 15:42 | 62 |
Пусть так. Только как это влияет на присутствие или отсутствие типа? Ну сделан bool таким для совместимости. Ну унаследовал С++ слабую типизацию от С. Да, сначала унаследовал, потом слабую. Я с этим не спорю и не "не замечаю". Что это меняет-то? В стандарте тип есть, компиляторы его требуют, используется он сейчас уже повсюду.
bool тоже в этом списке. Тип есть, но он не нужен. Твое право так думать. Хорошо. Твоя попытка притянуть за уши свойства типа bool из Haskell не выдерживают критики. Вообще говоря, можно обойтись одним единственным целочисленным типом, например int. Без short и long прекрасно можно обойтись. И никаких принципиальных возможностей, которые нивелируются их отсутствием, они тоже не добавляют. Только странно делать на основе этого выводы, что будто бы остальные типы не нужны. Так чем bool так провинился?
1
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
29.06.2015, 16:40 | 63 |
Моё imho по этому вопросу
Но в крестах есть и абсолютный нуль, и булев тип, ВП. Под абсолютным нулем тут понимается то что всегда ложь, а все остальное - истина. Независимо от типов, как в си, cl, forth. Это печально xD Тут Вы недооцениваете положение. Можно и на BrainF* писать. На множестве целочисленных типов определены функции (или операции, кому как удобней). Можно исходить из того что булев тип - подмножество целого, но тогда и множество функций обязано распространяться на этот тип, что противоречит мат аппарату. Да ни чем. Просто лишняя сущность. Мне вообще все равно, просто товарищи начали доказывать какую-то ерунду.
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
29.06.2015, 16:59 | 64 |
castorsky, ладно. Мне твое мнение понятно. Если будем продолжать, то тему придется переносить в другой раздел, а мне бы этого не хотелось.
Будь здоров.
0
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
29.06.2015, 17:58 | 65 |
Просто лол. А разгадка-то проста, байтослесарям лишь относительно недавно завезли тип bool, поэтому они и раскорячивались как могли. А потом уже настолько к этому привыкли, что считают теперь, что это норма. Каргокультисты, что с них взять. Как тут не вспомнить историю про обезьян которых поливали водой при попытке сорвать банан
0
|
15 / 15 / 3
Регистрация: 04.02.2013
Сообщений: 124
|
|
29.06.2015, 18:39 [ТС] | 66 |
Не по теме: Ничего себе, топик создал случайно. ))) Нет, все правильно, сравнивать в условии переменную с истиной или ложью смысла большого нет, сам так не делаю (делаю, если не высплюсь))). Но криминала в этом тоже нет. Не называть же человека "не умным" или "не адекватным", из-за того, что он пишет x = x + y вместо x += y. По крайней мере подобные ошибки поправимы, а вот если человек на 2-м курсе не понимает, что такое указатель, то это уже плохо.
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
30.06.2015, 04:51 | 67 |
Ну я ж и говорю - что не дай монкейкодерам из мелкософта из всего придется C# делать.
Добавлено через 4 минуты А для тех кто не понимает что такое указатель после получения диплома и кучи сертификатов разработчика микрософт придумали C#. Вопрос в том что если человек не понимает как if работает то до понимания что такое указатель... НУ во многом это связано что кодеры микрософта не компилят то что они набирают. Конвейер. аналитики аналитят, блок-схемки малюют, кодеры их кодят, более продвинутые компилят... мало понятно как потом весь этот г-код дебагят... но в конечном итоге как то работает. Добавлено через 10 минут В некоторых случаях только так и работает. к примеру Если есть __property T3DVector Pos у которого есть геттер и сеттер, то Obj.Pos.x+=delta уйдет в никуда, сработает только Obj.Pos.x=Obj.Pos.x+delta; Добавлено через 4 часа 55 минут Так он для этого и нужен, чтобы лишние явные приведения не городить. А поскольку явно указатель приводится к чему угодно, то без неявного приведения void * - бессмыслица.
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
30.06.2015, 15:47 | 68 |
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
30.06.2015, 23:43 | 69 |
0
|
Ушел с форума
|
|
01.07.2015, 08:49 | 70 |
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||||||||||
01.07.2015, 14:05 | 71 | ||||||||||
Декремент не разрешен вообще для bool.
Про перегрузку по типу не в курсе?
0
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
||||||
01.07.2015, 14:45 | 72 | |||||
Добавлено через 28 минут Tulosba, перегрузка между char и int говорит о том, что для компилятора это существенно разные слова. И это правильно! Потому что в представлении эти сущности различаются. Указатели char* и int* инвариантны. А вот char и int из друг друга вытекают. Именно это и есть недостаток нестрогой типизации. Слова-то есть, а типов-то нет.
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
01.07.2015, 15:34 | 73 |
Ты сказал, что
Я показал, что ты не прав, в общем случае, т.к. язык позволяет различать эти типы. Сделай функцию, принимающую void*, и любой указатель для нее будет подходящим.
0
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
01.07.2015, 15:42 | 74 |
0
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|
01.07.2015, 15:59 | 75 |
Tulosba,
Нет, различные метки и различные типы -- не одно и тоже.
Тип -- это не просто синтаксическая метка, а такая метка, которая позволяет при синтаксической редукции выражений доказать отсутствие определённого поведения. Если мы возьмём и переименуем все целые числа в числа-Tulosba, то мы новый тип не определим, мы определим синоним. Нет возможности создать такую конструкцию из чисел-Tulosba, чтобы она оказалась недопустимым поведением для целых чисел, равно как и обратное. Char -- некоторая синтаксическая метка, с этим никто не спорит. И она нужна С++, потому что за ней скрывается некоторая реализация. Реализация определена в стандарте. Но абстракция объекта char инкапсулирует реализацию. И мы уже char с int как объекты не различаем. Нельзя написать такое выражение, которое было бы осмысленным только для char или было бы осмысленным над другим целочисленным типом, но неопределённым над char. Да. Всё, что осмысленно над void* может быть редуцировано и над другим указателем. Потому все указатели наследуют void*. Но мы легко можем написать выражение, которое имеет ясный смысл для char* и бессмысленно над void*: сложение с единицей, разименование. Потому void* не наследует char*. Таким образом, char* и void* не просто синтаксические метки, но конструкции ограничивающие поведение. Их уже можно называть типами если и не в смысле Пирса, то в смысле Рассела.
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
01.07.2015, 15:59 | 76 |
Ваш пример никак не опровергает цитируемое высказывание. Он лишь демонстрирует наличие полиморфных функций, а множество функций над целочисленными типами остается для всех одинаковым, равно как и управляющие конструкции языка будут одинаково валидны для целочисленных типов. О чем товарищ и выразился.
0
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
01.07.2015, 16:17 | 77 |
Лол, так что в итоге-то? А то я что-то не до конца уловил, что, собственно, хотят сказать многоуважаемые господа. Что bool это синоним типа int? Или что?
На всякий случай напомню, что времени, когда приходилось писать typedef int bool прошли
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
01.07.2015, 16:27 | 78 |
castorsky, не вижу смысла спорить с человеком, у которого максимальное кол-во сообщений в ветке "Священные войны"
С 99,9999% вероятностью текущая тема скатится туда же. Тенденция уже очень хорошо прослеживается. Если кого-то смущают неявные преобразования встроенных типов C++, то у меня два вас как минимум 2 предложения: - не использовать C++; - создать пользовательские типы; И если кто-то выбирает первый вариант, то и обсуждение ведите, пожалуйста, уже в другом разделе форума.
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
01.07.2015, 19:10 | 79 |
Теперь Ваше нелепое высказываение уже не выглядит нелепым на фоне моей активности в СВ. Всё ясно. Можно продолжить "логические" умозаключения и задаться вопросом: а стоит ли вообще обращать внимание на тех смердов, чья карма меньше? С вероятностью в 99.9999% именно я окажусь как провокатор флуда.
0
|
01.07.2015, 19:10 | |
01.07.2015, 19:10 | |
Помогаю со студенческими работами здесь
79
Объясните мне, что же такого плохого в goto? что плохого если я делаю ф-ю main типа void При явном приведении к int получаются числа, но явно не те, что должны быть При перекомпиляции сервера перекомпилируется клиент, а что, собственно в этом плохого? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |