2009-08-19 12 views
22

È consigliabile passare direttamente a C# conoscendo solo un semplice bit di C (solo alcuni elementi di base) o addirittura potrebbe essere senza conoscere C?Inizia a imparare C# senza conoscere C?

+34

Probabilmente è meglio che tu non sappia c. Gli idiomi sono molto diversi. Alcune persone scrivono C# mentre portano avanti un sacco di idiomi, e il loro codice è doloroso da leggere. –

+0

sei completamente nuovo in .NET? Sono solo curioso di vedere lo – STW

+0

completamente nuovo a .net .. sono uno studente (in elettronica e amo fare cose con sistemi embedded (microcontrollori)) ... Le persone della mia famiglia sono semplicemente troppo inclinate verso .net, java e roba e che rende il mio ming boggle e aggiunge curiosità con le cose che risolvono usando i linguaggi .. e la mia mente dice "anche tu provalo - perché niente di impossibile" – Dharavk

risposta

7

Se il tuo obiettivo è quello di imparare la tua lingua madre, e non diventerai un programmatore serio, con tutti i mezzi impara la lingua che stai per uso.

Se stai per diventare un programmatore serio, dovresti davvero diventare bravo in C qualche volta. Non so quale sia la via più difficile, iniziando con C# o iniziando con C. C sarà una sfida non importa quando ci si avvicina.

Se conosci già alcune lingue, solo C o C#, vai per C# adesso e riprendi C più tardi.

La chiave è che C è un linguaggio più semplice, ma il completamento di operazioni significative richiede strutture più complicate. Alcune cose che puoi facilmente fare in C# saranno difficili in C, sebbene C sia il linguaggio più diffuso e versatile.

+0

> Se diventerai un programmatore serio, dovresti davvero diventare bravo in C qualche volta.
Non sono d'accordo. Se il tuo obiettivo è essere uno sviluppatore C# serio e non sai già C, concentrati su C#. Invece di passare il tempo a diventare abili in C, amplia le tue abilità nello spazio .Net. Inizia con una solida comprensione della OO nella pratica. Impara modelli di design, architettura. Nel tempo libero, sviluppa una comprensione di come le cose funzionano a un livello basso - cosa sta realmente accadendo all'interno del codice e sulla macchina.Questi passaggi porteranno meglio all'obiettivo di diventare uno sviluppatore esperto. –

+0

Perché credi che i "programmatori seri" dovrebbero imparare C? A rischio di sembrare miope, attualmente mi sto sviluppando esclusivamente in .NET (potrebbe non essere sempre così), ma il mio focus personale sullo sviluppo del framework .NET in generale, un uso migliore dei pattern e delle best practice e mi piacerebbe impara un linguaggio funzionale (F # è un candidato). In questo momento, davvero non vedo perché dovrei imparare una lingua che non mi vedo usare. C'è qualcosa che mi manca? –

+0

@Mark: C è parte dello sviluppo di una comprensione di come le cose funzionano a un livello basso, il che sembra essere d'accordo con me è una buona cosa. @Nathan: l'apprendimento di lingue diverse amplierà il tuo raggio di pensiero e ti renderà uno sviluppatore migliore. –

22

Sì, il linguaggio di programmazione C non è un prerequisito per l'apprendimento di C#. Conoscere qualche C ti aiuterà sicuramente ad accelerare la sintassi di C#, ma oltre a questo ci sono poche similitudini.

1

Sì, è perfettamente soddisfacente.

7

Certamente. C# usa una sintassi simile a C, ma penso che troverai più facile da imparare rispetto a C.

3

Mentre C è un buon linguaggio per imparare in generale, non credo che otterrai alcuna conoscenza specifica che ti aiuterà a imparare C#.

37

C# e C sono molto diversi, condividono la sintassi ma lo stile di programmazione è molto diverso. Non farebbe male imparare C, ma se il tuo obiettivo è C#, inizia con quello.

L'apprendimento C ti insegnerà di più su come funziona un computer e ti fornisce una comprensione di basso livello. C# è un linguaggio di alto livello con una curva di apprendimento inferiore per ottenere un'interfaccia grafica.

Joel e Jeff spesso discutono il valore dell'apprendimento C, stackoverflow podcast #2 è un esempio

+0

L'audio su quel podcast è davvero incasinato. – Antoine

1

E 'certamente possibile.

Conoscere altre lingue è sempre utile, se non altro perché sei stato esposto al modo di pensare della programmazione, ma non essenziale.

14

Sicuro. C# prende in prestito le convenzioni semantiche da C ma non c'è certamente alcun obbligo di impararlo.

In effetti, si salta la fase in cui si sta cercando di utilizzare C#, come se si trattasse di C.

1

Come me, se siete in una fretta di imparare la nuova lingua, saltare a destra. Ma se hai molto tempo (studente), penso che tutti quelli che vogliono essere chiamati coder dovrebbero sapere C.

+1

C? C è per quei deboli di alto livello. Chiunque voglia essere chiamato * programmatore * dovrebbe conoscere l'assemblea! :-P jk – STW

+1

No, se * veramente * vuoi essere chiamato programmatore, devi essere in grado di programmare in binario :). – mk12

+0

Assemblaggio, binario. Stessa cosa. Solo parole chiave diverse: P – Brian

0

L'apprendimento C o C++ sarebbe più difficile, ma probabilmente diventerai molto più abituato al basi, che non è mai una cosa negativa.

Detto questo, non sono sicuro di "consigliabile", ma non sarebbe "sbagliato" ... più una questione di preferenza.

2

La mia domanda sarebbe se stavi provando a scegliere una prima lingua per imparare la programmazione? (C# è un'opzione) o conosci un'altra lingua e pensi che potresti aver bisogno di imparare C prima di C#?

Se non si sta tentando di apprendere la programmazione, direi che è possibile saltare C e passare direttamente a C#. Ma per una prima lingua, non consiglierei nessuno dei due. Prova per un linguaggio di scripting che puoi davvero scrivere velocemente codice.

+0

hanno scritto programmi in assembly e incorporato c (se ... altro, fanno, mentre i tipi etc) solo per curiosità e facendo un passo avanti ha posto questa domanda .... – Dharavk

+0

Se lo hai fatto, hai una bella ho imparato bene quello che C ti insegnerà. Vai per il C#. –

1

Sicuro! C# è un linguaggio di livello molto più alto di C, e gestisce molti dei dettagli per te.

Un consiglio tuttavia, C# è un linguaggio molto buono, ma viene fornito con una curva di apprendimento leggermente più ripida rispetto a VB.NET. VB.NET NON È Visual Basic, esegue semplicemente alcune delle sintassi.

La sintassi e le parole chiave di VB.NET sono più facili da imparare e possono quindi essere facilmente tradotte in C#. A parte i casi speciali, ci sono pochissime cose che una lingua può fare che l'altra non può, e dal momento che VB.NET è più facile da imparare, sono un grande sostenitore dell'uso come linguaggio "benvenuto in .NET".


Giusto per chiarire: non si dovrebbe portare lo stigma di VB di "Classic" verso VB.NET, VB6 e VB.NET sono lingue e quadri completamente diversi con somiglianze solo superficiali.

VB.NET offre alcune sottigliezze per i nuovi sviluppatori:

  • let sintassi nit-schizzinosi. C# può fare in modo che uno sviluppatore verde tiri fuori i capelli perché si dimenticano() di un vuoto o li hanno aggiunti a una proprietà.
  • Visual Studio offre un feedback rapido sul codice non compilabile
  • VB.NET utilizza le parole in luoghi in cui C# utilizza simboli. Negli esempi seguenti non che C# si aspetta che tu sappia che ":" significa "Inherits" o "Implements" a seconda dell'argomento che segue, VB.NET dice "Inherits MyBaseClass" e "Implements INamedObject", che è molto più intuitivo

Per essere onesti, non v'è una maggiore lamentela che ho con modelli di codice di default di VB.NET - non hanno il "Option Strict On" e "Option Explicit On" dichiarazioni nella parte superiore. Se si entra in VB.NET assicurarsi di aggiungere questi per ogni classe, che lasceranno il compilatore fare il controllo degli errori più proattivo e si traducono in codice di qualità più elevata e comprensione del sistema di tipo di .NET

Per offrire un esempio di codice .NET equivalente scritto in C# e VB.NET:

C#

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 
+0

VB.NET viene creato per supportare .NET poiché la sintassi VB non supporta completamente .NET (o il più vicino). –

+0

VB.NET e C# sono in gran parte la stessa cosa, a parte problemi di sintassi minore. Detto questo, vorrei suggerire C# piuttosto che VB.Net, assumendo che tu non sappia già VB. È più popolare e quindi molto più facile trovare risorse utili e esempi di codice. Ammetto che di solito è abbastanza facile convertire tra i due, però. C# è spesso tanto sull'utilizzo di framework e quant'altro sulla sintassi. – Brian

2

Sì. Quando ho iniziato con C#, non ho avuto esperienza con C.

+0

Lo stesso qui. :) –

1

Se non si è un programmatore OOP esperto, è probabile che sia meglio evitare C (o anche C++) a meno che non siate un grande fan del disprezzo di se stessi. Tutti gli altri motivi dichiarati sono validi, ma tieni presente che anche C# è gestito (guarda bene), quindi è molto più difficile per entrare in 'guai' con.

6

Qui ripeterò molte risposte, ma volevo dire qualcosa in un modo più specifico di quello che hanno detto altre persone.

Penso che sia giusto saltare in C# o qualsiasi altra lingua orientata agli oggetti come prima lingua. In effetti, molte persone sostengono che una lingua OO dovrebbe essere la tua prima lingua se vuoi diventare bravo in OO perché non sarai bloccato nel pensiero procedurale.

Detto questo, i bravi programmatori che non hanno almeno un modello mentale funzionante per ciò che sta accadendo sotto le copertine sono pochi e distanti tra loro. Ciò significa che, alla fine, dovresti imparare come un computer gestisce la memoria, i puntatori, come una CPU esegue le istruzioni, ecc ... Alla fine, leggere un libro C e un libro di assemblaggio sarebbe una buona idea IMHO. Non penso che tu abbia bisogno di diventare esperto in entrambi; hai solo bisogno di approfondire la comprensione di come funzionano il computer e i linguaggi di programmazione.

-1

Sicuro C# è più facile da capire. Naturalmente, la conoscenza di C sarebbe d'aiuto, ma se non conosci C allora è meglio iniziare da un linguaggio di livello superiore come C#.

2

Una cosa che molti nuovi programmatori non riescono a menzionare è che cosa vogliono fare? Vuoi fare qualcosa di semplice come ciao mondo? O stai cercando di creare qualcosa di più complesso come un'applicazione GUI o un videogioco?

Il motivo per cui questo è importante è che non tutti i linguaggi di programmazione sono appropriati per ogni attività. Come altri hanno già menzionato, C è un ottimo linguaggio per i sistemi e il driver (o qualsiasi cosa che richieda interfaccia a basso livello o prestazioni estreme), e C# è progettato per creare applicazioni desktop che vanno dagli editor di testo alle enormi soluzioni aziendali multilivello. Nonostante i nomi di queste lingue, in realtà condividono solo un nome simile e alcuni pezzi di sintassi in comune.

Si consiglia di iniziare con C# e di salvare C per dopo. Puoi iniziare a lavorare velocemente con molti strumenti gratuiti come Visual Studio Express C#. Se in seguito vuoi iniziare a lavorare su cose come il kernel di Linux, i compilatori oi driver hardware puoi rapidamente cogliere C. C è ancora un linguaggio utile da imparare.

1

Non dovrebbe essere un problema. Finché si impara la programmazione orientata agli oggetti, sei a posto.

0

Ho scoperto che l'apprendimento di Java per la maggior parte degli OOP è molto utile per l'apprendimento di C# poiché sono quasi identici nelle librerie e nella sintassi.

Una conoscenza di C o C++ diventa utile solo una volta che si inizia l'immersione in profondità in C# in aree come il codice non gestito.

1

La mia risposta a tutte le domande del modulo "Devo imparare la lingua X o Y? Devo imparare Z prima di Y e X dopo Y?" ecc è lo stesso: non preoccuparti di queste domande. Dimenticali. Se pensi che l'apprendimento di C# sarà più utile ora (forse ci sono più posti di lavoro, o forse vuoi unirti a un progetto, o forse sei solo curioso), allora siediti e inizia ad imparare.

Se sei già bravo in una lingua, non ci vuole molto tempo per prenderne abbastanza di un altro per vedere se puoi essere produttivo usandolo. E non puoi decidere se impiegare molto tempo per imparare bene una lingua senza averne familiarità. Quindi, inizia a studiare C# se ne hai voglia.

Per arrivare a un po 'di estremo, penso al fatto che, circa 30 anni fa, ho imparato l'assemblaggio di Z80 ancor prima che l'apprendimento di BASIC mi abbia aiutato immensamente lungo la strada. Tuttavia, non consiglierei mai di non imparare altre lingue prima di aver imparato l'assemblaggio.(A proposito, tutto quello che ricordo è che l'opcode 0xc9 è RET).

Quindi, iniziare a imparare C#. Se sei curioso, continua a studiare C, per tutto il tempo ricordando che anche se entrambi hanno parentesi graffe, sono lingue drasticamente diverse. Proprio come C e C++.

0

somiglianze tra C++ e C# terminano in lexer.

+0

Scusa ma la domanda riguarda C ... – Dharavk

0

È inoltre possibile leggere "The C Programming Language" di K & R perché è una lettura veloce e offre uno sfondo che può aiutare a comprendere le prestazioni in corso dietro le quinte in un linguaggio di raccolta dei rifiuti.