Подтвердить что ты не робот

Начать обучение С#, не зная C?

Желательно ли прямо перейти на С#, зная просто бит C (только некоторые основы) или даже может быть не зная C?

4b9b3361

Ответ 1

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

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

Если вы уже знаете некоторые языки, просто не C или С#, переходите на С# сейчас и позже выберите C.

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

Ответ 2

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

Обучение C научит вас больше о том, как работает компьютер и дает вам понимание на низком уровне. С# - язык высокого уровня с более низкой кривой обучения для получения графического интерфейса.

Джоэл и Джефф часто обсуждают значение обучения C, подкаст stackoverflow # 2 - один из примеров

Ответ 3

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

Ответ 4

Конечно. С# заимствует семантические соглашения от C, но, конечно же, нет необходимости его изучать.

Фактически, вы пропустите фазу, в которой вы пытаетесь использовать С#, как если бы это был C.

Ответ 5

Конечно. С# использует синтаксис типа C, но я думаю, что вам будет легче узнать, чем C.

Ответ 6

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

Я думаю, что просто прыгать на С# или любой другой объектно-ориентированный язык в качестве вашего первого языка. На самом деле многие люди утверждают, что язык OO должен быть вашим первым языком, если вы хотите стать хорошим в ОО, потому что вы не будете зацикливаться на процедурных размышлениях.

Таким образом, хорошие программисты, у которых нет по крайней мере достойной рабочей ментальной модели для того, что происходит под обложками, мало и далеко друг от друга. Это означает, что в конечном итоге вы должны узнать, как компьютер управляет памятью, указателями, как процессор выполняет инструкции и т.д. В конечном итоге чтение книги C и сборника было бы хорошей идеей ИМХО. Я не думаю, что вам тоже нужно учиться; вам просто нужно понять, как работают компьютер и языки программирования.

Ответ 7

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

Ответ 8

Мой вопрос будет в том, что вы пытаетесь выбрать первый язык для изучения программирования? (С# является опцией), или вы знаете другой язык и думаете, что вам, возможно, потребуется изучить C до С#?

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

Ответ 9

Да. Когда я начал с С#, у меня не было опыта работы с C.

Ответ 10

Одна вещь, о которой многие новые программисты не упоминают, это то, что они хотят сделать? Вы хотите сделать что-то простое, как привет мир? Или вы хотите сделать что-то более сложное, как приложение GUI или видеоигра?

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

Я бы посоветовал начать с С# и сохранить C позже. Вы можете быстро начать работу с большого количества бесплатных инструментов, таких как Visual Studio Express С#. Если позже вы захотите начать работать над такими вещами, как ядро ​​Linux, компиляторы или аппаратные драйверы, вы можете быстро подобрать C. C по-прежнему стоит того, чтобы узнать.

Ответ 11

Да, это прекрасно.

Ответ 12

Это, безусловно, возможно.

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

Ответ 13

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

Ответ 14

Конечно! С# - язык гораздо более высокого уровня, чем C, и он обрабатывает много деталей для вас.

Одна рекомендация, однако, С# - очень хороший язык, но он имеет немного более крутую кривую обучения, чем VB.NET. VB.NET НЕ Visual Basic, он просто переносит некоторый синтаксис.

Синтаксис и ключевые слова VB.NET легче изучить, а затем легко перевести на С#. Помимо особых случаев очень мало того, что один язык может сделать, что другой не может, и поскольку VB.NET легче учиться, я являюсь огромным сторонником использования его в качестве языка "Добро пожаловать в .NET".


Просто чтобы уточнить: вы не должны нести стигму "классического" VB на VB.NET, VB6 и VB.NET - это совершенно разные языки и фреймворки с только поверхностными сходствами.

VB.NET предлагает несколько тонкостей для новых разработчиков:

  • допустим синтаксис nit-picky. С# может заставить зеленого разработчика вытащить волосы, потому что они забывают() на пустоте или добавляют их в свойство.
  • Visual Studio предлагает быструю обратную связь по не компилируемому коду.
  • VB.NET использует слова в тех местах, где С# использует символы. В приведенных ниже примерах нет, что С# ожидает, что вы знаете, что ":" означает "Наследование" или "Реализует" в зависимости от следующего аргумента, VB.NET говорит "Наследует MyBaseClass" и "Осуществляет INamedObject", что намного интуитивно понятен

Чтобы быть справедливым, существует одна основная проблема с шаблонами кода VB.NET по умолчанию - у них нет операторов "Option Strict On" и "Option Explicit On" на Вверх. Если вы попадете в VB.NET, обязательно добавьте их в каждый класс, они позволят компилятору сделать более проактивную проверку ошибок и привести к более качественному коду и пониманию системы .NET Type.

Предложить пример эквивалентного кода .NET, написанного на С# и VB.NET:

С#

interface INamedObject
{
    string Name { get; set; }
}

abstract class MyBaseClass
{
    void PrintType()
    {
        Console.WriteLine(this.GetType().Name);
    }
}

class MyConcreteClass : MyBaseClass, INamedObject
{
    public MyConcreteClass()
        : base()
    {
    }

    public string Name
    {
        get;
        set;
    }
}

VB.NET

Option Strict On
Option Explicit On

Interface INamedObject
    Property Name() As String
End Interface

MustInherit Class MyBaseClass

    Sub PrintType()
        Console.WriteLine(Me.GetType.Name)
    End Sub

End Class

Class MyConcreteClass
    Inherits MyBaseClass
    Implements INamedObject

    Public Sub New()
        MyBase.New()
    End Sub

    Private _Name As String
    Public Property Name() As String Implements INamedObject.Name
        Get
            Return _Name
        End Get
        Set(ByVal value As String)
            _Name = value
        End Set
    End Property
End Class

Ответ 15

Если вы не образованный программист ООП, скорее всего, лучше избегать C (или даже С++), если вы не являетесь большим поклонником самоотрицания. Все другие изложенные причины действительны, но имейте в виду, что С# также управляется (смотрите вверх), поэтому гораздо труднее попасть в "проблему" с помощью.

Ответ 16

Это не должно быть проблемой. Пока вы понимаете объектно-ориентированное программирование, вам хорошо идти.

Ответ 17

Мой ответ на все вопросы формы "Должен ли я изучать язык X или Y? Должен ли я изучать Z до Y и X после Y?" и т.д. - не беспокойтесь о таких вопросах. Забудь их. Если вы думаете, что изучение С# будет более полезным сейчас (возможно, есть больше заданий или, возможно, вы хотите присоединиться к проекту, или, может быть, вам просто интересно), затем сядьте и начните учиться.

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

Чтобы сделать это до крайности, я думаю, что примерно 30 лет назад я узнал о сборке Z80 еще до того, как узнал, что BASIC очень помог мне на этом пути. Тем не менее, я бы никогда не рекомендовал, чтобы вы не изучали другие языки, пока не освоили сборку. (Кстати, все, что я помню, это то, что код операции 0xc9 равен RET).

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

Ответ 18

Обучение C или С++ было бы более сложным, но вы, вероятно, стали бы намного более привыкшими к основам, что никогда не бывает плохо.

Сказав это, я не уверен в "целесообразности", но это не будет "неправильно"... более важно.

Ответ 19

Я обнаружил, что изучение Java для большинства ООП наиболее полезно для изучения С#, поскольку они почти идентичны в библиотеках и синтаксисе.

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

Ответ 20

сходства между С++ и С# заканчиваются в lexer.

Ответ 21

Можно также прочитать "" Язык программирования C" от K & R, потому что он быстро читается, и он даст вам фон что может помочь в понимании производительности, происходящей за кулисами на языке сбора мусора.

Ответ 22

Конечно, С# проще понять. Конечно, знание C поможет, но если вы не знаете C, то лучше начать с языка более высокого уровня как С#.