Perguntas com a marcação «language-design»

Perguntas envolvendo o design e a estrutura das linguagens de programação.





2
Por que 'void' não é permitido como um tipo genérico em C #
Quais foram as decisões de design que argumentaram a favor de voidnão serem construtíveis e não serem permitidas como um tipo genérico? Afinal, é apenas um vazio especial structe teria evitado a PITA total de ter distintos Funce Actiondelegados. (C ++ permite voidretornos explícitos e voidcomo parâmetro de modelo)


5
Por que todas as funções <algorithm> usam apenas intervalos, não contêineres?
Existem muitas funções úteis &lt;algorithm&gt;, mas todas elas operam em "sequências" - pares de iteradores. Por exemplo, se eu tenho um container e gostaria de rodar std::accumulatenele, preciso escrever: std::vector&lt;int&gt; myContainer = ...; int sum = std::accumulate(myContainer.begin(), myContainer.end(), 0); Quando tudo que pretendo fazer é: int sum = std::accumulate(myContainer, 0); …

4
Por que os iteradores no Python geram uma exceção?
Aqui está a sintaxe para iteradores em Java (sintaxe semelhante em C #): Iterator it = sequence.iterator(); while (it.hasNext()) { System.out.println(it.next()); } O que faz sentido. Aqui está a sintaxe equivalente no Python: it = iter(sequence) while True: try: value = it.next() except StopIteration: break print(value) Eu pensei que as …

8
Por que projetar uma linguagem moderna sem um mecanismo de tratamento de exceções?
Muitas linguagens modernas fornecem recursos avançados de tratamento de exceções , mas a linguagem de programação Swift da Apple não fornece um mecanismo de tratamento de exceções . Imerso em exceções como eu sou, estou tendo problemas para entender o que isso significa. Swift tem afirmações e, é claro, retorna …

13
Por que o operador de atribuição atribui ao lado esquerdo?
Comecei a ensinar a um amigo programação recentemente (estamos usando Python) e, quando começamos a discutir a criação de variáveis ​​e o operador de atribuição, ela perguntou por que o valor à direita é atribuído ao nome à esquerda e não vice-versa . Eu não tinha pensado muito nisso antes, …


4
Por que estruturas e classes separam conceitos em C #?
Enquanto programava em C #, me deparei com uma decisão estranha de design de linguagem que simplesmente não consigo entender. Portanto, o C # (e o CLR) possui dois tipos de dados agregados: struct(tipo de valor, armazenado na pilha, sem herança) e class(tipo de referência, armazenado no heap, possui herança). …




Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.