Re[10]: С++ culture
От: Cyberax Марс  
Дата: 03.11.05 16:47
Оценка:
GlebZ wrote:

> C>0. Его можно забыть.

> Можно. GC все равно счистит. Слава GC.

Я бы за такое убивал нафиг. Один раз довелось поотлаживать приложение,
падающее при больших нагрузках — не закрывались коннекты к SAP (точнее,
закрывались в финализаторе) и его начинало глючить. Причем под отладкой
или без нагрузки все работало.

> C>1. using для ресурсов, хранящихся в полях класса уже не поможет.

> Почему? Поможет. Во-первых, такие ресурсы стараются освободить как
> только можно быстрее, и они никак не становятся полями.

Ну-ну. Все операции с коннектом к БД у вас делаются в одном методе?

> Ну а во вторых делают Disposable не поля, а классы. И там уже вызывают

> все классы которые нужно сдиспоузить.

Ну да, если в классе есть disposable-поле, то и сам класс нужно тоже
делать disposable. А затем класс, в котором он содержится и т.д.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[11]: С++ culture
От: GlebZ Россия  
Дата: 03.11.05 17:14
Оценка:
Здравствуйте, Cyberax, Вы писали:


C>Ну-ну. Все операции с коннектом к БД у вас делаются в одном методе?

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

C>Ну да, если в классе есть disposable-поле, то и сам класс нужно тоже

C>делать disposable. А затем класс, в котором он содержится и т.д.
Тебе понравилось? Здоровски да? Мне тоже нравится. Но этого мало. В подобных Dispose/finalize много своих особенностей. Их нужно знать и выполнять.(собственно как и особенности в С++). Одно только радует, такие вещи делаются очень редко.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: С++ culture
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.05 18:00
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> Можно по подробнее о проблемах с написанием using-га?


C>0. Его можно забыть.


Хм. А использовать смарт-поинтер забыть нельзя?

C>1. using для ресурсов, хранящихся в полях класса уже не поможет.


Вообще-то если ты не контролируешь память, то хнинить что-то из ресурсов в полях обычно не приходится. Хотя и для этого случая есть Dispose().
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: С++ culture
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.05 18:00
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>VladD2 wrote:


>> C>Это-то фигня. Больше всего раздражает, что GC уничтожает память

>> C>недетерминировано. А значит RAII и подобные идиомы не проходят.
>> Нда, невежество в вопросах ЖЦ просто порожает. Ну, откуда ты взял, что
>> ЖЦ уничтожает память? И чем тебе не угодил using?

C>Хорошо, не "уничтожает", а "передвигает выжившие объекты в начало кучи".


С этим ты тоже промахивашся. Дело в том, что 99% объектов умирают в нулевом и первом поколении. При этом они никуда не предвигаются. А выживших объектов крайне мало и они копируются в старшую кучу. Только второе поколение дефрагментируется. И происходит это крайне редко.

Например, сейчас глянул сколько сборок мусора было произведено в Янусе за время прощедшее с его последнего перезапуска. Оказалось 308. Перезапускал же я его в последний раз 17 с чем-то часов... 30.10.2005. То есть Янус делал меньше 100 сборок мусора в день. А использую я его довольно плотно.

C>С терминологией я промахнулся, но думал, что смысл будет понятен.


Твоя мысль понятна. Но судишь ты о мало тебе знакомой проблеме. Вообще странная ситуация. Все кто пользуется дотнетом не находят проблем в описаваемых теоретиками случаях. Но теоретики от этго не унимаются. Все равно спорят. Неужели так сложно попробовать написать пару приложений? Глядишь понравится и...

>> Действительно. Как может пугать то о чем даже понятия не имешь?


C>Ну-ну...


А что "ну-ну"? Твои слова говорят об этом совершенно определенно. Да что уж там. Ты даже поиском не потрудился воспользоваться прежде чем взяться повторять эти догмы. Ты думашь, первый кто это говорит?

Эти вопросы сто раз обсуждались. И на них давались исчерпывающие ответы. Но просто кому-то чень хочется верить в свои фобии.

Остается вопрос — зечем?
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: С++ culture
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.05 18:00
Оценка: +1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Не согласен. Свобода изложения мысли складывается из:


ГВ>- понимания цели (задача + контекст);

ГВ>- наличия мысли;
ГВ>- владения средством изложения мысли.

Речь не об абстрактном мыслительном поцессе. А о программировании где язык определяет мировозрение программиста. Мы мыслим на ЯП. Более мощьный язык позволяет описывать проблему более абстракно и просто. Мысля на одном языке программист невольно ограничивает свое мировозрение принятыми в нем паттернами. Другие языки дают другие подходы. И может оказаться так, что более красивое решение очевидно для пользователя одного языка, но не очевидно для другого. Зная несколько языков программист способен более трезво смотреть на проблему выбирая те подходы которые ниболее удобны в данном случае.

ГВ>Это всё, что необходимо. Хотя я не буду спорить с тем, что знакомство с подходами, предлагаемыми другими языками (API и пр.) может помочь в том смысле, что подскажет какой-то незатёртый ход, идею и т.п. Но само по себе оно не определяет ни широты мышления, ни уровня абстракции излагающего. Более того, может даже мешать (ты и сам по этому поводу много высказывался ).


Мешать вряд ли. Но несомненно кроме владения несколькими языками нжно еще и "мозги на плечах". Просто сам факт владения уже говорит о многом.

ГВ>А иначе не было бы дураков-полиглотов. Да и вообще, тогда многознание можно было бы приравнять к великому уму, что не есть правильно.


Полиглот обычно зазубривает информацию не вдаваясь в ее суть. Конечно можно тупо выучить синтаксис нескольких языков не вдаваясь в их концепции и не понимая как их применять в жизни. Но это уже совсем клинический случай испорченности ДНК. С таким ДНК нужно идти в справочную или в библиотеку, но не программистом.

VD>>И какого же? У Явы дцать родителей. У Шарпа не меньше. Или схожесть синтаксиса определяет все что можно?


ГВ>C++, разумеется.


Ты опять не вдиел дискусси о этому поводу. Мне кажется там доходчиво было показано, что С++ для Шара всего лишь один из родственников и далего не самый концептуальный.

ГВ> Он есть в родителях Java? Есть. С чего начинается изучение языка? С синтаксиса. Синтаксис близок к C++? Ещё как близок!


Синтаксис скорее похож. Все же в Шарпе тонны синтаксических конструкций отсуствующих в С++. Даже принцип парсинга файлов и тот иной.

Если уж на то пошло, то синаксис и С++ и C# заимствованы у С. А у С++ и C# схожи скорее только ключевые слова. Тот же синтаксис описания классов совсем иной.

ГВ> Семантика бОльшей части операторов и объявлений близка к C++? Ещё как близка!


Если про синтаксис еще можно поспорить, то говорить о схожести семантики я бы точно не стал. Что там близкого?

ГВ> Дык, для какой группы программистов облегчён переход на Java? Правильно — для C++-ников.


Да не правильно вовсе. Дельфисты на нее тоже переходят в лет. Причем проблем с ломкой сознания куда меньше.

ГВ> Что они принесут? Правильно, мутировавшую C++-культуру. Ergo, "Java-культура" в немалой степени наследует C++-культуру и именно её!


Да вот как раз Ява, и темболее C# имеют совсем иную культуру. Это чистые ООЯ. Причем это еще и динамические языки. Для хорошего понимания Явы и C# нужно скорее знать COM и Смолток, так как концепции там куда ближе.



ГВ>Точно такая же наследственность у C#. Только его, правда, в кашу превратят скоро, но сейчас это к делу не относится.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: С++ culture
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.05 18:00
Оценка: :)
Здравствуйте, GU Glez, Вы писали:

GG>Вообще-то, это говорил Достоевский


Ну, я с ним лично не общался по поводу языков программирования, но чем черт не шутит?

GG>и об этом говорят многие ученые.


Ну, да... нам ученым...

GG> Но это так к сведению.


Спасибо. Сведения очень позновательные.

GG> Меня всегда удивляет одно — где можно найти профессионального врача владеющего всеми (или очень многими) областями медицины?


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

GG> Не помню кто сказал, но думаю это рядом с истиной: "Профессионал во всем — зовется дилетант". Хотя, с утверждением, что программирование — область в которой необходимо постоянно изучать и "мыслить как можно лучше", путем изучения нового — думаю согласятся многие.


Вообще-то я вел речь не о глубоких знаниях всего насвете. Я говорил о ЯП. ЯП это нечто большее чем просто чем просто язык. Он определяет мироваозрение. С++-программист никогда не поймет Ява-, ВБ- или Смолток-программиста. Как, в прочем, и на оборот. Но если встречются два программисто знащих перечисленные языки, то ни будут прекрасно понимать друг-друга даже если в данный момент каждый из них использует отличный от другого язык.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: С++ culture
От: Cyberax Марс  
Дата: 03.11.05 18:12
Оценка:
VladD2 wrote:

> C>0. Его можно забыть.

> Хм. А использовать смарт-поинтер забыть нельзя?

Можно сделать чтоб нельзя было. Кроме того, само использование голых
указателей уже достаточно заметно.

> C>1. using для ресурсов, хранящихся в полях класса уже не поможет.

> Вообще-то если ты не контролируешь память, то хнинить что-то из
> ресурсов в полях обычно не приходится. Хотя и для этого случая есть
> Dispose().

Ну-ну.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[8]: С++ culture
От: Cyberax Марс  
Дата: 03.11.05 18:19
Оценка:
VladD2 wrote:

> C>Хорошо, не "уничтожает", а "передвигает выжившие объекты в начало

> кучи".
> С этим ты тоже промахивашся. Дело в том, что 99% объектов умирают в
> нулевом и первом поколении. При этом они никуда не предвигаются. А
> выживших объектов крайне мало и они копируются в старшую кучу.

Это и называется "передвигает выжившие объекты" (aka "promotes", "tenures").

> C>С терминологией я промахнулся, но думал, что смысл будет понятен.

> Твоя мысль понятна. Но судишь ты о мало тебе знакомой проблеме. Вообще
> странная ситуация. Все кто пользуется дотнетом не находят проблем в
> описаваемых теоретиками случаях.

Твоя мысль понятна. Но судишь ты о мало тебе знакомой проблеме. Вообще
странная ситуация. Все кто пользуется С++ не находят проблем в
описаваемых теоретиками случаях.

> А что "ну-ну"? Твои слова говорят об этом совершенно определенно. Да

> что уж там. Ты даже поиском не потрудился воспользоваться прежде чем
> взяться повторять эти догмы. Ты думашь, первый кто это говорит?

Если вы сомневаетесь в моих знаниях GC, то можете почитать этот топик,
например: http://rsdn.ru/Forum/Message.aspx?mid=995758&amp;only=1
Автор: Cyberax
Дата: 20.01.05


--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[4]: С++ culture
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 03.11.05 18:42
Оценка: :))) :)
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Да ведь спорят. Я в свое время мир предложил


PD>http://www.rsdn.ru/Forum/Message.aspx?mid=1445599&amp;only=1
Автор: Pavel Dvorkin
Дата: 20.10.05


PD>Не получается мир.


И прямо во время подписания мирного соглашения из-за острого несогласия с выбранным цветом чернил...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: С++ culture
От: GU Glez  
Дата: 03.11.05 18:54
Оценка:
Здравствуйте, VladD2, Вы писали:

GG>> Меня всегда удивляет одно — где можно найти профессионального врача владеющего всеми (или очень многими) областями медицины?

VD>Хм. Наверно таких враченй называют педиаторами. Но к делу это вряд ли относится.
Подчеркиваю профессинальный врач, т.е. тот который понимает большинство аспектов данной области. Наверное нужно было для этого написать: "...найти профессионального врача владеющего профессионально всеми областями медицины...", но как-то язык не повернулся
GG>> Не помню кто сказал, но думаю это рядом с истиной: "Профессионал во всем — зовется дилетант". Хотя, с утверждением, что программирование — область в которой необходимо постоянно изучать и "мыслить как можно лучше", путем изучения нового — думаю согласятся многие.
VD>Вообще-то я вел речь не о глубоких знаниях всего насвете. Я говорил о ЯП. ЯП это нечто большее чем просто чем просто язык. Он определяет мироваозрение. С++-программист никогда не поймет Ява-, ВБ- или Смолток-программиста. Как, в прочем, и на оборот. Но если встречются два программисто знащих перечисленные языки, то ни будут прекрасно понимать друг-друга даже если в данный момент каждый из них использует отличный от другого язык.
+1
Теперь согласен
С уважением,
GU Glez [Джи Ю Глиз]
Re[9]: С++ culture
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.05 21:13
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Твоя мысль понятна. Но судишь ты о мало тебе знакомой проблеме. Вообще

C>странная ситуация. Все кто пользуется С++ не находят проблем в
C>описаваемых теоретиками случаях.

Это было бы так если бы я лет 10 не писал на этом языке.

C>Если вы сомневаетесь в моих знаниях GC, то можете почитать этот топик,

C>например: http://rsdn.ru/Forum/Message.aspx?mid=995758&amp;only=1
Автор: Cyberax
Дата: 20.01.05


Я гляжу на слова. А слова явно странные.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: С++ culture
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.11.05 20:19
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Хм. Наверно таких враченй называют педиаторами. Но к делу это вряд ли относится.


Терапевтами наверное? Педиатр это детский врач. Хотя у них тоже довольно широкий спектр умений нужен.
Впрочем неважно. Главное что в мед. училище все студенты изучают и фармакологию, и хирургию, и патологоанатомию и много чего еще. А вот некоторые программисты почему то считают что знания одного C++/Delphi/C# etc достаточно для того чтобы считать себя высококлассными спецами. Пример — Основы. Что это?
Автор: kilonet2
Дата: 29.10.05
.

VD>Вообще-то я вел речь не о глубоких знаниях всего насвете. Я говорил о ЯП. ЯП это нечто большее чем просто чем просто язык. Он определяет мироваозрение. С++-программист никогда не поймет Ява-, ВБ- или Смолток-программиста. Как, в прочем, и на оборот. Но если встречются два программисто знащих перечисленные языки, то ни будут прекрасно понимать друг-друга даже если в данный момент каждый из них использует отличный от другого язык.


Что забавно — совсем не обязательно изучать какую то экзотику. Даже широко используемый в индустрии XSLT будет полезен для расширения кругозола. Можно еще вспомнить Ant/NAnt/MSBuild.
... << RSDN@Home 1.2.0 alpha rev. 619 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[7]: С++ culture
От: GU Glez  
Дата: 04.11.05 22:38
Оценка: -2
Здравствуйте, AndrewVK, Вы писали:

AVK>Впрочем неважно. Главное что в мед. училище все студенты изучают и фармакологию, и хирургию, и патологоанатомию и много чего еще. А вот некоторые программисты почему то считают что знания одного C++/Delphi/C# etc достаточно для того чтобы считать себя высококлассными спецами. Пример — Основы. Что это?
Автор: kilonet2
Дата: 29.10.05
.

Правильно. Но и мы — тех. специалисты — на факультетах изучаем историю, философию, социологию и т.д. и т.п. Еще многое что изучаем по смежным специальностям. Но ведь делаем мы это не все время, а то работать будет некогда Изучается только нужное. Чувствую, что AndrewVK раздвинул таки рамки темы
На самом деле, тут не надо забывать частное отношение к программированию. Т.е. есть те кто относится как к искусству, другие как к ремеслу — еще и от этого много споров, ИМХО. Просто опыт говорит о том, что человек с хорошим мат/лог/аналит. мышлением и относящийся к программированию как ремеслу, действительно не чувствует разницы на чем писать. Это плюс
... Но это будет до поры до времени. Когда эта пора придет (обычно — время оптимизации о подчищения, выяснения причины "ну что еще тебе надо?"), данный человек уже не сможет просто применить аналитическое мышление и начнет копать, лазить вообщем сделает как-нибудь, но не совсем как нужно. Потому что "как нужно" приходит с опытом. А от куда ему взяться, если человек тратил время на изучение нового языка, новых технологий не особо вдаваясь в их тонкости — на это нет времени и вообще считается mauvais tonne. Это минус.
Одно дело — знание языков, и совсем другое — знание технологий. Мастер ведь на то и мастер — чтобы знать о своем ремесле почти все. А язык, действительно, средство выражения своих мыслей. ИМХО, т.к. человек мыслит по большей части образами, то в этом-то и вся загвоздка — ведь успешно решив какую-то задачу на одном языке уже труднее будет перенести это же решение на другой язык вот так сходу, т.к. в нашей памяти даже стиль/средство написания/выражения мысли играет такую же роль как и сам контекст выражения.
С уважением,
GU Glez [Джи Ю Глиз]
Re[8]: С++ culture
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.11.05 07:14
Оценка: +1
Здравствуйте, GU Glez, Вы писали:

GG>Правильно. Но и мы — тех. специалисты — на факультетах изучаем историю, философию, социологию и т.д. и т.п.


Они, медики, тоже изучают. Речь о другом — если мед. ВУЗов в советское время было предостаточно, и практически все врачи имеют профильное высшее образование (у нас даже в аптеке лекарства без высшего образования продавать нельзя). А вот с программированием ситуация куда печальнее — с профильным образованием, даже если брать самую верхушку, меньше половины. Основная мапсса просто с техническим, математическим, физическим образованием. Немало с гуманитарным. А есть вобще без высшего образования.
Поэтому знакомство каждого конкретного программиста со все спектром современных техник программирования лежит целиком на его совести.

GG> Еще многое что изучаем по смежным специальностям. Но ведь делаем мы это не все время, а то работать будет некогда


Лучше день попотеть, потом за час долететь.
... << RSDN@Home 1.2.0 alpha rev. 619 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[9]: С++ culture
От: GU Glez  
Дата: 05.11.05 08:35
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Они, медики, тоже изучают. Речь о другом — если мед. ВУЗов в советское время было предостаточно, и практически все врачи имеют профильное высшее образование (у нас даже в аптеке лекарства без высшего образования продавать нельзя). А вот с программированием ситуация куда печальнее — с профильным образованием, даже если брать самую верхушку, меньше половины. Основная мапсса просто с техническим, математическим, физическим образованием. Немало с гуманитарным. А есть вобще без высшего образования.

AVK>Поэтому знакомство каждого конкретного программиста со все спектром современных техник программирования лежит целиком на его совести.
Думал не отвечать, но тогда останется незамеченным один очень важный факт. Аналогия с медиками с моей стороны была приведена в качестве примера, дабы показать, что даже в такой области, где все меняется не так быстро (новые методы лечения и диагностирования появляются только после длительных тестов), то даже здесь почти нет Професиионалов знающих все или почти все и могущих работать без ухудшения качества работы на замещаемой должности (деревенские больницы и больницы малых городов во внимание не приниманем).
А что мы имеем в программировании. Мало того что по идее надо бы знать пяток-десяток другой ЯП и Технологий, так еще и следить за их движением в области развития, которое происходит довольно таки часто.
В университете писал на Asm, C (C++ — не признавал по идеологиским соображениям), Delphi и FreePascal. Начиная с 3-го курса проводил переодически мастер-класс для некоторых преподавателей (извините за нескромность, далее по тексту Вы поймете о чем речь). Однако, сейчас я не могу без отрывы от производства сесть и сделать тоже самое как на Delphi, так и на VC++. Произойдет ломка сознания. В памяти даже работа с COM (какой бы сложной она не была на VC++, про ATL молчу — это еще один новый слой абстракции) осталась именно в качестве примеров на VC++ (и живут поныне ). А Delphi — хоть и проще с КОМ работать, но мне например сложно вот так взять и продолжить писать программу, начатую моим коллегой (у нас в городе их аж 7 человек ). Да что там коллегой, ко мне обратились студенты из университета, где я учился. Принесли и показывают мою дипломную работу (писана Delphi практически без VCL (лишь некоторые модули) для большей совместимости с FreePascal и иму подобными) и тычуть пальцем: "мол как ты тут делал? Что это такое и почему?". В ответ им два слова — "не помню". Приходите тогда-то постараюсь вспомнить. Ну и что? Вспомнить-то вспомнил, а вот помочь им в их вопросах и помочь дописать (читай разобраться в некоторых вопросах) их диплом так и не смог — не выдержал ломки от синтаксиса и вообще отвык от "begin..end" и то что комментарии — "{}", указателей, взятие адреса и т.д. и т.п. Вообщем, дал им свои старые записи, ребята как-то выкрутились.
ЗЫ. Те самые преподаватели — предоподаватели математики и физики. Факультет Информатики открыли только в позапрошлом году.
С уважением,
GU Glez [Джи Ю Глиз]
Re[10]: С++ culture
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.11.05 08:50
Оценка: 8 (1) +4
Здравствуйте, GU Glez, Вы писали:

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


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

GG>А что мы имеем в программировании. Мало того что по идее надо бы знать пяток-десяток другой ЯП и Технологий, так еще и следить за их движением в области развития, которое происходит довольно таки часто.


Пяток-десяток не надо, надо характерных представителей того или иного направления.

GG>В университете писал на Asm, C (C++ — не признавал по идеологиским соображениям), Delphi и FreePascal.


Это все языки одного порядка (разве что asm немножко выбивается).

GG> Начиная с 3-го курса проводил переодически мастер-класс для некоторых преподавателей (извините за нескромность, далее по тексту Вы поймете о чем речь). Однако, сейчас я не могу без отрывы от производства сесть и сделать тоже самое как на Delphi, так и на VC++.


Это тоже языки одного порядка. И то, что тебе потребовалась ломка сознания как раз и показывает, что ты был не способен легко взглянуть на проблему даже с немножечко другой стороны, не говоря уж о ортогональных подходах. И изучение этих самых других подходов, даже если ты их потом применять не будешь, очень упростит в дальнейшем жизнь.
... << RSDN@Home 1.2.0 alpha rev. 619 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[6]: С++ culture
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.11.05 23:30
Оценка: 1 (1)
Здравствуйте, VladD2, Вы писали:

VD>Речь не об абстрактном мыслительном поцессе. А о программировании где язык определяет мировозрение программиста. Мы мыслим на ЯП. Более мощьный язык позволяет описывать проблему более абстракно и просто.


Э... а определение понятия мощности языка можно? Тут когда-то бодались уже по этому поводу, да я уж подзабыл, где именно. AFAIK, LISP тут впереди планеты всей.

VD>Мысля на одном языке программист невольно ограничивает свое мировозрение принятыми в нем паттернами.


Зависит от степени, в которой язык навязывает такие ограничения. Например, Java навязывает использование GC и одиночного наследования. Ибо иного не дано. Тогда как C++ этого не делает. Lisp, кстати, тоже, если не считать GC.

VD>Другие языки дают другие подходы. И может оказаться так, что более красивое решение очевидно для пользователя одного языка, но не очевидно для другого.


Да, это может быть так, только вот связывать доступность решения с опытом использования того или иного языка неправомерно. Одно и тоже решение (скажем, замыкания) может быть описано и на Lisp, и для С# и в терминах object pascal, однако сути самого решения это не изменит. Равно как и его доступности, скажем, тому, кто знает паскаль, но не знает Lisp.

VD>Зная несколько языков программист способен более трезво смотреть на проблему выбирая те подходы которые ниболее удобны в данном случае.


Очень спорно. Здесь всё зависит не от языка, а от набора решений известных программисту и... я бы назвал это самостоятельностью мышления. Да, кстати, я не спорю с тем, что полезно знать нескольких языков. Я просто считаю приведённую выше формулировку слишком поверхностной.

ГВ>>Это всё, что необходимо. Хотя я не буду спорить с тем, что знакомство с подходами, предлагаемыми другими языками (API и пр.) может помочь в том смысле, что подскажет какой-то незатёртый ход, идею и т.п. Но само по себе оно не определяет ни широты мышления, ни уровня абстракции излагающего. Более того, может даже мешать (ты и сам по этому поводу много высказывался ).


VD>Мешать вряд ли.


Ну вот! А как же догмы и прочее, что впитываетя с мол... кхм, с каждым прочтением, например, стандарта?

VD>Но несомненно кроме владения несколькими языками нжно еще и "мозги на плечах".


+3

VD>Просто сам факт владения уже говорит о многом.


Угу, например — о любопытстве.

ГВ>>А иначе не было бы дураков-полиглотов. Да и вообще, тогда многознание можно было бы приравнять к великому уму, что не есть правильно.


VD>Полиглот обычно зазубривает информацию не вдаваясь в ее суть. Конечно можно тупо выучить синтаксис нескольких языков не вдаваясь в их концепции и не понимая как их применять в жизни. Но это уже совсем клинический случай испорченности ДНК. С таким ДНК нужно идти в справочную или в библиотеку, но не программистом.


+1

VD>>>И какого же? У Явы дцать родителей. У Шарпа не меньше. Или схожесть синтаксиса определяет все что можно?

ГВ>>C++, разумеется.
VD>Ты опять не вдиел дискусси о этому поводу. Мне кажется там доходчиво было показано, что С++ для Шара всего лишь один из родственников и далего не самый концептуальный.

Да видел я эту дискуссию. А потом, я разве говорил, что Java унаследована только от C++? Просто мне кажется, что Java заполучит аудиторию C/C++-программистов несколько легче и быстрее, чем, например, тех же Smalltalk-еров. А лёгкость сия связана с тем, что культура Java близка культуре C++ в силу того, что C++ есть в родителях Java.

ГВ>> Он есть в родителях Java? Есть. С чего начинается изучение языка? С синтаксиса. Синтаксис близок к C++? Ещё как близок!

VD>Синтаксис скорее похож. Все же в Шарпе тонны синтаксических конструкций отсуствующих в С++. Даже принцип парсинга файлов и тот иной. Если уж на то пошло, то синаксис и С++ и C# заимствованы у С. А у С++ и C# схожи скорее только ключевые слова. Тот же синтаксис описания классов совсем иной.

Я и не говорю о 100% совпадении. Я апеллирую только к близости синтаксисов.

ГВ>> Семантика бОльшей части операторов и объявлений близка к C++? Ещё как близка!

VD>Если про синтаксис еще можно поспорить, то говорить о схожести семантики я бы точно не стал. Что там близкого?

Простейшие вещи, разумеется. Объявления переменных и констант, арифметика, операторы, вызовы функций.

ГВ>> Дык, для какой группы программистов облегчён переход на Java? Правильно — для C++-ников.

VD>Да не правильно вовсе. Дельфисты на нее тоже переходят в лет. Причем проблем с ломкой сознания куда меньше.

Ну, если не забывать, что Дельфи через object pascal (и turbo pascal v.5.5+) тоже заполучила некоторую часть C++-культуры...

ГВ>> Что они принесут? Правильно, мутировавшую C++-культуру. Ergo, "Java-культура" в немалой степени наследует C++-культуру и именно её!

VD>Да вот как раз Ява, и темболее C# имеют совсем иную культуру. Это чистые ООЯ. Причем это еще и динамические языки. Для хорошего понимания Явы и C# нужно скорее знать COM и Смолток, так как концепции там куда ближе.

Значит, добавим к исходному тезису утверждение, что на Java несложно перейти со Smalltalk.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[7]: С++ culture
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.11.05 06:20
Оценка: +1
Здравствуйте, Геннадий Васильев, Вы писали:

VD>>Да вот как раз Ява, и темболее C# имеют совсем иную культуру. Это чистые ООЯ. Причем это еще и динамические языки. Для хорошего понимания Явы и C# нужно скорее знать COM и Смолток, так как концепции там куда ближе.


ГВ>Значит, добавим к исходному тезису утверждение, что на Java несложно перейти со Smalltalk.


А утверждение ли это?
Как C++ники на Java переходят, я видел. А вот переходят ли на Java Smalltalk-еры (по собственной воле) -- это еще вопрос.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: С++ culture
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.11.05 14:17
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

VD>>Речь не об абстрактном мыслительном поцессе. А о программировании где язык определяет мировозрение программиста. Мы мыслим на ЯП. Более мощьный язык позволяет описывать проблему более абстракно и просто.


ГВ>Э... а определение понятия мощности языка можно? Тут когда-то бодались уже по этому поводу, да я уж подзабыл, где именно. AFAIK, LISP тут впереди планеты всей.


Оно в цитате выше.

VD>>Мысля на одном языке программист невольно ограничивает свое мировозрение принятыми в нем паттернами.


ГВ>Зависит от степени, в которой язык навязывает такие ограничения.


Независит. Любой язык навязывает свои подходы.

ГВ> Например, Java навязывает использование GC и одиночного наследования.


ЖЦ наоборот снимает неободимость ручного управления памяти. Назвать это навязыванием мягко говоря неверно.

ГВ> Ибо иного не дано. Тогда как C++ этого не делает. Lisp, кстати, тоже, если не считать GC.


Что "Lisp, кстати, тоже"? Не навязывает ЖЦ если не считать того что лисп без ЖЦ вообще невозможен?

Это С++ навязывает ручное упроавление памятью. Причем даже общих паттенов не дает, так чт любая бибилиотека изобретает собственный. Но это вообще из другой оперы.

Чувствую, что происходит очередная попытка увести от темы.

VD>>Другие языки дают другие подходы. И может оказаться так, что более красивое решение очевидно для пользователя одного языка, но не очевидно для другого.


ГВ>Да, это может быть так, только вот связывать доступность решения с опытом использования того или иного языка неправомерно. Одно и тоже решение (скажем, замыкания) может быть описано и на Lisp, и для С# и в терминах object pascal, однако сути самого решения это не изменит. Равно как и его доступности, скажем, тому, кто знает паскаль, но не знает Lisp.


Запыкания Дельфи (так как в Паскале их никогда не было) довольно ограничены по возможностям и в купе с культурой языка не дают программисту знающему только один Дельфи полного понимания этой концепции. Более того, даже функции высшего порядка и те опускаются культурой языка. Так что обычно Дельфийцы и этих концепций толком не понимают. Для них замыкания — это способ реализовать события. Хотя вообще этот термин слишком сумбурен.

Так вот, я говорил о том, что Язык как бы накладывает фильтр на мировозрение пользователя. И зная только один язык, пусть даже самый необычный или полиглотный, человек все равно будет мыслить очень ограничено.

VD>>Зная несколько языков программист способен более трезво смотреть на проблему выбирая те подходы которые ниболее удобны в данном случае.


ГВ>Очень спорно. Здесь всё зависит не от языка, а от набора решений известных программисту


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

ГВ>и... я бы назвал это самостоятельностью мышления.


А оно просто не может быть полноценным если человек знает только один язык. Это, кстати, хорошо демонстрируют фанатики С++ или Оберона (которые чеще всего принципиально игнорируют альтернативу). Например, можно поглядеть как некоторые С++-ники воспевают метапрограммирование на шаблонах, даже не зная, что по сравнению с теми же макросами Лиспа оно является мягко говоря неудобным и недоделанным. Другой пример — оберонщики. С таким пылом рассказывать о компонентных возможностях языка в то время, как есть куда более интересные реализации.

ГВ> Да, кстати, я не спорю с тем, что полезно знать нескольких языков. Я просто считаю приведённую выше формулировку слишком поверхностной.


Это твои проблемы. Я и не брался давать формулировку для энциклопедии. Я выражаю свое мнение. Оно просто — программист знающий только один ЯП является очень ограниченным. Для того чтобы быть хорошим программистом нужно обязательно знать несколько языков и желательно концептуально разных. У нас есть следующие парадигмы: структурнрая, объектно ориентированная, компонентная, функциональная, метопрограммная (ничего не забыл?). Вот хотя бы под 2 языка поддерживающих каждую парадигму и нужно знать. Хотя бы в общих чертах.

VD>>Просто сам факт владения уже говорит о многом.


ГВ>Угу, например — о любопытстве.


И о нем в том числе. Программист без любопытства — это болван.

ГВ>Да видел я эту дискуссию. А потом, я разве говорил, что Java унаследована только от C++? Просто мне кажется, что Java заполучит аудиторию C/C++-программистов несколько легче и быстрее, чем, например, тех же Smalltalk-еров.


Почти согласен. Только нужно понять, что аудитории смолтокеров практически не существует в природе. Но то что синтаксическое сходство было в немалой степени направленно на аудиторию С/С++-ников я согласен. Вот только если взять тот же Шарп, и поглядеть кто на него переходит, то окажется, что С++-ников не такой уж и большой процент. Дельфистов и явщиков тут очень не мало.

Ну, да человек перешдший с другого языка уже знает два.

ГВ> А лёгкость сия связана с тем, что культура Java близка культуре C++ в силу того, что C++ есть в родителях Java.


Нет. Культуры как раз очень разные. Близкий только синтаксис. Все же Ява и С++ это языки исповедующие разные парадигмы. Ява компонентный и динамический язык с минималистическим синтаксисом, а С++ статический (не компонентный) и монструозный.

ГВ>Я и не говорю о 100% совпадении. Я апеллирую только к близости синтаксисов.


А она не является определяющим фатором. Она может только сподвигнуть к переходу/пробе. Но принятие языка и умение на нем работать она не гарантирует.

ГВ>Простейшие вещи, разумеется. Объявления переменных и констант, арифметика, операторы, вызовы функций.


Объявления — это синтаксис. А вот то что поля (переменные-члены типов) в С++ видны только вниз, а в Яве и Шарпе видны везде в том же пространстве имен — это уже семантика. И она явно разная. Причем очень сильно разная.

ГВ>Ну, если не забывать, что Дельфи через object pascal (и turbo pascal v.5.5+) тоже заполучила некоторую часть C++-культуры...


Боюсь, что у тебя болезнненное отньшение к С++. То что "заполучила" дельфи уже было во многих языках.

ГВ>Значит, добавим к исходному тезису утверждение, что на Java несложно перейти со Smalltalk.


Не сложнее чем с С++.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: С++ culture
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.11.05 14:30
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>> А лёгкость сия связана с тем, что культура Java близка культуре C++ в силу того, что C++ есть в родителях Java.


VD>Нет. Культуры как раз очень разные. Близкий только синтаксис. Все же Ява и С++ это языки исповедующие разные парадигмы. Ява компонентный и динамический язык с минималистическим синтаксисом, а С++ статический (не компонентный) и монструозный.


Влад, извини, что увожу тему в сторону, но почему ты считаешь Java динамическим языком?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.