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


Автор: DENNN 31.8.2004, 19:24
может и не только мне интересно будет почитать:
http://russian.joelonsoftware.com/Articles/BacktoBasics.html

Автор: shedon 31.8.2004, 19:53
Довольно интересная статья

Автор: lynx_916 31.8.2004, 22:29
гыыыы, интересно

Автор: AndyY 31.8.2004, 22:48
Интересно послушать, что думают заинтересованные по поводу идеальной структуры данных для хранения строк. Проблемы C реализации я вижу такие:

1. в том, что функции strncpy, strncat, _snprintf не ставят завершающий 0 в конце.
2. если сохранить указатель на строку в нескольких местах, то при необходимости переразмещения буфера (выделения большего объема памяти) требуется обновлять все указатели
3. далеко не во всех кодировках длина строки соответствует числу символов в ней + 0 на конце.

Итак, какие мнения?

Автор: chipset 1.9.2004, 07:20
Очень интересная статья (читал пару месяцев назад)


Автор: gray_k 1.9.2004, 08:36
Мне вообще все его статьи нравятся. Умный мужик.

Автор: 3,14 1.9.2004, 09:15
ИМХО - учится надо начинать сверху, если человек разберётся с премудростями ООП тогда мож у него и с низким уровнем что получится, а так если чел. хочет стать, допустим, веб-мастером, то пусть уж сначала просто научится сайты писать, а уж потом можно и с оптимизацией начинать мучится...

Автор: DENNN 1.9.2004, 10:42
Цитата
ИМХО - учится надо начинать сверху, если человек разберётся с премудростями ООП тогда мож у него и с низким уровнем что получится

Ага, и у него создасться ложное представление о том, что же там находится внизу.

Автор: 3,14 1.9.2004, 11:18
Цитата
Ага, и у него создасться ложное представление о том, что же там находится внизу.
А иначе возникнет неправильное понимание что же находится вверху hehe.gif, часто встречал что люди начинавшие с C и ASM, вьежали в ООП не до конца, так как подходили ко всему с битиками и байтиками, не вникая в логику действий.

Автор: DENNN 1.9.2004, 17:02
3,14
Про "невъезжающих" разговор отдельный. Они как раз критерием врядли могут служить.

Автор: lynx_916 1.9.2004, 21:56
Цитата(3)
люди начинавшие с C и ASM, вьежали в ООП не до конца

я тебе говорю.
у меня друг учил С долго, а потом сразу на яву.
въехал.
даже очень.

Автор: 3,14 2.9.2004, 07:36
Я не говорю что они не могут программить на языках высокого уровня, но как правило у них логика другая. Ест у меня друг, типичный программер к-ый начинал C, занялся ASM и.т.д. Он может запросто программить хоть на C++, хоть на Java, но завязался однажды у нас спор насчёт того, что выведет код :
Код
class A
{
 public:
   virtual void prt_type() { cout << "A" << endl; };
   A() { this->prt_type(); };
}

class B : public A
{
 public:
   virtual void prt_type() { cout << "B" <<endl; };
   B() { this->prt_type(); };
}

main()
{
  B test;
  return 1;
}

Мой вариант был :
A
B
Его вариант :
B
B
В док-во он долго задвигал про таблицу ф-ий, про то как там размещаются виртуальные ф-ии, и про то что произойдёт при вызове одного конструктора из другого, на что я сказал что его вариант просто противоречит логике ООП и оказался прав.

Автор: chipset 2.9.2004, 08:53
И кто здесь начинал с ООПнутых языков?
Некоторые вообще с Васика начинали... tounge.gif
Добавлено @ 08:54
Вьехать можно(если вообще этому человеку можно вникнуть), стереотипы быстро сотрутся (по себе сужу).

Автор: 3,14 2.9.2004, 08:57
Суть не в этом, человек может стать хорошим кодером с чего бы он не начинал, но с чего начинать ООП кодер целесообразней, вот вопрос!
Цитата
стереотипы быстро сотрутся (по себе сужу)
Это не у всех так.

Автор: lynx_916 3.9.2004, 19:52
Цитата(chipset @ 2.9.2004, 07:53)
стереотипы быстро сотрутся (по себе сужу)

не понял. поясни, илиз.
Цитата(chipset @ 2.9.2004, 07:53)
И кто здесь начинал с ООПнутых языков?

правильно, кто начал бы с ООП, тот бы и закончил быстро.

Автор: chipset 4.9.2004, 03:48
Цитата

не понял. поясни, илиз.


Я перестал вызывать printf, scanf, использовать вот такое приведение типов (x)..
писать стараюсь с использование ООП rolleyes.gif
hmmm.gif
Добавлено @ 03:49
3,14
Ох, я на браинбенче на этой фигне поймался... sad.gif

Автор: lynx_916 4.9.2004, 07:06
Цитата(chipset @ 4.9.2004, 02:48)
Я перестал вызывать printf, scanf, использовать вот такое приведение типов (x)..

гыгыгыгы, так легче и не мочаешь себе голову, которая и без того...

Автор: chipset 5.9.2004, 03:44
Начал читать Элджера и натыкаюсь на следующее:
Цитата

Иногда мне кажется, что C++ лучше изучать без предварительного знакомства с C. В C++ часто
используются те же термины, что и в С, но за ними кроются совершенно иной смысл и правила
применения.


Автор: lynx_916 5.9.2004, 07:56
согласен на все 100%

Автор: lynx_916 5.9.2004, 08:24
Цитата(AndyY @ 31.8.2004, 21:48)

1. в том, что функции strncpy, strncat, _snprintf не ставят завершающий 0 в конце.
2. если сохранить указатель на строку в нескольких местах, то при необходимости переразмещения буфера (выделения большего объема памяти) требуется обновлять все указатели
3. далеко не во всех кодировках длина строки соответствует числу символов в ней + 0 на конце.

Итак, какие мнения?



создать новый тип данных!
я не знаю точно, н String всё это делает.
но лучше создать свой класс.

Автор: GrayCardinal 5.9.2004, 08:56
Цитата
1. в том, что функции strncpy, strncat, _snprintf не ставят завершающий 0 в конце.

ч-е-г-о ? :O а как тогда два раза strncat выдает нормальную строку ? (в Линухе только его и юзаю, очень удобная вещь)

Автор: GrayCardinal 5.9.2004, 09:30
ниче так статейка. правда там (как я понял) говорится что такая примитивная функция УЖЕ тормозная, а народ почему-то за ООП... объясните чайнику, плз... создавать класс строк... бррррр... я даже после водки такого не придумаю...

Автор: 3,14 6.9.2004, 09:37
Цитата
правильно, кто начал бы с ООП, тот бы и закончил быстро.
Не правда, я конечно учил и basic и pascal но серьёзно разбираться с программированием начал с C++

Автор: shedon 6.9.2004, 09:54
Я начинал тоже с бэсика, потом купил книжку по VC++, с ней я иначал изучение языка, но книжку я выбрал не ту, там сразу про MFC и e.t.c. начиналось, не фига не понял купил книгу по си разобрался, а после и в С++, и в ООП, разобрался.

Автор: Peter 6.9.2004, 15:24
Ох, народ, это обсуждение на флейм стало похоже.

Я думаю, сначала нужно заиметь голову, а потом уже садиться программировать.

Автор: 3,14 6.9.2004, 15:27
Цитата(Peter @ 6.9.2004, 15:24)
Ох, народ, это обсуждение на флейм стало похоже.

Я думаю, сначала нужно заиметь голову, а потом уже садиться программировать.

Голова конесно нужна, но и от методологии обучения многое зависит

Автор: Peter 6.9.2004, 15:38
Цитата(3 @ 6.9.2004, 15:27)
Голова конесно нужна, но и от методологии обучения многое зависит

Знаю хорошую методику: учиться, учиться и учиться. Ульянов тут ни при чем.

Автор: Peter 27.9.2004, 11:02
Цитата(Peter @ 6.9.2004, 15:24)
Я думаю, сначала нужно заиметь голову, а потом уже садиться программировать.

Имеется в виду вот что.
Программировать я начал только на первом курсе. До того изучал математику (на уровне участника всероссийских олимпиад). Поэтому всякие языки (Fortran, C++) и технологии программирования (COM, ООП) осваивались без затруднений. И материал статьи мне показался тривиальным.

Автор: 3,14 27.9.2004, 12:05
Цитата(Peter @ 6.9.2004, 15:38)
Цитата(3)
Голова конесно нужна, но и от методологии обучения многое зависит

Знаю хорошую методику: учиться, учиться и учиться. Ульянов тут ни при чем.

Угу, и придётся по сто раз велосипед изобретать

Автор: Guest 27.9.2004, 13:58
На мой взгляд, начинать обучение с нуля надо на Васике или на Паскале. Лучше - на Паскале - простой и ясный язык, но тем не менее строгий. Он прививает культуру программирования . Ну а после того, как узнаешь условные операторы, циклы и процедуры, надо начинать ООП (неважно, на каком языке) и ассемблер... наверное, лучше всего параллельно.

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

Автор: Step 27.9.2004, 14:05
Во флейм понесся.... главное что бы на благо

по себе скажу.... лучшебы я с асма начал..... а не с бейсика......

асм требует понимание процессов (базовых).... а это кирпич, а потом уже стена идет...

Автор: Atos 27.9.2004, 14:25
Немного не согласен: для начала надо освоить базу самого программмирования - условия, циклы, массивы, процедуры, а это лучше делать на более понятном для чайника языке.
Для асма необходимы и знания по архитектуре ЭВМ, а способен ли , например, обычный средний школьник заинтересоваться и реально врубиться во всё это (Если исходить из принципа-"чем раньше начать, тем лучше")? Понятно, что есть талантливые люди, которые в 15 лет ужи оси пишут, но не о них речь.
{предпоследнее сообщение моё было - забыл зарегиться}

Автор: Step 27.9.2004, 14:49
а вот маленький пример по поводу того что лучше....
есть циклы с пост условиями
пред условия
и с параметрами


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

кстати товарищи давайте не путать чистый асм и асм который мы видем сейчас (с биосом, с 21 прерыванием и всем прочем),

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


Автор: DENNN 27.9.2004, 14:59
Вообще логичнее было бы принять точку зрения Atos, если стоит задача привлечь растущий организм smile.gif
Если же начинать осваивать языки уже в момент сформировавшегося интеллекта (ну например человек способен самостоятельно постигать азы математики институтского уровня), то для него изучение первоначальных, базовых знаний не будет настолько тяжелой задачей.
Сам я начинал еще в средних классах и помню, сколько интереса вызывало понимание того, что я сам могу на том же бейсике что-то нарисовать или сделать. Это явилось мощным стимулом в самом начале и для мнея, и для моих товарищей, которые впоследствии на программинг "забили". А если меня в том возрасте посадить за старые советские книжки по асму для ЕС ЭВМ, бр-р-р - до сих пор помню тот ужасный язык.

Автор: 3,14 27.9.2004, 15:07
Вполне согласен с DENNN-ом и Atos-ом

Автор: Step 27.9.2004, 15:10
Цитата
Сам я начинал еще в средних классах и помню, сколько интереса вызывало понимание того, что я сам могу на том же бейсике что-то нарисовать или сделать. Это явилось мощным стимулом в самом начале и для мнея, и для моих товарищей, которые впоследствии на программинг "забили". А если меня в том возрасте посадить за старые советские книжки по асму для ЕС ЭВМ, бр-р-р - до сих пор помню тот ужасный язык.

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

кстати для поиска 3д игрушку не пытались написать... я пытался, (на паскале, во фигня получилась, и тут у меня отвращение пошло, а потом асмик подучил, и по комнате уже ходить можно было)
Добавлено @ 15:17
М
 
в конце дня переезжаем во флейм

Автор: DENNN 27.9.2004, 15:19
Цитата
например для меня после паскаля, ассемблер ЕС-ки открывал уйму возможностей..... меня просто затягивало в асм когда я начал понимать что на асме можно сделать то что трудно сделать на языке высокого уровня.

Нет, я как раз ничего подобного не отрицал. Я например тоже на асме и спрайты отображал за пару тактов и игрушку правил, когда у нее модель прерываний под классический ZXSpectrum написана. Только если бы я с нуля начал сразу асм по тем материалам, что были доступны, я бы наверное на долго интерес потерял. Ну сам посуди, какой мне прок, от того, что я буду разбираться как на микросхемах серии кр155 постороена операция "логическое или"? Я конечно мог бы что и спаять, но к логике программинга это имело только историческое отношение. А в те времена каждое издание старалось такой "комплексный" материал дать. Это называлось у них "как работает ЭВМ" smile.gif

Добавлено @ 15:21
А че во флейм то? Страшно что попрекут в плохом модерировании?

Автор: Step 27.9.2004, 15:29
я просто расказываю, что позиции могут быть разные вопрос в том к чему душа у человека склонна...

причем тут попрекнут, и сделал я такое предупреждение, что бы увидеть вашу реакцию и сделать правильное решение ....
но лично я считаю что в контексте с++ эта тема себя исчерпала
М
 

кстати правило  типа

1. .....
2. если модератор не прав смотри пункт первый

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


не повторяйте подвига BRB


Автор: chipset 28.9.2004, 00:56
Я вот учил Си под влиянием отца..
Потом, долго программил на бэйсике, в конце 2002 что то в мозгУ тронулось и я ушёл в С++...
Хотя конечно для меня 10-летнего асм вероятно показался бы сильно тяжелым, помню как мне тяжело было понять элементарные циклы wow.gif

Автор: Peter 30.9.2004, 12:24
Цитата(3 @ 27.9.2004, 12:05)
Цитата(Peter @ 6.9.2004, 15:38)

Знаю хорошую методику: учиться, учиться и учиться.

Угу, и придётся по сто раз велосипед изобретать

Зато впоследствии человек сможет изобрести неизобретенное.

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