2009/12/8 Vinicius Santos <vinicius.santos.li...@gmail.com>:
> Boa noite pessoal,
>
> Minha dúvida não tem muito a ver necessariamente com PostgreSQL.
>
> O que eu queria saber é porque a maioria dos "grandes" projetos são
> feitos sempre em C ?. Kernel Linux, PostgreSQL, Gnome, Oracle(que eu
> saiba). e assim vai...
>
> Não conheço muito C, porém estou estudando C++, e o autor(Deitel),
> apresenta algumas vantagens em relação ao C, como orientação a objetos,
> vector, etc.

Deitel não é a editora?

>
> Seria mais questão de gosto escolher entre C, C++, ou até Java para
> desenvolver um SO, ou um SGBD, ou teria alguma razão em específico ?

Não diria que é bem uma questão de gosto. Apesar de C ser muito mais
difícil do que outra linguagem como Java, não seria possível
desenvolver o postgres com a atual performance usando-se Java.
Poderia ser usado C++, porem, por problemas de padronização que
citarei abaixo, é melhor ser o C mesmo.

O C é mais usado por causa das padronizações que são mais estáveis.
Os padrões basicamente definem o comportamento esperado pela linguagem
e as bibliotecas básicas que deve conter. Assim, qualquer um poderá
criar um compilador para qualquer arquitetura seguindo os padrões.

Por exemplo, para compilar o postgres você precisa de um compilador
que implementa as especificações do ANSI C89. [1]
O 89 quer dizer o ano da publicação, sendo assim, o padrão já possui 20 anos.

Se não me engano, a primeira especificação do C++ é de 98 e as
seguintes são muito mais recentes e assim menos em uso ou com
implementações imaturas. [2]

C++ é o C com suporte ao paradigma da programação orientada a objetos.
Todas as características encontradas no C são encontradas no C++.

O problema dos padrões do C++ faz pesar a escolha para o C.
Pode parecer besteira, mas quando você precisar desenvolver algo
grande (como o Postgres) deverá pensar nisso.

C é leve porque é minimalista. Encontramos implementados apenas as
instruções básicas. Como instruções condicionais (if, switch) e loops
(for, do, while), etc...
Até para coisas básicas precisamos importar as bibliotecas necessárias
que contem as
funções que precisamos. Por exemplo: Se você quiser pegar um texto
digitado no teclado precisará incluir a biblioteca stdio.h que possui
as funções para esta tarefa.

C e C++ são compilados de verdade, com instruções entendidas
diretamente pelo processador alvo, não apenas mastigado para uma VM
como no java.

Essas são minhas observações, tenho certeza que você conseguirá
encontrar mais referências para este assunto.

[1] http://en.wikipedia.org/wiki/ANSI_C
[2] http://en.wikipedia.org/wiki/C%2B%2B0x

-- 
Tarcisio F. Sassara
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a