Articles of language design

Matematica: Non rivalutato vs Defer vs Hold vs HoldForm vs HoldAllComplete vs etc etc

Sono sconcertato da tutte le funzioni matematiche incorporate che pretendono di impedire la valutazione in qualche modo: Non Unevaluated , Unevaluated , Hold e oltre mezza dozzina del modulo Hold* . La documentazione di Mathematica spiega semplicemente ciascuna funzione in modo isolato senza spiegare perché scegliere l’una o l’altra. Qualcuno può offrire una spiegazione coerente […]

Perché il tuo tipo di dati di switch switch non può essere lungo, Java?

Ecco un estratto delle esercitazioni Java di Sun : Uno switch funziona con i tipi di dati byte , short , char e int primitive. Funziona anche con tipi enumerati (discussi in Classi ed Ereditarietà) e alcune classi speciali che “avvolgono” alcuni tipi primitivi: Character , Byte , Short e Integer (discusso in Oggetti dati […]

Vantaggi dell’enum di Java rispetto al vecchio pattern “Typesafe Enum”?

In Java precedente a JDK1.5, il pattern “Typesafe Enum” era il solito modo di implementare un tipo che può richiedere solo un numero finito di valori: public class Suit { private final String name; public static final Suit CLUBS =new Suit(“clubs”); public static final Suit DIAMONDS =new Suit(“diamonds”); public static final Suit HEARTS =new Suit(“hearts”); […]

Cosa significa DIM in Visual Basic e BASIC?

Cosa significa DIM in Visual Basic?

Perché l’aggiunta di null a una stringa è legale?

L’articolo di MSDN su String Nozioni di base mostra questo: string str = “hello”; string nullStr = null; string emptyStr = “”; string tempStr = str + nullStr; // tempStr = “hello” bool b = (emptyStr == nullStr);// b = false; string newStr = emptyStr + nullStr; // creates a new empty string int len […]

Perché i tipi di valore sono memorizzati su stack?

Perché C # (.Net) preferisce lo stack per memorizzare i tipi di valore? Qual è la ragione principale alla base di questo design? Perché le operazioni di lettura / scrittura nello stack sfruttano meglio il processore della macchina? Inoltre, forse puoi giustificare perché non gli altri?

Perché i costruttori Java non possono essere sincronizzati?

Secondo la specifica del linguaggio Java , i costruttori non possono essere contrassegnati come sincronizzati perché altri thread non possono vedere l’object che si sta creando finché il thread che lo ha creato non lo ha completato. Questo sembra un po ‘strano, perché posso effettivamente avere un altro thread per visualizzare l’object mentre è in […]

Metodi generici di Java in classi generiche

Se si crea una class generica in Java (la class ha parametri di tipo generico), è ansible utilizzare metodi generici (il metodo utilizza parametri di tipo generico)? Considera il seguente esempio: public class MyClass { public K doSomething(K k){ return k; } } public class MyGenericClass { public K doSomething(K k){ return k; } public […]

Perché Array non è un tipo generico?

Array è dichiarata come segue: public abstract class Array : ICloneable, IList, ICollection, IEnumerable { Mi chiedo perché non lo è: public partial class Array : ICloneable, IList, ICollection, IEnumerable { Quale sarebbe il problema se fosse stato dichiarato un tipo generico? Se fosse un tipo generico, avremmo ancora bisogno di quello non generico? E […]

Perché le variabili dichiarate in “prova” non sono incluse in “catch” o “finally”?

In C # e in Java (e probabilmente anche in altri linguaggi), le variabili dichiarate in un blocco “try” non sono nell’ambito dei corrispondenti blocchi “catch” o “finally”. Ad esempio, il seguente codice non viene compilato: try { String s = “test”; // (more code…) } catch { Console.Out.WriteLine(s); //Java fans: think “System.out.println” here instead […]