Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Тип auto в C++11


Автор: codemonkeys 17.10.2013, 11:19
Зачем программистов С++11 заставляют писать auto, если надо автоматически определить тип? 
Почему не сделано как на BASIC и многих других языках, где объявление переменных не обязательно?

Автор: borisbn 17.10.2013, 11:30
Цитата(codemonkeys @  17.10.2013,  11:19 Найти цитируемый пост)
Почему не сделано как на BASIC и многих других языках, где объявление переменных не обязательно? 

Очивидно же... Чтобы уменьшить число ошибок, связанных с опечатками.
Код
max_l = 0;
for ( i = 0; i < 100; ii = i + 1 ) {    // <----- раз
    if ( arr[ i ] > max_l ) {
        max_1 = arr[ i ];            // <--- два
    }
}


Цитата(codemonkeys @  17.10.2013,  11:19 Найти цитируемый пост)
Зачем программистов С++11 заставляют писать auto, если надо автоматически определить тип? 

Никто никого не заставляет. Просто
1) В некоторых случаях (не везде) это - удобнее
2) Переменная по прежнему имеет жёстко определённый тип (правда, определённый не программистом, а компилятором)
3) Есть http://ru.wikipedia.org/wiki/C%2B%2B11#.D0.90.D0.BB.D1.8C.D1.82.D0.B5.D1.80.D0.BD.D0.B0.D1.82.D0.B8.D0.B2.D0.BD.D1.8B.D0.B9_.D1.81.D0.B8.D0.BD.D1.82.D0.B0.D0.BA.D1.81.D0.B8.D1.81_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D0.B9

Автор: o2n3e 17.10.2013, 11:43
Модератор: Сообщение скрыто.

Автор: codemonkeys 17.10.2013, 11:48
Цитата(o2n3e @ 17.10.2013,  11:43)
Наверное потому, что это не языки, а мёртворожденное ###, которое ниначто не способно?

А PHP, на котором написан (то есть разработан) весь интернет,тоже г****?
А Visual Basic? 

Автор: akizelokro 17.10.2013, 11:54
Цитата(codemonkeys @  17.10.2013,  11:19 Найти цитируемый пост)
Почему не сделано как на BASIC и многих других языках, где объявление переменных не обязательно? 


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

Автор: codemonkeys 17.10.2013, 11:57
Цитата(akizelokro @ 17.10.2013,  11:54)
Для совместимости с С.

А совместимости и так нет
Любимая всеми конструкция
Код

for(int i=0;i<3;++i)

не соберется в С, т.к. все переменные в С должны быть объявлены в начале функции.

Автор: o2n3e 17.10.2013, 11:57
Модератор: Сообщение скрыто.

Автор: o2n3e 17.10.2013, 12:03
Модератор: Сообщение скрыто.

Автор: o2n3e 17.10.2013, 12:06
Модератор: Сообщение скрыто.

Автор: akizelokro 17.10.2013, 12:08
Цитата(codemonkeys @  17.10.2013,  11:57 Найти цитируемый пост)
не соберется в С, т.к. все переменные в С должны быть объявлены в начале функции. 


Ну, это-то да, обратной совместимости нет. Да и если брать стандарт С99, тоже не уверен, что на 100% прямая совместимость.
Но тут фича в том, что всё равно С/C++ приходится портировать с платформы на платформу и докручивать вручную. Так что некоторые различия на практике роли и не играют даже. Традиция уже не обращать внимания.

Автор: o2n3e 17.10.2013, 12:10
Модератор: Сообщение скрыто.

Автор: o2n3e 17.10.2013, 12:22
Модератор: Сообщение скрыто.

Автор: codemonkeys 17.10.2013, 12:25
Цитата(o2n3e @ 17.10.2013,  12:03)
Пхп - это тормазное, неконпелириуемое изимодное ###, которое в ряд с С++ поставит только идиот.

Будущее за интерпретируемыми языками, что нам успешно показывает Microsoft. 
PHP устарел, но на смену ему приходят другие интерпретируемые языки.
Всё компилируемое лет через 10 окончательно отправится в мусорку. 
На всех продвинутых серверах и на смартфонах уже сейчас аппаратная поддержка Java, без всяких компиляций в байт-код и виртуальных машин.

Автор: o2n3e 17.10.2013, 12:51
Модератор: Сообщение скрыто.

Автор: vinter 17.10.2013, 12:55
Цитата

Будущее за интерпретируемыми языками, что нам успешно показывает Microsoft. 

Разрабатывая своё новое API на C++? Я что-то не понял, с каких пор Microsoft является движителем победы интерпретируемых языков?

Автор: codemonkeys 17.10.2013, 13:20
Компилируются сейчас фактически только С и плюсы.
Паскаль умер, другие компилируемые языки умерли когда я еще не родился. 
С и плюсы скоро тоже умрут, С++11 - первый шаг к этому.

Автор: vinter 17.10.2013, 13:24
Цитата(codemonkeys @  17.10.2013,  14:20 Найти цитируемый пост)
Компилируются сейчас фактически только С и плюсы.

А также C#, Java и Objective C. Что, если еще добавить C\C++, составляет не менее 90-98%(я полагаю) всей кодобазы. Так что "смерть" компилируемых языков может быть только в твоих фантазиях, не более.

Добавлено через 1 минуту и 39 секунд
Более того, Facebook и Vkontakte пишут обвязки, чтобы транслировать PHP в C++, наверное они это делают от того, чтобы ускорить смерть C++ ;)

Автор: codemonkeys 17.10.2013, 13:52
Цитата(vinter @ 17.10.2013,  13:24)
Цитата(codemonkeys @  17.10.2013,  14:20 Найти цитируемый пост)
Компилируются сейчас фактически только С и плюсы.

А также C#, Java и Objective C

Они компилируются в байт-код, который затем интерпретируется. Их нельзя назвать полноценными компилируемыми языками.
Аpple со своим Objective C скоро умрет. 
До многих богатых обезьян, которые покупали Apple сейчас дошло, что любая китайская мобила выполняет все функции айфона 5 и даже больше. 
Китайские экземпляры в золотом корпусе с яблоком тоже имеются, и обезьяна скорее купит их.
 

Автор: bsa 17.10.2013, 14:54
codemonkeys, ты что-то путаешь: http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F

Objective C - это компилируемый язык. C#, на сколько я знаю, компилируется из байт-кода в момент установки приложения (могу ошибаться). Да и Java - это тоже скорей компилируемый язык.

Автор: o2n3e 17.10.2013, 15:21
Модератор: Сообщение скрыто.

Автор: o2n3e 17.10.2013, 17:10
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)