DJ KARIES пишет:
> Си-подобные языки *ограничивают программистов в последующем выборе > языков для изучения*.
ROTLF...
Большинство современных промышленных языков (С, С++, Java, C#, JS...) —
С-подобны. Из паскалевидных — только Дельфи. И где тут ограниченность?
> Т.е. программист, познавший перед C-подобным языком, языки других > групп, более гибок, чем тот, кто освоил впервым делом Си/Си++ и не > желает двигаться далее, считая, что он познал дао программирования.
Нормальные программисты без проблем знают по 10-20 языков, а изучение
нового занимает пару дней. Причем многие знают языки, отличающиеся от С
не только синтаксисом, а и идеологией (XSL, O'Caml, SQL, ...).
Лично для меня решающим фактором было наличие команд:
i++;
i--;
до близкого знакомства языками высокого уровня программил на Асме под ZX Spectrum forever
и уж слишком привык к inc'ам и dec'ам, а прирощения типа:
i=i+1;
i=i-1;
воспринимал с трудом .
С++ форева
Здравствуйте, Algorithmus, Вы писали:
A>Мне, например, в свое время в паскале много всего не понравилось... Не думаю, что возможность объявлять переменные в любом месте программы — это самая главная фича. Причем, она не в С, а в С++
Не то что бы в С в любом месте можно было объявлять. Но в начале любого блока можно. А так как блоки можно делать где угодно, то почти в любом месте. Например:
if (...)
{
int i = ...;
i++;
{
int k = i * 5;
...
}
}
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Isaev_Max, Вы писали:
I_M>Лично для меня решающим фактором было наличие команд: I_M>i++; I_M>i--; I_M>до близкого знакомства языками высокого уровня программил на Асме под ZX Spectrum forever I_M>и уж слишком привык к inc'ам и dec'ам, а прирощения типа: I_M>i=i+1; I_M>i=i-1; I_M>воспринимал с трудом . I_M>С++ форева
Component Pascal:
INC(i); (* i := i + 1; *)
DEC(i); (* i := i - 1; *)
INC(i, 1000); (* i := i + 1000; *)
DEC(i, 1000); (* i := i - 1000; *)
VAR s: SET; i: INTEGER;
BEGIN
i := 5;
s := {10, 16} (* биты под номерами 10 и 16 равны 1 остальные биты равны 0 *)
INCL(s, 22); (* бит под номером 22 теперь = 1 *)
EXCL(s, 22); (* бит под номером 22 теперь = 0 *)IF i IN s THEN(* если бит под номером i равен 1 тогда ... *)
i := ORD(s); (* преобразование множества битов в целое число (SUM n: n IN s: 2^n) *)
s := BITS(i);(* преобразование целого числа в множество битов *)
(* гарантируется что нулевой бит множества - это младший разряд целого числа не зависимо от архитектуры процессора - кросплатформенные приложения *)
Set operators:
+ union
- difference (x - y = x * (-y))
* intersection
/ symmetric set difference (x / y = (x-y) + (y-x))
Здравствуйте, AndrewJD, Вы писали:
AJD>Здравствуйте, slegkapjan, Вы писали:
S>>великолепные возможности по работу с железом... AJD>Какие такие возможности есть в Си и нету в Borland Pasсal? AJD>И какие вообще есть возможности по работе с железом у Си на уровне языка?
AJD>И какие вообще есть возможности по работе с железом у Си на уровне языка?
Поскольку я занимаюсь программированием микроконтроллеров ("железа") и программы в основном пишу на Си, то у меня сложилось мнение, что в основном все зависит от реализации конкретных компиляторов. Это относится и к возможности доступа к различным областям памяти (RAM, EEPROM, program flash memeory, регистры), и к портам МК, и к отдельным разрядам данных. Но единых стандартов нет.
Здравствуйте, DJ KARIES, Вы писали:
DK>Обычно люди, начавшие свою дорогу в будущее с "C" далее СЕЙ не двигаются, ибо для них языки группы СИ есть идеал.
Я начинал с языка С, но потом перешел полностью на Delphi.
Здравствуйте, Cyberax, Вы писали:
C>Нормальные программисты без проблем знают по 10-20 языков, а изучение C>нового занимает пару дней.
Смотря что понимать под обучением Одно дело в режиме Read Only --- понимать написаный на языке текст, другое --- изучить все сопуствующее окружение и уметь его использовать.
Здравствуйте, yxiie, Вы писали:
Y>а на С++ я долго перейти не мог — синтаксис знал, но заставить себя писать никак не мог — не мог придумать достойную задачу. а потом таки придумал — начал писать JavaScript-подобный интерпретатор на С++, ну а дальше пошло-поехало
Я до сих пор не могу перейти Тоже достойной задачи никак не могу придумать...
Здравствуйте, DJ KARIES, Вы писали:
DK>Я в SQL тоже пишу СЛУЖЕБНЫЕ слова типа "SELECT * FROM MyTable WHERE MyField=5". DK>Потому что так принято писать. Хотя SQL и не обидится, что я напишу "SELECT" как "select" или "Select", но мои изменения на фоне предыдущей работы предыдущего разработчика проекта будут выделяться. DK>В SQL так принято и я пишу так, как принято, скрипя зубами, но пишу
В SQL я тоже привык. А в Delphi, наоборот, я привык писать ключевые слова в нижнем регистре... Обероновский синтаксис я не пробовал, возможно и к нему можно привыкныть...
Здравствуйте, Den Raskovalov, Вы писали:
DR>PPS А вообще разница между C++/Delphi'стами почти нивелирована уже давно.
Программисты имеют три уровня развития:
на первом они не знают, чем отличается С от Паскаля;
на втором они знают, чем отличается С от Паскаля;
на третем они понимают, что С от Паскаля ничем не отличается.
Andrei N.Sobchuck wrote:
> DR>PPS А вообще разница между C++/Delphi'стами почти нивелирована уже > давно. > Программисты имеют три уровня развития: > на первом они не знают, чем отличается С от Паскаля; > на втором они знают, чем отличается С от Паскаля; > на третем они понимают, что С от Паскаля ничем не отличается.
А на четвертом уровне понимают, что С++ кардинально отличается от С и от
Дельфи.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
DR>>PPS А вообще разница между C++/Delphi'стами почти нивелирована уже давно.
ANS>Программисты имеют три уровня развития: ANS>на первом они не знают, чем отличается С от Паскаля; ANS>на втором они знают, чем отличается С от Паскаля; ANS>на третем они понимают, что С от Паскаля ничем не отличается.
ЭЭЭ Смотря какой паскаль. Если не турбо то да, а если виртовский, то не очень то похож.
И вообще, тут проблема совершенно в другом. Все понимают разницу между C++, Лиспом и Прологом. А тут вроде бы и термины такие-же, и синтаксис похож, и даже паттерны одни и те же. А вот реализация паттернов — другая. Вроде генерики — те же шаблоны. А в действительности не тоже самое. В результате, несмотря на общую похожесть терминов и синтаксиса — дизайн значительно изменяется. И те приемы которые подходят в C++, не проходят в C# или являются неоптимальными. И наоборот. А вот к этому привыкнуть значительно сложнее, чем перейти на Лисп.
Здравствуйте, GlebZ, Вы писали:
GZ>Здравствуйте, Andrei N.Sobchuck, Вы писали:
DR>>>PPS А вообще разница между C++/Delphi'стами почти нивелирована уже давно.
ANS>>Программисты имеют три уровня развития: ANS>>на первом они не знают, чем отличается С от Паскаля; ANS>>на втором они знают, чем отличается С от Паскаля; ANS>>на третем они понимают, что С от Паскаля ничем не отличается. GZ>ЭЭЭ Смотря какой паскаль. Если не турбо то да, а если виртовский, то не очень то похож.
Так вроде в совке турбо особой любовью и пользовался.
GZ>И вообще, тут проблема совершенно в другом. Все понимают разницу между C++, Лиспом и Прологом. А тут вроде бы и термины такие-же, и синтаксис похож, и даже паттерны одни и те же. А вот реализация паттернов — другая. Вроде генерики — те же шаблоны. А в действительности не тоже самое. В результате, несмотря на общую похожесть терминов и синтаксиса — дизайн значительно изменяется. И те приемы которые подходят в C++, не проходят в C# или являются неоптимальными. И наоборот. А вот к этому привыкнуть значительно сложнее, чем перейти на Лисп.
Тут, я думаю, можно поспорить, но я внятно мысль сформултровать не могу
Пока мне в глаза бросаются только "умные указатели" против using+dispose.
Что касается шаблонов, то вот Алексей или Павел, как активные С++-ники пусть скажут насколько часто им самим приходится писать шаблоны (то есть библиотеки типа Буст не считаем) и для каких целей? А гереки это так, мелочь
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>Наоборот — самая первейшая!
VD>Да уж. Потом будет поздно.
Я никогда не верил в байки, что выбор языка программирования отражается как-то на мышлении программиста. Там более, что все знакомые спецы неплохо владели от 5 и более языками. Но тут то самое исключение, похоже.
Здравствуйте, Cyberax, Вы писали:
>> DR>PPS А вообще разница между C++/Delphi'стами почти нивелирована уже >> давно. >> Программисты имеют три уровня развития: >> на первом они не знают, чем отличается С от Паскаля; >> на втором они знают, чем отличается С от Паскаля; >> на третем они понимают, что С от Паскаля ничем не отличается.
C>А на четвертом уровне понимают, что С++ кардинально отличается от С и от C>Дельфи.
Ага. А на пятом даже начинают понимать, что отличие это в худшую сторону.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
>>> DR>PPS А вообще разница между C++/Delphi'стами почти нивелирована уже >>> давно. >>> Программисты имеют три уровня развития: >>> на первом они не знают, чем отличается С от Паскаля; >>> на втором они знают, чем отличается С от Паскаля; >>> на третем они понимают, что С от Паскаля ничем не отличается.
C>>А на четвертом уровне понимают, что С++ кардинально отличается от С и от C>>Дельфи.
VD>Ага. А на пятом даже начинают понимать, что отличие это в худшую сторону.
Угу. И на шестом осознают, что в лучшую сторону отличается С#.
Здравствуйте, DEMON HOOD, Вы писали:
DH>потом появилась у меня IDE Borland C. И там и там были жёлтые буквы на синем фоне да и паскаль от си не сильно отличается, DH>но единственная фича которая перевесила в пользу си — это возможность обьявлять переменные в произвольном месте , а не где-то там, в блоке var.
В нлубоком детстве, лет эдак в 12 довелось мне выучить Basic (вернее, его начала) по некой загадочной детской книге издательства МИР, за которую я до сих пор благодарен дяде
Года через два у меня появился ZX Spectrum и я даже мог писать на нём сколько-нибудь работающие программы.
Далее следует более-менее обычный путь Pascal, Delphi, по мелочи всякие Perl и JavaScript. Потом пришла Java. Просто потому, что на ней было довольно просто написать программу, если не хочешь писать её на Delphi. А на Delphi не хочешь, потому что к моему третьему курсу уже отчётливо просматривались более низкие зарплаты и более низкий престиж дельфистов.
Так бы я себе и программировал на Яве, если бы в один прекрасный момент не пришлось поддерживать уже существующий код на C++. Помолившись, воспользовавший общими знаниями и синтаксисом "почти Ява" добился кое-чего.
Ну а потом. А потом пришлось писать программы под Symbian, а кроме собственного диалекта C++, практически ни на чём под неё писать невозможно. Так и получается, что хочешь — не хочешь, а рано или поздно насильно перейдёшь на C++/ Все дорого промышленного программирования ведут к C++
P.S.
Шаблоны я до сих пор понимаю весьма упрощённо, а об STL только читал. В Symbian этого нет и это значительно упрощает освоение C++. Крутые шаблоны освоим позже, когда основные навыки будут на уровне
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Что касается лично меня, то меня вовсе не раздражает писать служебные слова заглавными буквами, а даже наоборот — нравится.
Сергей, ВОПРОС не В том, УДОБНО ли ВАМ писать СЛУЖЕБНЫЕ слова ЗАГЛАВНЫМИ буквами, А в ТОМ, насколько УДОБНО потом ТАКУЮ программу ЧИТАТЬ и ОСОЗНАВАТЬ, что ЖЕ там НАПИСАНО. Не ЗНАЮ как У вас, а ЛИЧНО у МЕНЯ взгляд СПОТЫКАЕТСЯ если ПОЛОВИНА слов НАПИСАНА в ДРУГОМ регистре. И читать ПРОГРАММУ становится СЛОЖНЕЕ. Хотя КОНЕЧНО и НАБИВАТЬ текст ПРОГРАММЫ, постоянно ПЕРЕКЛЮЧАЯ caps LOCK довольно НЕУДОБНО, но ТУТ хотя БЫ есть ПОМОЩЬ в ВИДЕ code COMPLETIONS, а ВОТ для ОБЛЕГЧЕНИЯ чтения ТАКИХ текстов АВТОМАТИКИ еще НЕ придумали.