singlepost

сильно ли различаются С,С#,С++? << На главную или назад  

как наберется достаточно кол-во ответов,можно удаить. просто действительно очень важно знать: сильно ли различаются С,С#,С++? просто хотел начать с С, но узнал,что в инсте будет С#,времени мало, а куда я иду, надо быть заранее очень подготовленным…

134 ответов в теме “сильно ли различаются С,С#,С++?”

  1. 121
    Владислав Кабак ответил:

    1) Ада – это чисто почти Pascal. C/++ тут ни при чемъ.
    2) Ада очень сложный язык.
    3) из Алгол -> Паскалевских самый простой это Модула-2 и Оберон.

    4) КТО программировал на языке D? Хвалят его как перспективный, но у меня времени на эксперименты всё не было. Мож кто пробовал?

  2. 120
    Vitaly Ch ответил:

    > Ада очень сложный язык.

    ересь. cущественно проще чем C++

    > КТО программировал на языке D? Хвалят его как перспективный, но у меня времени на эксперименты всё не было. Мож кто пробовал?

    язык сам по себе – удачная замена паскалю но не имеет устоявшегося рантайма

  3. 119
    Роман Белоус ответил:

    "если для конкретной платформы есть возможность выбратть."
    Ясен пень

    "Спольски писал что изьян в мозгах программиста не спасет никакое железо. особенно если софтина напичкана алгоритмами Шлемиля."
    Ну Спольски много чего понаписал) К сожалению, какое-никакое знание С не гарантирует отсутствие изъяна.
    Про Шлемиля – это статья Back to Basics из книги Joel On Software (Джоэль о программировании, с двумя уродами на обложке =)
    Но статистика из другой какой-то статьи, там нет. Там есть утверждение о том, что не зная С нельзя эффективно программировать на языках высокого уровня. При этом иллюстрирует свою идею он кодом на С почему-то, а не на языке высокого уровня. Дальше правда есть некоторое рассуждение о xmlи реляционных базах, но имхо, с языком С это совершенно ортогонально.

    Язык Ада – пугающе звучит) Американские военные его недаром любят)

  4. 118
    Vitaly Ch ответил:

    об архитектурах из документации на MySql вольным пересказом:

    если вам надо положить MySql на кластер то определите максимально необходимый размер базы, умножте эту цифру на два и если вы знаете какая архитектура умеет столько рамы – вы уже знаете как положить MySql на кластер

  5. 117
    Vitaly Ch ответил:

    кстати Ада удачная альтернатива С и С++

  6. 116
    Vitaly Ch ответил:

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

    если для конкретной платформы есть возможность выбратть.

    > А быстродействие во многих случаях решается покупкой железяки. Особенно, если архитектура решения позволяет.

    Спольски писал что изьян в мозгах программиста не спасет никакое железо. особенно если софтина напичкана алгоритмами Шлемиля.

    > Книга Спольски переводная или в оригинале?

    перевод – товарищ на рынке купил

  7. 115
    Роман Белоус ответил:

    2Vitaly Ch
    "уже написанный софт с этим справляется хорошо на типовых задачах. На нетиповых задачах лучше С – он получает получить более оптимальное решение задачи."
    Вероятно, только оптимальное решение нужно далеко не всегда. Тем более помимо оптимальности по быстродействию и/или потреблению памяти есть и другие параметры. Например, устойчивость, скорость реализации, удобство сопровождения, модифицируемость и т.п. По всем этим параметрам С несколько отстаёт от современных языков. Точнее, достижение того же уровня в нём обходится на порядок дороже. А быстродействие во многих случаях решается покупкой железяки. Особенно, если архитектура решения позволяет. Ну собственно, о чём и говорилось, языки очень разные. Меня просто как-то напрягает, когда начинают утверждать, что "первым языком должен быть Х". Херня всё это. А знать, С, конечно полезно. Опенсорсного софта на нём немерянно – бесценная кладезь знаний =)

    Книга Спольски переводная или в оригинале?

  8. 114
    Vitaly Ch ответил:

    > С++ – не совсм надстройка. Сишный код иногда там не работает.

    С++ стандарта 89 года можно было рассматривать как "надстройку" на С но более поздние стандарты разделили С и С++ на два отдельных и НЕЗАВИСИМЫХ языка.

    > Тогда и ObjC – надстройка.

    согласно всех стандартов на Obj-C он всегда надстройка над С

  9. 113
    Kitt Wasserfall ответил:

    Экспресс эдишн могут. А с пирейтбея и полную, да.

    С написан для Unix и представлял из себя изначально BCPL с нормальной типизацией (в BCPL только word был).

    С++ – не совсм надстройка. Сишный код иногда там не работает.

  10. 112
    Александр Новиков ответил:

    иногда – это не всчет :)

  11. 111
    Kitt Wasserfall ответил:

    Тогда и ObjC – надстройка.

  12. 110
    Сергей Середенин ответил:

    Александр Рябых
    Если ты студент то Visual Studio можно скачать бесплатно с msdn гугл в помощь.
    Аминь)

  13. 109
    Подмогаев Свят ответил:

    Сергей Викторович Середенин
    не студенты не могут ?

  14. 108
    Александр Новиков ответил:

    если автор будет изучать си шарп, то пусть его и изучает, что бы изучать с++ надо год убить на с, имхо! причем не просто изучая что такое циклы и прочее.. а задалбываться всякими там макросами, форками, пайпами, сигналами, в итоге вы будете знать не только си, но и то как писать небольшие вспомогательные приложения под unix, научитесь правильно работать с типами. в общем практика и теория совершенно разное.
    Тот же с++ с ооп позиций объясняют дебильно, имхо, класс фигура, класс трегольник, класс квадрат, что за нах..

  15. 107
    Владислав Кабак ответил:

    +1

  16. 106
    Александр Новиков ответил:

    unix был написан на с, что за нах холивары сравнивать несравниваемое..
    кто знаетс, тот знает, что написание на нем сводится к созданию собственных типов. с++ это по сути надстройка над си, но в отличии от астралопитечных обезьян там уже надо думать, потому как с++ это уже объектный язык.
    c# хз, сейчас яву изучаю.. параллельно и его тыркаю.. но тоже ход мышления уже другой

  17. 105
    Vitaly Ch ответил:

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

  18. 104
    Vitaly Ch ответил:

    > "и обратил внимание что практически все программисты с профильным образованием не владеют С"
    > Ну и что?

    следствие того что первым языком небыл С

    > "также исключительно все Сишные программисты которых я знаю лично – имеют непрофильное образование – преимущественно системотехники."
    > Отсюда следует какой-то вывод?

    Люди начинали программировать с С
    :)

    я немного утрирую

  19. 103
    Kitt Wasserfall ответил:

    У меня профильное, я учил С на первом курсе.
    То, что большинство профильных учит всякие VB, С ненужнее и хуже не делает.

  20. 102
    Vitaly Ch ответил:

    > Лично меня С не очень привлекает как раз тем, что он работает непосредственно "над железом".

    а меня он именно этим и привлекает

    >Мне не слишком интересно управлять железом. С этим неплохо справляется и компьютер благодаря уже написанному софту: операционной системе, компиляторам, интерпретаторам и т.п. Мне же интересно решать задачи

    уже написанный софт с этим справляется хорошо на типовых задачах. На нетиповых задачах лучше С – он получает получить более оптимальное решение задачи. Например подкрутив режим обращения к жесткому диску или изменив доступ к памяти можно обслуживать вместо 100 транзакций в секунду – 100000.

    к томуже С обладает максимальной масштабируемостью. в С++ и C# с этим совсем плохо. надеюсь здесь понимают о чем я виду речь …

  21. 101
    Kitt Wasserfall ответил:

    MSVS 2008 попробуй, там всё просто.

  22. 100
    Александр Рябых ответил:

    та же самая программа. в devC++

  23. 99
    Kitt Wasserfall ответил:

    Вот тебе рабочая программа, если не запустится, значит что-то не так делаешь. Ты в чём пишешь-то хоть?

    #include <stdio.h>

    int main()
    {
    printf("Hello, World!\n");
    return 0;
    }

  24. 98
    Александр Рябых ответил:

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

  25. 97
    Александр Рябых ответил:

    ну я решил буду параллельно изучать и С, и С# ,надеюсь за месяц-полтора пройти эти две книжки

  26. 96
    Kitt Wasserfall ответил:

    Таки про С тоже почитать стоит, для общего развития.

  27. 95
    Роман Белоус ответил:

    Записал ввод запроса и поиск? Это сервис такой – специально для демонстрации как просто что-нибудь находить в гугле =)

  28. 94
    Владислав Кабак ответил:

    Прикиньте, пишу это сообщение с ОС МСВС!!! Ругали-ругали наше Минобороны, мол плохая ось, а я вот попробовал – очень даже хорошо. Сразу всё распознало (карту, звук, …), с русским языком и раскладкой вообще проблем нет, сеть работает, …. Короче класс!!! Снесу Убунту, оставлю это чудо.

    ЗЫ: прикол – права доступа: Секретно, Сов.секретно, Особой важности.))) Чувствую себя штирлицом!))

  29. 93
    Роман Белоус ответил:

    Александр, срочно учимся пользоваться интернетом ;)
    //lmgtfy.com/?q=visual+studio+express+c%23&l=1

  30. 92
    Александр Рябых ответил:

    оу(да просто вводил и где нашел,везде платное)
    а как ты таксделал?))))

  31. 91
    Ildar Kamaletdinov ответил:

    тогда скачай с торрента профессионалку или Visual C# Express

  32. 90
    Александр Рябых ответил:

    ээээ….а можно ссылочку?)))

  33. 89
    Ildar Kamaletdinov ответил:

    можно выслать студенческий в MS и получить профессиональную студию по проекту дримспарк…

  34. 88
    Александр Рябых ответил:

    у меня нету еще студенческого

  35. 87
    Владислав Кабак ответил:

    а…

  36. 86
    Александр Рябых ответил:

    теперь нужна ссылка на Visual Studio 2008, а то пока везде только платно нашел)

  37. 85
    Владислав Кабак ответил:

    нафиХер тебе студия? качай Dev-C++ – он даже проекты студии может импортировать, +2 в одном (С/С++)

  38. 84
    Александр Рябых ответил:

    так мне ж к С#

  39. 83
    Подмогаев Свят ответил:

    начинай с Си

  40. 82
    Александр Рябых ответил:

    :D
    я именно для чайников и купил,блин

  41. 81
    Александр Рябых ответил:

    и по С тоже

  42. 80
    Ildar Kamaletdinov ответил:

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

  43. 79
    Александр Рябых ответил:

    в общем сегодня купил самоучитель по С#2008)

  44. 78
    Роман Белоус ответил:

    Правильно пишешь, "нормальным" – в кавычках =)

  45. 77
    Богушевич Максим ответил:

    Совет:
    Если ты знаком с Pascal, то изучи В НЕМ ЖЕосновные принципы работы с классами. Тебе необходимо разобраться в таких базовых понятиях объектно-ориентированного программирования как инкапсуляция, наследование, полиморфизм. Если тебе все из этого будет понятно, то легко сможешь освоить C#.
    Но если хочешь стать "нормальным" программистом, то повремени пока с C#, учи С++.

  46. 76
    Дмитрий Welt ответил:

    Имхо, учи C# – это прекрасный язык, который легко выучить и с которым можно делать практически все что угодно… как научишься применять всю его объектно-ориентированную составляющую на практике, посмотри на C++, а там и сам поймешь надо ли тебе учить его или нет.

  47. 75
    Дарья Сельвенис ответил:

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

  48. 74
    Роман Белоус ответил:

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

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

  49. 73
    Роман Белоус ответил:

    Ну пипец, дожили… Если хочешь зарабатывать реальные деньги лучше прогать на 1С. А ещё лучше получить МБА и забить на все эти си со значками и без. Программисты на коболе тоже небось ого-го зарабатывают – если удастся работу найти.

    Я конечно понимаю, всем хочется продемонстрировать свою крутость, правильность дао и всё такое. Но давайте без монотеизма, особенно направленного на неокрепшие умы =) Мы всё-таки разработчики, религия нам хоть и свойственна, но и критическое мышление по-идее тоже должно иметься.

    Кстати, если посмотреть на графики на ресурсе //www.ulov-umov.ru/ , то окажется, что среднее предложение по запросу 'программист с' = 43 700, а по запросу 'программист c#'=53 200.

    ЗЫЖ И вообще, программист знающий и использующий только один язык программирования подобен мастеру, завинчивающему отвёрткой шурупы, винты, болты, гвозди, использующему её в качестве дрели, шила, молотка, гвоздодёра и всего остального.

  50. 72
    Cyber Max ответил:

    >> ИМХО С надо знать только поверхностно, и сразу переходить на ++

    Если хочешь зарабатывать реальные деньги – учи С.
    Если хочешь чтобы хватало на развлечения – учи С++
    Если хочешь чтобы были карманные расходы – учи С#

    дальше выбирай сам!

  51. 71
    Подмогаев Свят ответил:

    int t=10;
    int mas[t];

    в классическом Си(89)..он тоже выдаст ошибку))

    хотя еще зависит от компиля…на gcc не выдает

  52. 70
    Димон Дренкалюк ответил:

    здец… Если человек ЗАХОЧЕТ, то выучит С, С++, С#, Java, Pascal, Delphi, ещё чё-нибудь в любом порядке. Если это ему правда интересно. А если надо что-то выучить срочно и лишь бы как-нибудь, то нах^W зачем вообще спрашивать – садись и учи что надо.
    По-моему если не смог 'перейти' от чего-то к чему-то, значит ему это не нужно или не хочется. Хотя не совсем понимаю слово 'перейти' в этом смысле – ты или выучил и понял новый язык, или нет. А 'переходить' – это типа 'C# похож на С++, значь я его считай знаю и учить не буду'.
    К чему этот ваш цирк…

  53. 69
    Ildar Kamaletdinov ответил:

    >>разве С так сложен ?

    не так сложно писать на нем=)) сложно потом разбирать написанный кем-то (а через месяц еще приходится разбираться и в собственном коде)

    например разбирать нечто вида:

    void* signal(int sig, void (*func)(int))

    иногда бывает новичкам сложно уяснить чем отличается int (**f)(char *с) (это двойной указатель на функцию, принимающую строку и возвращающую целое число) от int *(*f)(char *с) (а это указатель на функцию, возвращающую указатель на целое)

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

    int t=10;
    int mas[t];

    ИМХО С надо знать только поверхностно, и сразу переходить на ++

  54. 68
    Подмогаев Свят ответил:

    >> количественно статистику я заимствовал у Джоела Спольски. >>
    Возможно это правильная статистика, только вот я думаю, что еслибы те люди которые не смогли перейти на С, сразу начали с него, то они всё равно не смоглибы его освоить

    разве С так сложен ?

  55. 67
    Роман Белоус ответил:

    "в visual C++ же вместо этого пишется (для вектора например) typename vector<_Ty,_Ax> ::_Myt & std::vector<_Ty,_Ax>:: operator = (const typename vector<_Ty,_Ax>::_Myt & _Right) вот это реально заставляет думать)))"

    Ага, думать о том как создать сраный вектор – вместо того, чтобы думать о том как качественно решить задачу. В Питоне, например, создать экземпляр вектора – два символа: []. А перегрузить оператор = немного побольше:
    def __eq__(self, other):
    или
    def __cmp__(self, other):

  56. 66
    Роман Белоус ответил:

    "количественно статистику я заимствовал у Джоела Спольски"

    Самого-то Спольски найти не сложно. А вот статистику, на которую ты (я на "ты", если нет возражений) ссылаешься – не так просто.
    Несмотря на то, что его регулярно читаю (как и Этвуда), такой статистики не припомню. Правда я не слушаю подкасты обычно. Найти что-то более адекватное, кроме Perils Of Java Schools, мне не удалось. Так что ссылка по прежнему требуется, кроме того, можно привести ещёи пример запроса(можно lmgtfy), с помощью которого я мог бы её найти -чтобы улучшить мои скилы) И всё же не плохо бы знать метод, которым собрана статистика. Кстати, взгляды Джоэля, имхо, несколько радикальны, хоть я с ним во многоми согласен. Я видел у него, что С нужно знать. Видел, что С – это фильтр от "хреновых программистов" (а также функциональные языки). Но не видел утверждений, что С должен быть первым языком или, что изучив C# или Java – нельзя изучить С. Кстати, Этвуд утверждает, что он хреновый программист и не знает С =) Это не мешает ему быть другом Джоэля и быть всемирно известным программистом. Кроме того, сам Джоэль скромно говорит: "возможно, я переоцениваю значение C".

    "Плюс я в программировании давно"
    Я, вероятно, не столь давно.
    "и обратил внимание что практически все программисты с профильным образованием не владеют С"
    Ну и что?

    "многим моим коллегам требуются системные програмисты владеющие С."
    И нам тоже. В нашем нынешнем проекте есть некоторая часть на C. Мы бы сделали её сами. Но никто С из нас постоянно не использует и никто не хочет. Мы сделали оценку компонента как на Java и умножили на 2,5. Наши коллеги (работающие на С) сказали, что слишком долго – сделаем сами. Сейчас их сроки приближаются к нашей оценке и сколько выйдет в итоге – пока не известно. С другой стороны, нашим коллегам требуются программисты на Джава – они им не владеют. Могут, конечно, освоить, но не владеют. Потому что их вотчина – С. Поэтому мы занимаеся Джава частью. И я сильно сомневаюсь, что возьмись они за нашу работу – они сделали бы её лучше или хотя бы так же. Особенно, если бы писали на С =) Хотя в целом наша работа не слишком хороша, с моей точки зрения. (Кстати, у меня есть подозрение, что этот компонент именно на C нам и не нужен. Мог быть другой язык.)

    "Желающих на вакансии нет."
    Не удивительно. Язык непродуктивный, сложный в применении, инструменты тоже не блещут.

    "также исключительно все Сишные программисты которых я знаю лично – имеют непрофильное образование – преимущественно системотехники."
    Отсюда следует какой-то вывод?

  57. 65
    Роман Белоус ответил:

    Спольски в основном опирается на свой же принцип "Протекающих абстракций". Но этот принцип посвящён исключениям из будней разработчика, а не будням. Вот для этих исключений С знать действительно полезно.

  58. 64
    Александр Микинас ответил:

    >> вот это реально заставляет думать >>
    Когда я вижу такой кусок кода, мне хочется не думать, а выкинуть его и переписать как-нибудь более понятно, чтобы в следующий раз не думать опять. О боже, значит это правда – C# убивает моvjcr!

    >> количественно статистику я заимствовал у Джоела Спольски. >>
    Возможно это правильная статистика, только вот я думаю, что еслибы те люди которые не смогли перейти на С, сразу начали с него, то они всё равно не смоглибы его освоить, и подумали бы, что программирование для них слишком сложно – лучше бросить. Незнаю хорошо это или плохо.

  59. 63
    Александр Рябых ответил:

    2 Vitaly Ch
    в вышке обучают всему),только вот учится ппц как сложно,вот и боюсь. а что-то углубленное меня не интересует пока-научат,надеюсь. на выходных съезжу в библио-глобус и куплю что-нибудь по С#

  60. 62
    Ildar Kamaletdinov ответил:

    кстати кроме того что С# учит программировать мышкой, он еще отучает думать, зачем думать когда весь код уже написан, достаточно скопировать пример из документации, еще просто убивает автокомпит в Visual C#, когда пишешь там, что то вроде MessageBox.Show() и он тебе пишет, что делает эта функция (ака цитата из хелпа, хотя может кому и нравится)

    в visual C++ же вместо этого пишется (для вектора например)typename vector<_Ty,_Ax> ::_Myt & std::vector<_Ty,_Ax>:: operator = (const typename vector<_Ty,_Ax>::_Myt & _Right) вот это реально заставляет думать)))

  61. 61
    Vitaly Ch ответил:

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

    также исключительно все Сишные программисты которых я знаю лично – имеют непрофильное образование – преимущественно системотехники.

  62. 60
    Роман Белоус ответил:

    Интересно, как собиралась статистика? Насколько репрезентативна выборка? Предлагаю ссылку на подробную статью в студию или хотя бы описание метода и относительно конкретные примеры. 4%, конечно, очень убедительно звучат, но вот откуда они взялись? Многие коллеги долго и тщательно старались перейти на С и им не удалось? Или всех, кто даже и не думает переходить на С, мы автоматически записываем в группу тех, кто "не в состоянии"? А что такое "без проблем переходят"? Если я всю жизнь копал палкой-копалкой, а тут мне коллега показал как пользоваться лопатой, то я, вероятно,без проблем перейду к её использованию. А вот наоборот – вряд ли. При этом, даже имея лопату, можно пытаться копать её черенком. Что некоторые бывшие программисты С и делают. Я неоднократно встречал кода на джава и джава-скрипте, уместный в С, но отнюдь не в этих языках. Просто человек не сумел "без проблем перейти". Он избавился в своих программах от Segmentation Fault ошибок, но это не его заслуга, а языка. Остальные преимущества языка такой человек благополучно сводит на нет.

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

    ЗЫЖ
    У меня никакой статистики нет. У меня есть одна знакомая, которая перешла с Java на С. И есть один знакомый, который работает на Java, но по работе относительно тесно сталкивается сC, а также подхалтуривает на этом языке. У обоих из них первым _рабочим_ языком была Джава. Ничего, справляются вроде.
    ЗЗЫЖ Да, в общем статистику и метод – в студию.

  63. 59
    Роман Белоус ответил:

    Мышка – это зло)

  64. 58
    Ildar Kamaletdinov ответил:

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

    даже у страуструпа написано: "Чем лучше вы знаете С, тем труднее вам будет избежать программирования на С++ в стиле С, теряя при этом потенциальные преимущества С++"

    после этого можно браться за #. ИМХО только так из тебя выйдет многосторонне развитый программист

    вобщем схема такая Паскаль->Дельфи(ОПП)->С(поверхностно)->С++ (хорошо, читая страуструпа) -> С# (рекомендую книгу Трея Нэша, С# и.NET 3.5 для профессионалов. Ускоренный курс. это специальная книга для тех кто переходит с С++ или Java)

    p.s. а вообщем ИМХО С# учит программировать мышкой))

  65. 57
    Vitaly Ch ответил:

    > б) Собственно, с чего бы? Понадобится – научится. В основном, люди с языков более низкого уровня переходят на более высокий, но и обратное возможно, либо сочетание уровней. К тому же, развивая эту логику, вероятно можно утверждать и обратное? Выучив C, он никогда не сможет эффективно использовать другой язык для физических рассчётов.

    по имеющейся у меня статистике с С на высокоуровневые языки без проблем переходят более 90% процентов начавших изучать с С. В это же время из высокоуровневых на С в состояниии перейти только 4% оставивших С "на потом"

  66. 56
    Роман Белоус ответил:


    1972 – Dennis Ritchie invents a powerful gun that shoots both forward and backward simultaneously. Not satisfied with the number of deaths and permanent maimings from that invention he invents C and Unix.

    1996 – James Gosling invents Java. Java is a relatively verbose, garbage collected, class based, statically typed, single dispatch, object oriented language with single implementation inheritance and multiple interface inheritance. Sun loudly heralds Java's novelty.

    2001 – Anders Hejlsberg invents C#. C# is a relatively verbose, garbage collected, class based, statically typed, single dispatch, object oriented language with single implementation inheritance and multiple interface inheritance. Microsoft loudly heralds C#'s novelty.

  67. 55
    Роман Белоус ответил:

    "А если Александр начнет изучать программирование с C# то вероятней всего он никогда не сможет написать драйвер для какого либо оборудования."

    а) А оно ему надо? Надо бы у него спросить.
    б) Собственно, с чего бы? Понадобится – научится. В основном, люди с языков более низкого уровня переходят на более высокий, но и обратное возможно, либо сочетание уровней. К тому же, развивая эту логику, вероятно можно утверждать и обратное? Выучив C, он никогда не сможет эффективно использовать другой язык для физических рассчётов.

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

  68. 54
    Роман Белоус ответил:

    1. Язык С, кроссплатформенный и производительный, Который вывел тебя из плена мнемокода ассемблерного, из дома рабства; да не будет у тебя других языков кроме Языка С.
    2. Не делай себе исходников и никакого кода на языках тех, что в прикладных приложениях вверху, и что в операционной системе и драйверах внизу, и что в биосе и прошивках ниже операционной системы; не используй их, не компилируй и не интрепретируй, ибо Язык С, кроссплатформенный и производительный, со слабой типизацией и небезопасный, наказывающий пользователей за вину программистов до третьего и четвёртого рода ненавидящих Его, и творящий любые программы быстрыми, надёжными и привлекательными для всех пользователей программистам, любящим Его и соблюдающим заповеди Эти.
    3. Не произноси именён Томпсона и Ритчи, Создателей Языка С, напрасно, ибо Язык С не оставит без наказания того, кто произносит имя Создателей Его напрасно.
    4. Помни день субботний, чтобы пить пиво в него; шесть дней кодируй и компилируй и дебажь, а день седьмой — суббота Языку С, кроссплатформенному и производительному: не пиши день в оный никакого кода ни ты, ни коллеги твои, ни подчинённые, ни консультанты приходящие, который помогают фирме твоей; ибо в шесть дней Томпсон и Ритчи создали Язык С, с комиплятором и библиотекой, а в день седьмой напились пива; посему не кодируй в день субботний и пей пиво.
    5. Почитай Томпсона и Ритчи, чтобы тебе было хорошо и чтобы ускорился твой цикл разработки, которую на Языке С, кроссплатформенном и производительном, ведёшь ты.
    6. Удали IDE.
    7. Удали JVM.
    8. Удали NET Framework.
    9. Никому не говори сколько строк кода в твоей программе.
    10. Не желай компиляторов и интерпретаторов коллег своих; ни IDE их, ни дебаггеров, ни GUI, билдеров, ни виртуальной машины их, ни стандартной библиотеки их, ни коммьюнити их, ни конференций их, ни журналов с книгами, ничего, что у коллег твоих.

  69. 53
    Vitaly Ch ответил:

    > Некоторые люди вообще советуют начинать изучение с функциональных языков – и не без оснований.

    Это имеет смысл если программирование предполагается как инструмент а не как специальность. например для физиков. А если Александр начнет изучать программирование с C# то вероятней всего он никогда не сможет написать драйвер для какого либо оборудования.

  70. 52
    Vitaly Ch ответил:

    > можно начать с С#,который как раз относится к программной инженерии, ну и Java еще.

    и ты никогда не станеш специалистом …

  71. 51
    Александр Рябых ответил:

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

  72. 50
    Роман Белоус ответил:

    Что вы парите человека) Инструкцию ещё напишите:

    "Как стать специалистом

    Шаг 1: Выучить C (если вы выучите сначала по ошибке другой язык, то дальше не читайте, специалистом стать у вас уже не получится)"

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

  73. 49
    Иван Петров ответил:

    Цели – вот основные различия

  74. 48
    Роман Белоус ответил:

    Я бы с C# наверное начал.. Но C знать необходимо, как минимум на уровне чтения, С++ желательно тоже. Но это можно попозже освоить.

    А вообще, эти языки обладают своими плюсами и минусами и областями применения, как правильно отметили.

    ЗЫЖ Cyber Max, ты пишешь бред, не в обиду) Мешаешь спутники с корпоративным и прикладным софтом..

  75. 47
    Александр Рябых ответил:

    я ж писал,программная инженерия

  76. 46
    Сергей Белов ответил:

    хм… простой вопрос вырос в большой холиварчик :)
    парень, если тебе нужно выучить С#, не вдаваясь в подробности и исскуство программирования(структуирование, алгоритмизация и тд)(якобы из-зи боязни вылета из института), то возьми книгу А.В.Фролова Г.В. Фролова "Язык С#.Самоучитель". При нормальном изучении, прочтешь за месяц и будешь разбираться на уровне "не вылететь".

    PS но я бы имхо посоветовал начать с С++, параллельно с С, так как без понимания на абстрактном уровне далеко не уедешь.

    PSS скажи, в каком это учебном заведении требуют знание языка высокого уровня? 0_0

  77. 45
    Александр Рябых ответил:

    я в ГУ ВШЭ поступаю)

  78. 44
    Сергей Белов ответил:

    специальность?

  79. 43
    Подмогаев Свят ответил:

    а остальные языки не относятся ? оО

  80. 42
    Александр Рябых ответил:

    :D DD
    такие обсуждения пошли)
    в общем главное я узнал для себя-можно начать с С#,который как раз относится к программной инженерии, ну и Java еще.

  81. 41
    Тимур Багаутдинов ответил:

    > Уметь писать на С# – ну что вы можете ???… вызывать обверточные функции .NET под Windows ? и все.. на этом круг ваших знаний и умений замкнулся, еще не факт что до конца понимаете как все это работает!!!

    Вот это бред! Да тот же самый Hello World на Win32 API использует кучу функций.. А отсюда можно понять, что автор данных слов вряд ли с шарпом сталкивался вплотную…

  82. 40
    Александр Микинас ответил:

    Я смотрю топик перерос в тему в каком порядке следует их изучать. Расскажу на своём примере. Я начал учиться программировать с басика на ZX spectrum (было такое, кто не застал погуглите, есть сайты с историей). В принципе его можно сравнить в какой то мере с байт-кодом, хотя там не о каком ООП даже речи не было. Это не помешало мне через 2 года перейти на ассемблер. Когда пришло время переходить на PC? попалась в руки книженция "C++ для чайников", прочитал вводную часть, где рассказывалось про С, понял что без его дальнейшего освоения с плюсами до конца не разобраться, пришлось освоить еще пару книг. Потом дошел до ООП, понял что ООП то я знаю, а как правильно его использовать не знаю. Пришлось читать книжки по проектированию и паттернам. В этом момент началась мода на Java, попробывал, понравилось. Большую часть моих задач она могла решить проще чем С++. К C# долго не прикасался намеренно, был уверен что это очередная приманка от M$. Когда стали работать с продуктами MS выбора не осталось, пришлось изучить, обнаружились некоторые преимущества и недостатки по сравнению с java. Вообщем по большому счету нет разницы с чего ты начнешь, но понимание всего стека технологий от самых низов до самого высокого уровня абстракции всегда давало и будет давать преимущество перед теми, кто во главу угла ставит только какуюто одну технологию, неважно хорошую или не очень.

  83. 39
    Колян Момчев ответил:

    #39 сто пудов!!!!
    не ебите пацану мозги ))))
    С++: //rapidshare.com/files/48825147/liberty-C_21day...
    сам попробуй…

  84. 38
    Юрий Гинцяк ответил:

    Я начинал программерскую деятельность с С++ …. с него легко повернуть в любую сторону… либо в сторону С либо в сторону Java, C#….

  85. 37
    Олег Савинов ответил:

    Я считаю, что в случае топикстартера надо бы учить сразу C#. Потому что если учить С, то придется вкуривать указатели, работу с памятью и пр. труЪ-вещи. А в C# никаких указателей нет, поэтому, изучением C автор сильно загрузит себе мозг. ИМХО, с плюсов тоже не считаю нужным начинать, ибо там вообще в принципе, несколько парадигм в одном флаконе – будет только лишняя путаница. А если выбираешь Ъ-путь, то было бы круто изучить для начала C:)

  86. 36
    Михаил Шаханов ответил:

    2Cyber Max
    Вы меня не слушаете. Зачем тратить время на разработку, скажем, гуи на плюсах или си, если можно сделать это на другом языке быстрее (с таким же качеством)?
    Больше не буду спорить, тема топика совсем не та.
    И зачем столько восклицательных знаков и капса? Я же на вас не кричу.

  87. 35
    Cyber Max ответил:

    Уважаемый… скорость разработки может и показатель, но для вас!!! просто по опыту работы с иностранными софтверными компаниями мне известно на собственном опыте, что последнии тратят на КРОПОТЛИВУЮ разработку в 5-10 раз больше времени!!! и их больше интерисует качество, а не скорость написания как для наших офшорных компаний, начальники отеделов которых рвух на себе волосы и кричат "ASAP!!!!" чтобы как можно больше денег скосить у клиентаза очень быстрое решение, которое не всегда оказывается стабильным и надежным!!! Так ради интереса почитайте статью как пишутся программы для ступников NASA, может быть после этого поменяете свое мнение по поводу СКОРОСТИ разработки!!!

  88. 34
    Михаил Шаханов ответил:

    > Уметь писать на С# – ну что вы можете ???… вызывать обверточные функции .NET под Windows ? и все.. на этом круг ваших знаний и умений замкнулся, еще не факт что до конца понимаете как все это работает!!!

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

  89. 33
    Cyber Max ответил:

    Вообще это все что сравнивать километры с килограммами: язык С и С++ по одну сторону и обвертку С# по другую.

    Умея программировать на С и С++ без проблемм можно писать программы под различные платформы, микроконтроллеры, и.т.д. Взглянув на код С, под неизвествую ранее вам платформу, сразу понимаете что происходит в этом месте программы!

    Уметь писать на С# – ну что вы можете ???… вызывать обверточные функции .NET под Windows ? и все.. на этом круг ваших знаний и умений замкнулся, еще не факт что до конца понимаете как все это работает!!!

  90. 32
    Михаил Шаханов ответил:

    > Изучишь Си++ сначала – С СиШарпом проблем не будет.
    Ой, не факт. Подход-подходам, но в нюансах можно на такие грабли напороться, что мама не горюй.

  91. 31
    Ilya Burakov ответил:

    Согласен. Подход C# отличается от C++ меньше, чем подход C++ от C.

  92. 30
    Александр Сонин ответил:

    #30 – истину глаголишь. Зная C переходить на C++ довольно проблемно – первое время ты пишешь не на C++, а на C с ипользованием классов, и тяжело переучиваться. На счет шарпа я не был бы так категоричен…

  93. 29
    Ilya Burakov ответил:

    Чтобы хорошо выучить C++ или C#, желательно C вообще не знать… – подходы различаются.

  94. 28
    Александр Сурнин ответил:

    #28, библиотеки – это библиотеки. Вычитал в нэте что тебе надо и заюзал. К языку это прямого отношения не имеет.

  95. 27
    Артём Малаховский ответил:

    #27, спецификации спецификациями, но кол-во библиотек это ппц…%)

  96. 26
    Александр Сурнин ответил:

    #25 – согласен)))
    Только различаются они далеко не катастрофически…
    Зачем усугублять?
    Катастрофически Brainfuck от Visual BASIC отличается. На фоне таких отличий – Си, Си++ и СиШарп – братья близнецы)))

    Вообще язык выбирается под задачу как это уже сказали.
    Си – это можно сказать подмножество Си++, который первые 3 года после выпуска называли "Си с классами", кстати. Идеология у них разная, Си – процедурное программирование, а Си++ – ООП. Но в принципе на Си можно эмулировать классы. На Си++ также есть всякие "эмуляции" – надстройки. Типа Qt, WxWidgets или Boost… Но это я че-то не туда полез)))
    В общем, если найдешь хорошую книгу по Си++, то считай, что убьёшь двухзайцев одним хэдшотом))) Там обычно пишут, что специфично для Си++, а что есть в обоих языках. В общем эти языки очень похожи. Точнее у них (почти) одинаковая база.
    Си# – это мерзопакостное поделие… Удобное, конечно… Но не тру))) В общем – это совершенно другой язык (больше похожий на Java по идеологии). Компиляется в байт-код (НЕ машинный код) и выполняется на виртуальной машине (как Java). Короче, в мелкософте правило "не плоди сущностей" не выполняется…
    Изучишь Си++ сначала – С СиШарпом проблем не будет.
    Изучишь Си сначала – всеравно для Си++ и СиШарпа придется ООП изучать.
    Изучишь сначалаСиШарп – ни в Си, ни в Си++ вкуривать не будешь особо.
    Так что, ИМХО, Си++ постигай)))

    З.Ы.: #2 про Си++ – бред написан. У языка есть спецификация, это не мифический вечно-изменяющийся монстр. Максимум пару лет практики и язык будет освоен на отлично. Ближайшая редакция спецификации в конце этого – следующем году. Кстати, введут оператор atomic (!!!) Ура товарищи! )))

  97. 25
    Александр Микинас ответил:

    Ух пока писал, обогнали с мыслью…

  98. 24
    Александр Микинас ответил:

    >> сильно ли различаются С,С#,С++?>>

    Катострафически! А если серьёзно,язык выбирается под задачу.
    Низкоуровневое программирование, создание ОС, микроконтроллеры и т.д. – только С, редко можно С++, если он есть под эту железку и тебе на другую не надо будет переносить. С – я называю высокоуровневым ассемблером. Он не накладывает на тебя почти никаких ограничений и работает напрямую с железом, но втоже время имеет бешенную портируемость в отличие от ассемблера.
    Нишу С++ так одназно уже не определишь. Вопервых в отличие от С это язык с поддержкой ООП, парадигма и стиль программирования полностью другой. С одной стороны это очень сильный и гибкий язык с высоким уровнем абстракции, что дает возможность создавать на нём практические любые программы, с другой он всё еще может позволять тебе удобно работать на низком уровне, но это одновременно и его слабость, огромное количество возможностей, разные способы решить одну и туже задачу в сочетании с неумелым использованием приводят к кошмарному коду.
    C# – язык компилируемый в коды виртуальной машины, что вводит дополнительный уровень изоляции от железа, и опять это и хорошо и плохо, зависит от задачи. На нем очень хорошо писать бизнесс-приложения, различные пользовательские программки, типа почтовых клиентов и т.д. Осваивают его и любители ИИ потихоньку. Виртуальная машина дает больше возможностей по сравнению с реальным железом(например динамическая компилляция реализуется проще, рефлексия,мультипарадигмальность). Под DotNet есть разные языки, которые очень легко увязываються с C#.
    Так что никого не слушай – выбирать тебе и выбирать под задачу. А выучить их лучше все. Кто то может хоть на ассемблере рисовать окошки для пользователя, но это по крайней мере неэффективное использование времени личного и/или рабочего. Я бы такого человека на работу не взял.

  99. 23
    Александр Рябых ответил:

    ну как раз программная инженерия(факультет) и С#)

  100. 22
    Алексей Злобин ответил:

    Это три совершенно разных языка, созданные для решения разных задач. Схожи только некоторые элементы синтаксиса (выражения, блоки, функции), хотя их семантика может значительно отличаться.
    Если кратко C – язык системного программирования, ОС, драйверов и т.п.
    С++ – язык для промышленной разработки высокопроизводительных приложений. Нереально сложен.
    С# – язык, специально созданный для программирования под .NET виртуальную машину. Хорошо распространён в настоящее время в промышленной разработке корпоративного софта, что-то для настольных ситем и КПК/Смартфонов на нём пишется.
    Собственно пойми чем хочется заниматься :)
    Заявления типа "не выучив C нельзя учить C#" – глубокий бред.

  101. 21
    Александр Рябых ответил:

    спасибо)

  102. 20
    Артём Малаховский ответил:

    красивый код на С тоже похоже на искусство.

  103. 19
    Артем Лагунов ответил:

    а я лох )
    я тока на вижуал бэйсике могу… )

  104. 18
    Yan Mihailov ответил:

    Если найдёшь хорошую книгу по С#, не трать зря время, учи сразу его. Потом вернёшься к изучению Си.
    Главное делай всё сам, не ищи примеры в интернете, перепечатывай каждый пример из учебника.

  105. 17
    Артём Малаховский ответил:

    на С можно свернуть горы или шею(как повезет).
    на С++ написать прогу.
    на асме точно свехнуться.

  106. 16
    Димон Дренкалюк ответил:

    #13, понятно, что другой – это разные языки. =)

  107. 15
    Владислав Кабак ответил:

    ))) ну не знаю, мне асм больше всего нравицца. это искусство – идеальная компътерная красота, как бриллиант.

    а все остальные – серыя камни))

  108. 14
    Артём Малаховский ответил:

    #12, честно не так.
    я выучил С. теперь взялся за С++ и чувствуется что подход совсем другой.

  109. 13
    Владислав Кабак ответил:

    да это вы гоните. C# сосет)) у С++ токо так. Ну насчет С я соглашусь, но с оговорками, что сейчас он маловостребован (повакансиям)

    Но С++ точно на три головы круче шарпа

  110. 12
    Владислав Кабак ответил:

    и вообще, учите все ассемблер. остальное – фтопку)

  111. 11
    Cyber Max ответил:

    э… выучить язык не вопрос… другое дело уметь на нем что то написать в конкретной ОС… базовые навыки и сведения освоишь быстро.. а вот как средствами языка добиться от ОС решения задачи – это другое.. на это уйдут годы…

  112. 10
    Владислав Кабак ответил:

    С# – самый легкий. учи. чтоб не париться. как я понял, ни С ни С++ тебе не понадобицца))

  113. 9
    Александр Рябых ответил:

    просто моя задача освоить эти языки хоть на каком-нибудь уровне до поступления,чтобы чувствовать себя уверенно. т.к. вычитал,что у многих проблемы,потом отчисления из-за всего этого,кто в школе вроде хорошо знал информатику,паскаль и т.д. вот в чем дело…

  114. 8
    Димон Дренкалюк ответил:

    вы гоните,- чтоб выучить С++, надо шарить С, а чтоб выучить С#, надо шарить С++, от и все дела…

  115. 7
    Александр Рябых ответил:

    а вообще за сколько реально более менее осилить С и С#? конечно,вопрос глуповатый,т.к.многое зависит от способностей и т.д.,но все же.

  116. 6
    Александр Рябых ответил:

    не, я не крут,точнее вообще нулевой в программировании, но вроде интересно самому+ надо. а после С потом как? сложно на С# перестраиваться или очень многое похоже?

  117. 5
    Артём Малаховский ответил:

    ну написали интересно, только почти бесполезно..)

    С – процедурный язык. "низкий", "средний" уровень
    С++ – объектно-ориентированный язык.
    С# – под технологию .NET.

    если начнешь с С, придется почти с нуля учить остальное, так как и "идеология" языков другая и подходы к программированию.

  118. 4
    Артём Малаховский ответил:

    #3, ИМХО, сложно.

  119. 3
    Cyber Max ответил:

    C – фундамент… на нем пишутся ядро современных ОС, драйвера и низкоуровневые утилиты, можно использовать для написания любого приложения в системе любой сложности!

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

    С# – язык для ленивых и гламурных програмистов. Базы данных, окошки, всякие побрикушки.. в общем что то серьезное написать можно, но крайне не удобно. Считается персективным – хотя…

  120. 2
    Артём Малаховский ответил:

    и все же, я бы сказал, что это 3 разных языка.

  121. 1
    Владислав Кабак ответил:

    С это классика, как Pascal (Turbo ;-) )

    C++ это монстр, выучить который ПОЛНОСТЬЮ, т.е. знать все его нюансы, просто нереально. Это как восточная философия – чем больше ты понимаешь в С++, тем больше понимаешь, что ты нихрена не понимаешь))

    C# – перспективный… но… это как пльзоваццо Delphi, не учив в коле Turbo Pascal… Все-равно, сначала надо выучить С. (или, если достаточно крут, можно начать с С++)

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.