Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Warning при компиляции... (C++)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Warning при компиляции... (C++)
Имя
Сообщение << Старые топики   Новые топики >>
Warning при компиляции... (C++) - 2008-06-06 00:34:42.883333   
nighthack

Сообщений: 4
Оценки: 0
Присоединился: 2008-04-20 13:57:11.033333
Вопщем решился поучить С++ накачал книг…
Кое как написал программу по книге конешно
Но вот беда при компиляции выкидывает варнинг
———————— СКРИПТ ————————————-
#include &lt;stdio.h&gt; #define SIZE 5 void print_them(int offset, char continu, int iarray[SIZE]); void main( void ) { int offset; int iarray[SIZE]; char continu= 0; print_them(offset,continu, iarray); printf("\n\nPREVED MEDVED, nighthack!"); printf("\nNighthack, would you like to continue(Y/N)"); scanf("%c",continu); if (continu== 'Y') for (offset=0; offset &lt; SIZE, offset++;) { printf ("\nPlease enter an integer: "); scanf ("%d",&amp;iarray [offset] );} print_them(offset, continu, iarray);} void print_them(int offset, char continu, int iarray[SIZE]) { printf("\n\n%d",offset); printf("\n\n%d",continu); for(offset=0; offset &lt; SIZE, offset++;) printf("\n%d",iarray[offset]); }
——————————————————————-
и вот сам варнинг
c:\programming\microsoft visual studio\myprojects\sinapse\error.c(11) : warning C4700: local variable 'offset' used without having been initialized

мне поскозали что это свазано с переменной offset, и добавили что и у массива iarray тоже… тока вот что это, кто поможет буду очень признателен.
Post #: 1
RE: Warning при компиляции... (C++) - 2008-06-06 01:09:36.513333   
FLIER

Сообщений: 628
Оценки: 0
Присоединился: 2007-08-29 01:31:15.400000
не шарю в сях…но так понимаю тебе нужно инициализировать переменную "Offset"
Post #: 2
RE: Warning при компиляции... (C++) - 2008-06-06 01:14:45.883333   
TurboXaker

Сообщений: 385
Оценки: 0
Присоединился: 2008-05-23 01:05:40.516666
где именно Warning бросает?? у меня на С++ Builder проходит нормально

возможно что изза
quote:

for(offset=0; offset &lt; SIZE, offset++;)

попробуй заменить на
for(offset=0; offset < SIZE; offset++)
Post #: 3
RE: Warning при компиляции... (C++) - 2008-06-06 06:53:07.016666   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
/* ошибочка ;) */
Post #: 4
RE: Warning при компиляции... (C++) - 2008-06-06 09:16:19.150000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25

quote:

ORIGINAL: nighthack
1 void main( void ) 2 { 3 int offset; [...] 4 print_them(offset,continu, iarray);


в третьей строке ты говоришь компилятору: выдели мне на стеке sizeof(int) байт памяти и назови их offset. в 4 строке ты говоришь "напечатай мне то, что лежит в offset". А теперь вопрос на засыпку: что лежит в offset?
Post #: 5
RE: Warning при компиляции... (C++) - 2008-06-06 12:52:27.490000   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666

quote:

ORIGINAL: rgo

в третьей строке ты говоришь компилятору: выдели мне на стеке sizeof(int) байт памяти и назови их offset. в 4 строке ты говоришь "напечатай мне то, что лежит в offset". А теперь вопрос на засыпку: что лежит в offset?

Ну немного поясню (навязчивое ощущение, что топикстартер не в курсе, что такое стек, sizeof() и т.д.). Перед тем, как использовать какую-то переменную, её нужно "инициализировать", то есть присвоить ей какое-нибудь значение, как это было сделано с переменной continu:

int offset = 0;
char continu= 0;

Если ты всё-таки используешь неинициализированную переменную, то компилятор не выдаёт ошибку, но выдаёт предупреждение, что ошибка таки здесь может быть. Причём точно поясняет, что это за ошибка ("локальная переменная 'offset' используется без инициализации"), и в каком именно месте (…\error.c(11) )
Post #: 6
RE: Warning при компиляции... (C++) - 2008-06-06 21:38:17.930000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: kreol
quote:

ORIGINAL: rgo
в третьей строке ты говоришь компилятору: выдели мне на стеке sizeof(int) байт памяти и назови их offset. в 4 строке ты говоришь "напечатай мне то, что лежит в offset". А теперь вопрос на засыпку: что лежит в offset?

Ну немного поясню (навязчивое ощущение, что топикстартер не в курсе, что такое стек, sizeof() и т.д.).

Да, с sizeof'ом, я пожалуй перегнул палку. Но стек… Я с седьмого класса, и лет до восемнадцати считал, что стек – это какая то фигня глубоко внутри компьютера, и просто боялся о нём думать. Мне объясняли что такое LIFO, и я знал значение аббривиатуры и принцип работы стека. Но какие магические цели преследует стек живя внутри компьютера – я не знал, и потому боялся. (а всё потому, что дурацкий школьный курс ОИВТ подразумевает изучение бейсиков, паскалей, C, но не ассемблера – зря, по-моему, начинать нужно с азов).
Короче, упоминание стека тут кстати. Пускай тоже боится :)
Post #: 7
RE: Warning при компиляции... (C++) - 2008-06-08 14:40:44.060000   
Pan4eZzz

Сообщений: 164
Оценки: 0
Присоединился: 2008-02-25 23:34:33.110000
Азы не Азы, но еслиб начинали с Асемблера, то боюсь можно было бы забыть про Pas Cpp и т.д
Ибо умножение с первоначальным занесением в Аккумулятор, Mul Bx, и запись результата в Аккумулятор, сильно коцает понятие о здоровом программировании) ИМХО
Post #: 8
RE: Warning при компиляции... (C++) - 2008-06-08 16:41:42.010000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Pan4eZzz
Азы не Азы, но еслиб начинали с Асемблера, то боюсь можно было бы забыть про Pas Cpp и т.д
Ибо умножение с первоначальным занесением в Аккумулятор, Mul Bx, и запись результата в Аккумулятор, сильно коцает понятие о здоровом программировании) ИМХО

Не на том акцентируешь внимание. К чему сводится программирование, на каком-бы то не было языке? К тому, что надо взять и из набора доступных действий составить полезную последовательность действий – алгоритм. В асме это выражено наиболее ярко. А все прочие заморочки, типа процедурного, ОО, функционального, декларативного и прочих программирований – это уже наносное. Равно как и использование операторов, приближённость к естественному/математическому или ещё какому языку.
Это все – лишь различные подходы, основная цель которых писать программу так, чтобы не утонуть в ней.
В начале обучения проблемы "не утонуть" нет. Проблемы возникают от неумения составлять алгоритмы и от недостаточного знания. Собственно, подчастую задачки из базового курса программирования идут вразрез с любыми требованиями профессионального программиста – это происходит как раз потому, что основная цель этого базового курса – не язык изучить, не научиться писать эффективные программы, а научиться составлять алгоритмы. "Обменять значения переменных, не используя временную переменную" – как это называется? На практике необходимость такого извращения крайне редка. Во всех остальных ситуациях, лучше завести промежуточную переменную – это с меньшей вероятностью собъёт с толку читателя кода. Но когда человек учится составлять алгоритмы – то пускай подумает, как бы так обойтись без промежуточной переменной – он таким образом приобретёт опыт составления алгоритмов. Вот когда он научиться, можно будет подумать о том, как алгоритм красиво записать, как его удобно использовать, как его сделать быстрее.
Post #: 9
RE: Warning при компиляции... (C++) - 2008-06-08 20:24:33.070000   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
…вот только проблема в том,что преподавание информатики и способности учеников очень разнородны….а потому у некоторых будет просто разрыв мозга от подробностей ассемблера….придется усвоить что такое регистры,стек,как там память устроена…люди обычно в среднем даже на простом паскале с for и массивом не сладят…а тут такое….это я даже про нормальные заведения,где учат этому делу…вот потому и не ставят такие полезные штуки в программу школ))
Post #: 10
RE: Warning при компиляции... (C++) - 2008-06-09 02:46:33.223333   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
quote:

ORIGINAL: rgo

зря, по-моему, начинать нужно с азов).

Ну я бы не стал называть асемблер азами, по крайней мере для прикладных программистов. Всё-таки если ты изначально учишься думать на языке машины, ты потом всю жизнь и будешь концентрировать внимание на том, как твоя программа будет работать на компьютере, а не о том, как ещё твоя программа может облегчить жизнь людям. Это всё нужно, конечно, но чуууть-чуть попозже, когда человек по крайней мере поймёт основные алгоритмы (сортировки, поиск и т.п.)
Что же касается стека, то это другой разговор. Стек - это одно из ключевых понятий программирования, я считаю. Причём не только системного, но и чисто прикладного: программный стек - это чертовкски удобная штука, и чем раньше её освоишь, тем проще будет в работе. Так что в любом случае пусть боится :D
Здесь же я просто хотел сказать, что при таком обилии информации топикстартеру будет сложно уловить суть своей ошибки =)
Post #: 11
RE: Warning при компиляции... (C++) - 2008-06-09 08:51:09.923333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Genco
люди обычно в среднем даже на простом паскале с for и массивом не сладят…а тут такое….

А тут никакого цикла for. Просто сказано `jecxnz repeat'.
Post #: 12
RE: Warning при компиляции... (C++) - 2008-06-09 13:43:41.980000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
)), rgo как всегда "жжот". Я жалею, что нас не учили асму, а начали с паскаля, который в виду появления си-шарпа ушёл из моей жизни видимо навсегда. Но имея некоторый опыт обучения детей прогарммированию "быстро, до уровня 2-го курса универа" могу сказать, что те, кто хоть немного представляет ассемблер лучше схватывают си, а те, кто его и в глаза не видел - лучше обучаются паскалю. А посколько паскаль более "теоретически правильный", а си "практичнее" - то лучше учить си, => учить асм. Вообще знание языва ассемблера очень сильно помогают при отлове ошибок в более-менее серьёзных программах. Мне сча вот приходится в MSIL ковыряться, пишу хитро(_!_)-е логирование…
Post #: 13
RE: Warning при компиляции... (C++) - 2008-06-10 19:58:51.430000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: _SaZ_
Я жалею, что нас не учили асму, а начали с паскаля…

Всё мною сказанное – это мои измышления. МинОбр со мною не согласен. Немалоуважаемый проф. Вирт – тоже. Всего лишь мне так кажется. До проверки практикой дело не дошло. Если меня не уволют из школы в ближайшие пару лет (мне всё никак в/о не получить), то может быть я когда-нибудь проверю практикой. А пока это лишь измышления вечного студента.
Поэтому я тоже жалею, что вас учили не асму – иначе можно было бы говорить о том, что эксперимент состоялся, и можно было бы хоть в первом приближении оценить насколько я прав. ;)
Post #: 14
RE: Warning при компиляции... (C++) - 2008-06-11 18:31:34.173333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Я считаю, что ты прав на все 100%.

Вот своего малого (двоюродного брата 16 лет) я начал обучать языку Си (с асма не рискнул, т.к. сам его неважно знаю), параллельно объясняя ахритектуру ЭВМ (память, регистры, порты в/в, прерывания и т.п.). Но на Си долго останавливаться не планирую. Хочу на примере этого языка дать алгоритмизацию и общее представление об компьютере. Потом планирую сразу перейти на ООП на примере языка С#… Ему остался год до поступления в ВУЗ, хочу чтобы он шёл уже подготовленным.
Post #: 15
RE: Warning при компиляции... (C++) - 2008-06-12 02:58:29.280000   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
In my humble opinion, начинать обучение с привязки к строению ЭВМ неправильно. Во-первых, архитектуры бывают разные. Даже если забыть про встроенные, научные и исследовательские компьютеры, есть ещё мобильные платформы. Плюс фиг его знает, может сейчас сделают квантовые компьютеры или что-то в этом духе, и вся привязка к архитектуре полетит к чёрту. Заметьте, идея абстрагирования от оборудования появилась ещё в 1956 году, а сейчас, когда средства наконец позволили, языки создаются для виртуальных машин (java, C#) и никак не привязываются ни к регистрам, ни к прерываниям, ни к чему либо ещё "железному". Во-вторых, это дополнительные заморочки для начинающего - в начале обучения достаточно знать, какие операции выполняются быстрее, а какие медленнее, не вникая в то, почему именно так. Отсутствие лишних "мелочей" в голове позволит обучающемуся строить более сложные алгоритмы, быстрее понимать именно программирование.
Ну и ООП, в принципе, тоже сюда - всё равно на начальном уровне фиг оценишь прелести ООП, а лишние понятия только запутают человека. Вообще говоря, моё мнение об объекто-ориентированном программировании очень и очень низкое. Фактически всё ООП (C++, Delphi etc., хотя и не Smalltalk, с которого всё началось) сводится к удобному механизму полиморфизма (через наследование и, позже, интерфейсы). Удобному, но не незаменимому. В остальном ООП остаётся всё тем же процедурным программированием. А из этого сделали почти религию, фе (кто меня переубедит? :)). Соответственно, и давать человеку лишние концепции, когда это не нужно, не есть хорошо.
Но ещё раз повторюсь, это моё мнение. Я никогда профессионально не учил людей, хотя и всегда внимательно следил за реакцией на мои объяснения.
Post #: 16
RE: Warning при компиляции... (C++) - 2008-06-12 05:43:05.770000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
1. В тех же виртуальных машинах есть понятие регистров и стеков.
2. Учить человека языку Си, и не объяснить "азы" устройства ЭВМ - крайне бессмысленно. И знать, как устроен комп стоит хотя-бы из уважения к своей профессии.
3. Для языков java и c# тоже кто-то исал виртуальные машины. Естесственно этому (архитектуре эвм) можно потом обучить, но сделать это будет гораздо сложнее. Особенно сложно будет объяснять, что строки, это на самом деле массивы чаров ;).
4. Начинать с ООП категорически противопоказано, т.к. потом практическинереально научить человека нормальному алгоритмическому мышлению. Однако после того, как человек научится работать со структурами / функциями и указателями - то почему бы не объяснить ООП, как один из приёмов, облегчающих программирование? Взять ту же автоматизированную работу со строками в языках. Чем плохо полтзоваться готовыми классами, и работать со строками, как с простым типом данных. Но имхо, прежде чем брать что-то готовое (тот же STL), нужно научиться самому это писать. В одной конторе меня при собеседовании попросили релизовать на чистом си механизм, аналогичный вызову виртуальных методов.
5. Насчёт того, нужно ли ООП. Одназначно да. Тут вопрос не только в удобстве использования и наличии альтернативных приёмов, но и вопрос в удобстве разработки. Если программы пишут олее одного человека - то без ооп будет крайне сложно что-то согласовать. А чем сложнее проект - тем больше это будет проявляться. И в конце концов программа превратится в несопровождаемую.
6. Насчёт абстрагирования от железа. Опять же. Абстрагирование производится лишь для упрощения разработки ПО. Но знать, как работает железо - обязательно. Тупо заучить, на какие операции нужно больше времени, а на какие меньше - не получится. В программиорвании нужно думать, тупо заучивание не поможет. Приведу простой пример (вспоминая себя и многих своих учеников). Все сначала думали, что операции сравнения > и >= выполняются за разное количество тактов и старались избегать использовать >=. А вот объяснить, почему эти операции одинаковы по быстродействию без знания языка ассемблера крайне сложно. А язык ассемблеа в свою очередь нельзя учить не зная архитектуры ЭВМ, это уже аксиома.
И таких примеров очень много. Взять те же вызовы inline функций. Кажется, что если функцию можно сделать inline - то и работать она будет быстрее (хотя код стант больше)… А вот оказывается, что далеко не всегда. А чтобы понять почему - опять же надо знать архитектуру процессоров и про то, что такое конвеер и устройство предсказания ветвлений. Поэтому знания архитектуры лучше "впитывать с молоком матери =)".
Из личного наблюдения про студентов. Тяжелее всего новые технологии дат.ся тем, кто начал ищучать прогрраммирование с дэлфи и/или формошлёмства. В очередной раз процитирую основной вопрс дэлфиста-любителя: "А где взять компонент, который…". А вот про то, что порой быстрее и оптимальнее написать что-то самому, под конкретные нужды, чем искать уже готовое, почему-то в голову никому не приходит (особенно индусам). Ссылка в тему - http://forum.xakep.ru/m_1144240/tm.htm
Плюс, знания архитектуры ЭВМ позволяют реализовывать намного более быстрые вычисления. Попросить, к примеру, 2-х людей написать класс BigInt, одного с использованием языка ассемблера, другого без (пускай даже с включенной оптимизацией компилятором). Угадайте, у кого класс будет работать эффективнее (одна мега-операция ADC чего стоит B-] )?
7. Вспомню своего брата. Он поначалу "боялся" языка, боялся экспериментировать и что-то писать самостоятельно. Но вот когда я ему параллельно с Си сиал давать алгоритмизацию и заставлять сначал рисовать блок-схемы, а потом это дело программировать - то все страхи очень быстро стали пропадать.
8. Касательно квантовых и т.п. компьютеров. Даже если их и изобретут - то всё раво никто не кинется на них быстро переходить, пока они не станут дешёвыми, общедоступными и т.п. И к тому же некому будет переносить весь имеющийся софт на новые платформы :). В Висте до сих пор не отказались, от многих вызовов, применяемых в Win95, ради обратной совместимости, что уж тут говорить про более глобальные вещи.

Из личного опыта преподавания курсов "оператора ЭВМ" или как научить чайника не бояться компьютера.
Всех, с кем я занимался (уже после выхода WinXP) я в первую очередь садил за дос. Да, да - чистый дос. Даже без нортоновских таблиц. Конечно многие пытались возмущаться, типа это прошлый век и т.п., но такая практика давала очень хорошие результаты. И люди после окончания моих курсов прекрастно понимали, что папака "Мои документы" и "C:\Docs and settings\…\Мои документы" - это одно и то же. Потому как перед первым занятием у разных дамочек возникали вопросы в стиле "Вот я в эту папку захожу через мой компьютер, а в эту через тотал командер, как мне скопировать файлы из одной в другую?", а по окончании курсов большинство из них могли с закрытыми глазами переставить винду, установить офис, подключить винт, обновить антивирь и т.п. И ещё, я всех заставлял проходить курс "соло наклавиатуре", хотя-бы первые 30 упражнений… и некоторых, особо ленивых, даже учил быстро щёлкать мышкой (кажисть ява-апплет называется Reflex, можно погуглить или поискать на сайте starcraft.7x.ru). И, как ни страно, к концу курсов недовольных не оставалось.
Post #: 17
RE: Warning при компиляции... (C++) - 2008-06-12 05:44:15.020000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Во я накатал сколько ;). Если не лень - читайте, опровергайте. Будет интересно поразмышлять,… только вот неплохо бы было в отдельную веточку переехать.

Да, и ещё, насчёт оптимизации. Оптимизировать нужно только там, где это действительно нужно. Я сначала старался "оптимизировать" оконные процедуры, рациональней писать switch-и и т.п. Но вот достаточно быстро пришёл к выводу, что на перерисовку окна тратится в несколько раз больше времени, чем жрёт всяостальная процедура и забил на оптимизацию :)
Post #: 18
RE: Warning при компиляции... (C++) - 2008-06-12 11:59:52.176666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: _SaZ_
Из личного опыта преподавания курсов "оператора ЭВМ" или как научить чайника не бояться компьютера.
Всех, с кем я занимался (уже после выхода WinXP) я в первую очередь садил за дос. Да, да - чистый дос. Даже без нортоновских таблиц.

Во! Я думаю в следующем учебном году посажать народ в командную строку линукс. А то ведь умудряются не отличать программы от документов, с которыми эти программы ассоциированы.
Post #: 19
RE: Warning при компиляции... (C++) - 2008-06-12 22:08:19.226666   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666

quote:

ORIGINAL: _SaZ_

Будет интересно поразмышлять… только вот неплохо бы было в отдельную веточку переехать.

Пытался 2 раза, Питон оба раза съел топик и сказал мне об этом только тогда, когда в буффере обмена уже не оставалась копии. Можешь попробовать сам :D

quote:

ORIGINAL: _SaZ_

1. В тех же виртуальных машинах есть понятие регистров и стеков.

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

quote:

2. Учить человека языку Си, и не объяснить "азы" устройства ЭВМ - крайне бессмысленно. И знать, как устроен комп стоит хотя-бы из уважения к своей профессии.

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

quote:

3. Для языков java и c# тоже кто-то исал виртуальные машины. Естесственно этому (архитектуре эвм) можно потом обучить, но сделать это будет гораздо сложнее. Особенно сложно будет объяснять, что строки, это на самом деле массивы чаров ;).

Когда человек дойдёт до такого уровня, что сам сможет писать виртуальные машины, для него не составит труда самому найти и изучить необходимый материал. Ты же не станешь рассказывать начинающему столяру, как производится металл, из которого сделана его пила и молоток.
Что касается строк, так это затрагивает только чистые ОО-языки, а к ним, как я и сказал, я не слишком хорошо отношусь. Если уж объяснять человеку строки, например, в джаве, то в первую очередь я бы разобрал все поля, показал, какое из них отвечает непосредственно за содержание строки, а какие являются только обёрткой вокруг массива чаров, и объяснил бы, зачем эта обёртка сделана.

quote:

4. Начинать с ООП категорически противопоказано, т.к. потом практическинереально научить человека нормальному алгоритмическому мышлению. Однако после того, как человек научится работать со структурами / функциями и указателями - то почему бы не объяснить ООП, как один из приёмов, облегчающих программирование?

Вот именно, как один из приёмов, облегчающий программирование! Проблема в том, что из-за моды на ООП через объекты стали делать практически всё, даже то, что гораздо проще сделать через другие методы.

quote:

5. Насчёт того, нужно ли ООП. Одназначно да. … Если программы пишет более одного человека - то без ооп будет крайне сложно что-то согласовать

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

quote:

6. Насчёт абстрагирования от железа. Опять же. Абстрагирование производится лишь для упрощения разработки ПО. Но знать, как работает железо - обязательно.

Ну, во первых, не только для этого, но ещё и для переносимости программ, это важный пункт. И даже если завтра появится квантовый компьютер, то для переноса на них многих программ достаточно будет написать для этого компьютера VM, или, по крайней мере, компилятор. И при этом все ассемлерные программы (как и многие сишные, к сожалению) не заработают, просто потому что архитектура компьютера отлична от той, под которую всё писалось. А если есть сплошной слой абстракции, то с переносом программ не должно быть никаких проблем. Для нового компилятора даже не нужно будет писать новый front-end, только привязанный к новому оборудованию back-end.
А во-вторых, ты слишком гонишься за производительностю на малых операциях, тем самым уделяя меньше внимания архитектуре и производительности всей системы. К тому же для большой системы ты никогда не просчитаешь производительность - слишком уж много параметров, слишком много ситуаций. А привязка к оборудованию означает ещё большее количество возможных ситуаций.
Распространённость формошлёпов - это наверное главный аргумент против Делфи Визуальное программирование в Делфи было предназначено для ускорения разработки GUI профессиональным программистам, формошлёпы - это побочный эффект. Я сам очень редко использую компоненты (кроме основных визуальных, вроде кнопок, полей ввода и т.д., разумеется :)), потому что они действительно только усложняют задачу. Ну если кто-то хочет ими пользоваться, пусть пользуются. Для нормального прогаммирования, по хорошему, нужно начинать с программирования под ДОС и ком строку.

quote:

7. Вспомню своего брата. Он поначалу "боялся" языка, боялся экспериментировать и что-то писать самостоятельно. Но вот когда я ему параллельно с Си сиал давать алгоритмизацию и заставлять сначал рисовать блок-схемы, а потом это дело программировать - то все страхи очень быстро стали пропадать.

Подозреваю, что ты дал ему сразу слишком много заморочек самого языка (тем более, что в Си их действительно хватает), и он просто не мог манипулировать с таким количеством обхектов в голове. (Знаете, как Эйнштейн проверял претендентов в свои помощники?)

quote:

8. Касательно квантовых и т.п. компьютеров. Даже если их и изобретут - то всё раво никто не кинется на них быстро переходить, пока они не станут дешёвыми, общедоступными и т.п. И к тому же некому будет переносить весь имеющийся софт на новые платформы :). В Висте до сих пор не отказались, от многих вызовов, применяемых в Win95, ради обратной совместимости, что уж тут говорить про более глобальные вещи.

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

quote:

Из личного опыта преподавания курсов "оператора ЭВМ" или как научить чайника не бояться компьютера.
Всех, с кем я занимался (уже после выхода WinXP) я в первую очередь садил за дос. Да, да - чистый дос.

А вот это это я считаю очень правильным. Вообще командная трока - это чертовски хорошая вещь, хотя бы потому, что она даёт единый интерфейс работы с системой. Я уже не говорю о том, что обучение программированию гораздо проще даётся под консоль, а не под графику и все эти визуальные компоненты. Так что здесь я с тобой полностью согласен
Post #: 20
RE: Warning при компиляции... (C++) - 2008-06-12 23:09:29.813333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Вот давайте только не будем приводить в качестве примера квантовый компьютер. Не дай бог придётся под него переквалифицироваться – там же всё иначе. Виртуальная машина java (ну или дотнет) на квантовом компьютере будет тормозить больше, чем на компе обычном, если я правильно всё понимаю. Там придётся использовать другой подход к программированию. Другой подход к составлению алгоритмов. А это запросто приведёт к появлению новых языков программирования специально ориентированных на квантовые компьютеры.
Post #: 21
RE: Warning при компиляции... (C++) - 2008-06-13 14:50:34.770000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Ну я на всё отвечать не буду, т.к. уже пошёл флейм (или просто бездумный спор), отпечу лишь, что уважаемый kreol сам себе противоречит (местами).
quote:


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

Если будет написана виртуальная машина - то на ней всё прекрастно будет работать ;).
Post #: 22
RE: Warning при компиляции... (C++) - 2008-06-13 14:56:52.266666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
А насчёт си и паскаля (и его потомков) скажу так. Вирт конечно молодец, что создал академически правильный язык, удобный для обучения, без лишних заморочек, связанных с архитектурой и т.п язык, но, как показывает практика весь мир пишет на языках удобных с практической точки зрения (таких, как си).

Конечно си++ далеко не идеален, но он является своего рода "полигоном" для испытания и разработки новых технологий. Так, на его основе была придумана ява, так сказать очищенный вариант си++, а потом появился и сишарп, который исправляет многие недостатки явы. А вот дэлфя загибается с реализацией дотНет (может потому, что мелкософт переманила ведущих программистов из борланда к себе?). А про оберон я думаю многие вообще даже и не слышали ;).
Post #: 23
RE: Warning при компиляции... (C++) - 2008-06-13 15:32:14.570000   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
quote:

ORIGINAL: rgo

Вот давайте только не будем приводить в качестве примера квантовый компьютер.

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

quote:

ORIGINAL: _SaZ_

Если будет написана виртуальная машина - то на ней всё прекрастно будет работать ;).

Я так понимаю, ты имеешь ввиду эмуляторы обычных машин? Нет, я говорю про VM вроде JVM, то есть runtime, который в любом случае есть. Так что никакого противоречия.

quote:

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

Как об стенку горохом. Вирт работал на машинах с совершенно разной архитектурой, именно поэтому он абстрагировался от оборудования, а не для того, чтобы избежать "заморочек". Другое дело, что долгое время по существу была всего одна ведущая архитектура компьютера, поэтому вопрос переносимости не стоял так остро. А весь мир пишет на том, что поплулярно, а не на том, что удобнее. Если не веришь, посмотри сколько людей на этом форуме кричат, что С++ рулит, а Делфи говно, но при этом не могут привести ни одного аргумента кроме "это же и так понятно".

quote:

Конечно си++ далеко не идеален, но он является своего рода "полигоном" для испытания и разработки новых технологий. Так, на его основе была придумана ява, так сказать очищенный вариант си++, а потом появился и сишарп, который исправляет многие недостатки явы. А вот дэлфя загибается с реализацией дотНет (может потому, что мелкософт переманила ведущих программистов из борланда к себе?). А про оберон я думаю многие вообще даже и не слышали ;).

Лол. Посмотри на историю создания Джавы и Си-шарпа, посмотри на главных разработчиков, посмотри, чем они занимались до этого, проанализируй структуру языка. И у Джавы, и у Си-шарпа гораздо больше общего с Делфи и Оберонами, чем с С++. Единственное, что синтаксис оставили для популяризации языков.
Вообще я говорил про частичное абстрагирование от оборудования при обучении программированию, но почему-то разговор опять перетекает в сравнение языков. Если есть что сказать по поводу обучения, психологии или восприятия человеком, you are welcome, а в сотый раз спорить о преимуществах/недостатках тех или иных языков, это уж увольте, надоело.

PS. Если сравнивать языки, то нужно брать хотя бы такой набор: процедурные, функциональные, логические. Вот там действительно есть что обсудить.
Post #: 24
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Warning при компиляции... (C++)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.