
rodfraga
Membros-
Total de itens
936 -
Registro em
-
Última visita
Tudo que rodfraga postou
-
"Só por prazer"
-
Se você quer fazer uma linguagem interpretada com fácil suporte a GUI, aí a coisa complica pra você. Você vai ter que, a não ser que desenvolva a linguagem com ferramentas multiplataforma(Java, .NET - graças ao projeto MONO), criar um interpretador para cada sistema operacional. Porque para desenvolver GUI para Windows você tem um esquema, para Linux, outro, e assim vai. Portanto, você não poderia criar um interpretador que transformasse o código na sua linguagem em um código de desenvolvimento GUI genérico para todos os sistemas. (nota: com java, por exemplo, isso seria possível). Ou você se limita a um sistema operacional(várias funções mudam de sistema pra sistema), ou você usa uma plataforma que rode em vários sistemas, ou você faz a sua linguagem na verdade rodar em uma própria máquina virtual, com seu próprio tipo de linguagem compilada, e tudo que você faz é "traduzir" a sua linguagem para o código compilado da sua máquina virtual. Não, a última opção NÃO é a mais fácil hehehe. Aliás, eu estava com um projeto muito parecido com o último descrito com o graymalkin Editado: Ou você simplesmente faz um interpretador para cada sistema(no caso de persistir nessa do GUI, por exemplo), o que não vai ser lá o mais divertido XD
-
Uma linguagem interpretada? Compilada? Como você quer ela? Sei lá, são coisas que você deve definir antes.
-
Oi, foi mal chatear de novo Mas... você acha que o The Java Programming Language do próprio James Gosling é suficiente pra mim? Valeu Abraços
-
Muito obrigado, vou ver o que faço
-
Brigado! Suspeitava disso quando li uma note em algum lugar que o Bruce Eckels terminou a 4ª edição do TIJ, finalmente tratando do "Tiger" hehehehe. O Core Java não tem versão online né? E outra coisa, é mais de um volume, certo? Obrigadão!
-
O título quase faz a pergunta... hehehehe De qual release de Java o Thiking in Java 3ª edição fala, pessoal? Valeu Rodrigo.
-
Paradigma Da Orientação A Aspectos
pergunta respondeu ao rodfraga de rodfraga em Outras Linguagens de Programação
valeu cara -
Alguém conhece ou pode me falar sobre o paradigma da orientação a aspectos? Obrigado. Rodrigo.
-
Ham, se num tinha reparado, tá reparado agora Tudo bem. Hahaha sem problemas Rodrigo.
-
Mas agora eu fui pensar... Uma struct pode ser composta por vários dados, então como ela é um tipo de valor? Rodrigo.
-
Certinho, obrigado Rodrigo.
-
Então é certo eu dizer que null e nada são coisas diferentes. Null chegaria a ser um valor, né?
-
Ué, é só consultar a documentação das APIs de Java (Pelo menos é o que eu faria ) Página Inicial da Sun para Java Lá você vê o link da documentação da plataforma SE ou EE, de acordo com a sua necessidade. Até.
-
Opa, agora vi que o que eu disse não é bem verdade. Parei pra pensar sobre o fato de todos os tipos em C# serem objetos, o que muda o que eu disse sobre... "int y;" não guarda valor na memória para y. Guardaria se fosse "int y = new int()" Aí sim os 32 bits estariam "guardados" para y. Acontece que sendo um objeto, a memória de y não é alocada logo na simples declaração, pois este precisa ser inicializado. Aí você pode fazer de duas formas. int y = new int(); // aloca 32 bits para y e o inicializa com o valor 0 ou int y = 12; /* aqui você está usando uma 'short form' do que seria int y = new int(); y = 12; -> o que você também pode fazer */ Null então é valor ou não é? Sei lá É, eles até tentam fazer com que não nos preocupemos com administração de memória, mas está nas nossas veias
-
Vou tentar responder e ver se eu entendi Sim, seria uma parte da função dela, pelo que entendi. Não, eu acho que não. Não foi assinalado nenhum valor para y. Veja: public class Teste { static void Main() { int x = null; System.Console.WriteLine("x = {0}", x); System.Console.Read(); return; } } Você vai ter erro de compilação porque não pode designar null para x, tem que usar o operador ?, como explicou o Graymalkin. Teria que fazer: public class Teste { static void Main() { int? x = null; System.Console.WriteLine("x = {0}", x); System.Console.Read(); return; } } Pra usar um Nullable type do tipo int. Aí sim x teria valor nulo. Note que apenas "int y;" não assinala um valor para ele, apenas é uma instrução para reservar um espaço de 32 bits na memória para "y", mas esse espaço ainda não guarda nada. Null, de fato, é um valor. Ou seja, o que quero dizer é que na minha opinião é possível ver que há diferença entre null e nada. Usar ?? tem o mesmo efeito que usar: object x; x = null; if (x == null) { x = 123456; } else { x = x; } Certo? E eu acho que object não é um tipo de valor, mas de referência, portanto para assinalar valor nulo para ele você não precisa do recurso de nullable types. Mas é claro que o operador ?? simplifica bastante as coisas. Sobre o resto, prefiro deixar de responder, pois não tenho certeza, vou dar uma olhada...
-
Obrigado
-
É o mesmo que o meu então. Ótimo Show isso da Microsoft disponibilizar ferramenta free. Sim, é free pra quem fizer o download até novembro de 2006. Quem fizer o download depois, provavelmente terá que pagar uma taxazinha. Depois eu vou dar uma olhada. Aliás, todo o VS 2005 Express tá com essa promoção, por isso recomendo baixar todas as ferramentas, o VJ# 2005, VB 2005, VC++ 2005... E o SQL Server 2005 Express não tem limite, é totalmente free mesmo Presentão hein?
-
Oi!, desculpa a demora, eu estava comemorando a chegada de 2006. FELIZ ANO NOVO PRA VOCÊS! Olha, Denis, você pode me dizer se essa documentação você achou no Help do VS2005 ou no VS2005 Express? Porque eu tenho o Express e queria dar uma olhada nesse "Para mais informações" e ver com cuidado. Abraços Rodrigo
-
Tem certeza disso Denis? Estou com um documento da MSDN(da linguagem C# 2.0) aberto agora e não existe tal argumento "??". Existe apenas, como disse o Graymalkin, o "?:". Rodrigo.
-
Ah e pra deixar claro... Sim, todos os tipos derivam da classe object. Não, não é por isso, eu já expliquei em cima E não, eu não creio(não tenho certeza) que System.Object seja um tipo como o Variant do VB6, pelo simples fato de que eu não acredito que o Variant seja uma classe pai dos outros tipos, Integer, String, e outros... E eu acho que isso faz toda a diferença, criando possibilidades legais(que temos com o tipo object) Criar um objeto com object o = new object(); Não faz de o um objeto sem tipo definido. Pelo menos não na minha opinião. Droga, eu falo demais! Rodrigo.
-
Na verdade eu acho que você pegou a idéia do boxing, mas misturou um pouco com herança (o que eu acho normal, já que em boxing você usa herança). Veja bem, vou tentar separar as coisas pra você(a características de herança que eu falei e o boxing). Casting com Herança Imagine uma classe base e uma classe derivada. public class Base { ... } public class Derivada : Base { ... } Segunda as regras de herança, uma classe derivada é uma classe base, porque possui todos os campos, propriedades e métodos da classe base. Então, um objecto da classe Derivada "é um" objeto de classe Base. O contrário não é verdadeiro, pois um objeto de classe Base não é necessariamente um objeto de classe Derivada. Falando de casting entre as classes, aí vem esse conceito da herança. Você pode fazer um casting como por exemplo:(leve em conta as classes a cima) Base objbase = new Base(); Derivada objderivada = new Derivada(); objbase = objderivada; // isso é um cast implícito Entendeu? Ou seja, quando há essa relação do "é um", podemos fazer o cast implícito, porque o compilador de fato sabe que o cast é natural. Mas se quisermos depois disso fazer a "volta" para um objeto de classe derivada, se fizéssemos: objderivada = objbase; Isso se não me engano retornaria um erro de compilação. Porque não é possível fazer um cast implícito já que um objeto de classe base "não é um" objeto de classe derivada. Mas você pode "mostrar" que sabe que a conversão não é natural, mas que quer fazer assim mesmo ao compilador, com um cast explícito. objderivada = (objderivada) objbase; // agora sim OK Eu acho que é isso. Boxing e Unboxing É a ação de converter um objeto de classe derivada em objeto de classe base para "empacota-lo" em um tipo comum, em um tipo unificado. É o que ocorre com o tipo object em C#. E unboxing é justamente o contrário(veja que pegando a explicação sobre a característica do cast entre classe base e derivada que eu botei antes, você pode concluir o porque do cast explícito de um objeto object para um int.) Ajudei? Rodrigo.
-
Estranho ninguém ter respondido ainda A dúvida ainda está aberta? Deixa eu tentar explicar(tanto tempo que eu num venho na SB, sabe! ) Você sabe que em C# todos os tipos são objetos, certo? E que todos os objetos derivam da classe System.Object, o que podemos chamar de "sistema de tipo unificado". É como se, implicitamente, você declarasse cada classe assim: public class Exemplo : System.Object { blablabla } certo? Então, imagine que você precisa guardar dados genéricos, sei lá, num array, que pode conter strings, ints ou sei lá o que. Você pode fazer o seguinte: object[] dados = new object[tamanho]; Certo? Então, a ação de transformar dados derivados em objects, ou seja, fazer o upcasting da hierarquia, é o boxing. Se não estou enganado, não interessa a intenção de fazê-lo, mas a ação. E unboxing é fazê-los retornar ao tipo derivado. Exemplo rápido: int inteiro = 12; System.Console.WriteLine("inteiro = {0}", inteiro); // imprime inteiro = 12 object o = new object(); o = inteiro; /* cast implícito, ok, a herança implica que uma classe filho É uma classe pai -> BOXING */ System.Console.WriteLine("o = {0}", o); // imprime o = 12 inteiro = (int) o; /* cast explícito, pois nas regras de herança, uma classe filho não é necessariamente uma classe pai, ou seja, o inverso pra condição anterior não é verdadeiro. Em todo caso, mesmo que a conversão seja possível, como nesse caso, deve ser feita explicitamente. -> UNBOXING. */ System.Console.WriteLine("inteiro = {0}", inteiro); Certinho? Se houver algum erro corrijam-me, também estou iniciando em C# Abraços, Rodrigo
-
Você precisa registrar nas variáveis do sistema o compilador para que o DOS o reconheça. Se você usa Windows XP(e acho que outra versão), clice com o botão direito em Meu Computador, e vá em Avançado. Vá lá embaixo em Variáveis de Ambiente. No quadro de baixo, "Variáveis do Sistema", edite a variável Path e inclua ao final dela(acrescentando um ; antes de escrever nela) o endereço do compilador javac. Espero que tenha ajudado. Nossa, há quanto tempo eu não entrava no forum! Abraços
-
atenção: o terceiro é sobre C#, não C.