-
-
oh yeah baby!!!! Aqui podem encontrar a última versão do compilador de C++. Ao que parece já suporta as últimas alterações da especificação (como por exemplo value type reference semantics)...portanto, convém obtê-lo o mais rápido possível e começar já a escrever Managed C++ :)
-
-
O Stanley B. Lippman publicou o guia de migração para a nova versão de Managed C++. Um documento muito interessante e completo.
-
-
Devo admitir que a chegada às férias deixa-me com mais tempo para fazer as coisas que gosto. Uma dessas coisas é escrever sobre programação. Então resolvi adicionar mais um artigo da saga Programação COM em .Net ao site. Ele está aqui. Este artigo apenas efectua a introdução à construção de classes .Net para serem consumidas por objectos COM. Num próximo artigo irei abordar e aprofundar este tópico.
Posso afirmar que a escrita destes artigos simples para o site tem-me dado bastante gozo. O que eu queria saber era:
- o que acham dos artigos?
- quais as áreas que preferiam ver referidas nestes artigos?
Bom, agora, vou ter mesmo de ir de férias :)
-
-
Acabei de adicionar um novo artigo ao site. Desta vez apresento algumas ideias relativas à utilização do novo mecanismo de callback inserido na nova framework. Como sempre, o código encontra-se a aguardar autorização na secção de downloads. A grande novidade desta vez é que (finalmente) consegui acertar no html final! Pois é Ricardo, desta vez não vais ter de andar a corrigir o layout final :)
Gostava que a Microsoft tivesse uma documentação melhor nos seus produtos beta...é uma grande seca estar à procura de informação e não encontrar nada de decente...enfim, bem sei que ainda é beta, mas...
A grande verdade é que estou desejoso de chegar à próxima semana. Isto deve-se apenas a um facto muito importante: férias!!!
-
-
A saga da programação COM continua: desta vez é apresentada a interacção entre managed e unmanaged code através da linguagem de programação Managed C++. Esta é talvez a melhor linguagem para efectuar a interacção entre managed e unmanaged code. O artigo encontra-se aqui e o sample que acompanha o artigo encontra-se à espera de aprovação na secção de downloads.
Infelizmente o espaçamento ficou completamente trocado devido à utilização do Dreamweaver (tenho de arranjar um editor decente para contruir estes artigos...). Engraçado que o preview mostrava tudo de forma correcta; contudo a publicação destruiu por completo o layout (parece-me que algo de mau ocorre entre o preview e o retorno à vista de edição...)
-
-
Parece que último item desta coluna ninguém participou :( Contudo, fica aqui a resposta desse item. Infelizmente o excerto de código apresentado não compila.Isto deve-se a uma particularidade da linguagem C#. Sempre que uma propriedade de uma estrutura é utilizada como destino numa operação de atribuição, então a expressão associada à propriedade tem de resultar numa variável; se o resultado dessa espressão for considerado um valor, então ocorre um erro de compilação.
Esta semana vou aproveitar para colocar uma questão que apareceu na página do Brad Abrams e em seguida na página do Ian Griffith. Sugere-se a tentativa de uma resposta antes da consulta da solução :)
Ora bem, qual o resultado esperado a partir da execução do seguinte código:
public class Base
{
public virtual void DoCleanUp()
{
Console.WriteLine("Do Base's Cleanup");
}
~Base()
{
DoCleanUp();
}
}
public class Derived : Base
{
public override void DoCleanUp()
{
Console.WriteLine("Do Derived Cleanup");
}
~Derived()
{
DoCleanUp();
}
}
class Program {
static void Main(string[] args) {
Derived d = new Derived();
d = null;
GC.Collect();
Console.Read();
}
}
-
-
Hoje dei comigo a pensar sobre a criação de uma empresa. Contudo, não sei se actualmente existem grandes hipóteses para as pequenas empresas. Especialmente se tivermos em conta o ramo (desenvolvimento). Na vossa opinião, como é que está o mercado (a nível de programação)? Será que existem projectos para serem executados através de teletrabalho? E já agora, quanto é que um programador recebe em média para desenvolver aplicações?
Como podem verificar, o meu trabalho actual já não me está a satisfazer muito (quer a nível de desafios - que, na minha opinião, são muito importantes - quer a nível de ordenado)...
-
-
Não sei se já conhecem o link...de qualquer forma, cá fica:
http://pluralsight.com/wiki/default.aspx/Keith.GuideBook.HomePage
Ainda por cima de graça e sem prejudicar ninguém! (ou seja, podem ler à vontade que é legal :) ). Bem, tendo em atenção o nome do escritor, deve ser muito bom!
-
-
Nos últimos dias tenho estado a ler vários artigos sobre managed C++. Apesar de ainda estar a desenvolver em C#, não posso esconder que sinto-me tentado "largar tudo" e dedicar-me apenas ao C++. Actualmente estou a tentar encontrar o máximo de informação possível sobre Interop com COM. A novidade aqui reside no facto de, segundo todos os artigos que encontrei até agora, o Interop efectuado a partir de C++ ser mais eficiente do que o que é utilizado noutras linguagens. Claro que podemos utilizar o tlbimp à mesma e gerar wrappers à volta de obejctos COM como fazemos noutras linguagens; contudo, a vantagem do C++ reside no facto de podermos utilizar directamente no nosso código instâncias desses objectos COM (claro que o compilador tem de efectuar a transição entre managed e unmanaged code; só que, ao que consta, esta transição é muito mais fácil/rápida). O único problema que detectei até agora reside no facto de não podermos declarar uma instância do tipo smart pointer (gerados através do #import) numa classe managed...podemos apenas declará-los no interior de um método. Por outras palavras, se quisermos utilizar instâncias de objectos COM no interior de uma classe managed temos de utilizar mesmo apontadores! (nada de mais; apenas um pouco mais de trabalho a criar o apontador e construir um destructor em que libertamos o elemento- que, se não me engano, é automaticamente transformado no método Dispose do interface IDisposable).
Mesmo a nível de código managed, esta nova versão do C++ tem alguns pormenores que me chamaram a atenção. Actualmente ainda continuo na minha fase de estudo. Espero escrever (num futuro próximo) um artigo sobre as novidades do managed C++.
-
-
Acabei de colocar online um novo artigo da série de programação COM em .Net. Desta vez abordo alguns aspectos que relacionados com a utilização de objectos COM (interfaces VTBL vs IDispatch), com a libertação explicita de recursos e com a utilização de apartments. Espero que gostem.
-
-
Na sequência do que tem sido feito nos números anteriores, vamos começar por fornecer as respostas às questões do item anterior. Relativamente ao primeiro exemplo, não há qualquer problema com o código pois em C# o acesso é definido a nível da classe e não ao nível do objecto. Devido a isto, é possível termos um objecto a aceder aos campos privados de outro objecto (se bem que esta não seja uma estratégia muito boa!).
Por outro lado, o segundo programa contém um erro relacionado com o facto de estarmos a aceder a um membro protegido da classe Class1. Isto deve-se a uma regra que diz (mais ou menos) o seguinte: o acesso a um membro protegido (protected) fora do texto da classe deve ser sempre feito através de uma classe derivada.
Para esta semana, interessa saber qual o resultado proveniente do seguinte código:
struct Point
{
private int _x;
private int _y;
public int X
{
get{ return _x; }
set{ _x = value;}
}
public int Y
{
get{ return _y; }
set{_y = value; }
}
}
struct Rectangle
{
private Point _p1;
private Point _p2;
public Point P1
{
get { return _p1; }
set { _p1 = value; }
}
public Point P2
{
get { return _p2; }
set { _p2 = value; }
}
}
class Program{
static void Main( string[] args )
{
Point p1; p1.X = p1.Y = 1;
Rectangle rect;
rect.P1 = p1;
rect.P2.X = 2;
rect.P2.Y = 2;
}
}
Até para a semana!