terça-feira, 30 de junho de 2009

linguagens de programação

duas linguagens importantíssimas são a C# e COBOL. Por isso escolhi falar sobre as duas.

C# (CSharp) é uma linguagem de programação orientada a objetos desenvolvida pela Microsoft como parte da plataforma .Net. A sua sintaxe orientada a objectos foi baseada no C++ mas inclui muitas influências de outras linguagens de programação (Delphi e Java).

Durante o desenvolvimento da plataforma .NET, as class libraries foram escritas originalmente num compilador/linguagem chamada Simple Managed C (SMC). Mas, em Janeiro de 1999, o Anders Hejlsberg que fora escolhido pela Microsoft para desenvolver a linguagem, forma uma equipe de desenvolvimento e dá inicio à criação da linguagem chamada de Cool. Um pouco mais tarde, em 2000, o projeto .NET era apresentado ao público na Professional Developers Conference (PDC), e a linguagem Cool fora renomeada e apresentada como C#.

A criação da linguagem, embora tenha sido feita por vários programadores, é atribuída principalmente a Anders Hejlsberg, hoje um Distinguished Engineer na Microsoft. Anders Hejlsberg fora o arquiteto de alguns compiladores da Borland, entre suas criações mais conhecidas estão o Turbo Pascal e o Delphi.

Muitos pensam que o nome C# viria de uma sobreposição de 4 símbolos "+" dando a impressão de "++++". Na verdade o "#" de C# refere-se ao sinal musical (sustenido), que aumenta em 1/2 tom uma nota musical. O símbolo real seria o e não o #, porém, devido a limitação de telas, fontes e alguns browsers, no momento da normalização junto a ECMA, fora especificado apenas que o nome da linguagem seria uma letra C maiúscula (U+0043) e o sinal "#" (U+0023), facilitando assim, publicações e artigos com um caracter encontrado facilmente dos layouts de teclado padrões. Desta forma, caso o nome fosse usado em português, seria "C-Sustenido" (ou "Dó-Sustenido"), e não "C-cerquilha".

C# (CSharp) é uma linguagem de programação orientada a objectos criada pela Microsoft, faz parte da sua plataforma .Net. A empresa baseou C# na linguagem C++ e Java, é considerada a linguagem símbolo do .NET porque foi criada praticamente do zero para funcionar na nova plataforma sem preocupações de compatibilidade com código existente, o compilador C# foi o primeiro a ser desenvolvido, a maior parte das classes do .NET Framework foram desenvolvidas em C#.

Ao contrário das outras linguagens de programação, nenhuma implementação de C# atualmente inclui qualquer conjunto de bibliotecas de classes ou funções. Ao invés disso, C# está muito vinculada ao framework.Net/Mono, do qual C# obtém suas classes ou funções de execução. O código é organizado em um conjunto de namespaces que agrupam as classes com funções similares. Por exemplo: System.Drawing para gráficos, System.Collections para estrutura de dados e System.Windows.Forms para o sistema Windows Form.

Um nível de organização superior é fornecido pelo conceito de montador (assembly). Um montador pode ser um simples arquivo ou múltiplos arquivos ligados juntos (como em al.exe) que podem conter muitosnamespaces ou objetos. Programas que precisam de classes para realizar uma função em particular podem se referenciar a montadores como System.Drawing.dll e System.Windows.Forms.dll assim como a biblioteca core (conhecida como mscorlib.dll na implementação da Microsoft).

COBOL é uma linguagem de programação de Terceira Geração. Este nome é a sigla de COmmon Business Oriented Language (Linguagem Orientada aos Negócios), que define seu objetivo principal em sistemas comerciais, financeiros e administrativos para empresas e governos.O COBOL 2002 inclui suporte para programação orientada a objetos e outras características das linguagens modernas. Entretanto, a maior parte deste artigo está baseado no COBOL 85.

O COBOL foi definido na especificação original, possuia excelentes capacidades de autodocumentação, bons métodos de manuseio de arquivos, e excepcional modelagem de dados para a época, graças ao uso da cláusula PICTURE para especificações detalhadas de campos. Entretanto, segundo os padrões modernos de definição de linguagens de programação, tinha sérias deficiências, notadamente sintaxe prolixa e falta de suporte de variáveis locais, recorrência, alocação dinâmica de memória e programação estruturada. A falta de suporte à linguagem orientada a objeto é compreensível, já que o conceito era desconhecido naquela época.

O COBOL possui muitas palavras reservadas, e é difícil evitar de usar alguma inadvertidamente sem o uso de alguma convenção, como adicionando um prefixo a todos os nomes de variáveis. A especificação original do COBOL suportava até código auto-modificável através do famoso comando "ALTER X TO PROCEED TO Y". Entretanto, a especificação do COBOL foi redefinida de tempos em tempos para atender a algumas das críticas, e as últimas definições do COBOL corrigiram muitas destas falhas, acrescentando estruturas de controle melhoradas, orientação a objeto e removendo a possibilidade de codificação auto-modificável.

Embora o COBOL tenha sido proposto originalmente como solução para resolver problemas de programação do governo e das forças armadas americanas, programas COBOL continuam em uso na maioria das empresas comerciais em todo o mundo, notadamente nas instituições financeiras, e em praticamente todos os sistemas operacionais, incluindo o IBM z/OS, o Microsoft Windows e a família Unix/Linux. A base global de código é imensa e os aplicativos, de tempos em tempos, são sujeitos a manutenção. O custo de reescrever um aplicativo COBOL, já depurado, em uma nova linguagem não justifica os benefícios que possa eventualmente trazer. No fim dos anos 90 o Gartner Group, uma empresa de pesquisa na área de processamento de dados, estimou que dos 300 bilhões de linhas de código-fonte existentes no mundo, 80% - ou cerca de 240 bilhões de linhas - eram em COBOL. Eles também reportaram que mais de metade dos novos aplicativos de missão crítica ainda estavam sendo desenvolvidos usando o COBOL.

Ao se aproximar o fim do século XX houve uma febre de atividade de programadores COBOL para corrigir os efeitos do bug do milênio, em certos casos em sistemas desenvolvidos por estes mesmos programadores há décadas. Este problema foi mais crítico no código COBOL porque as datas são primordiais em aplicativos comerciais, e a maioria dos aplicativos comerciais foram escritos em COBOL.

Algumas pessoas acreditam que o uso de aritmética decimal codificada em binário fez com que programas desenvolvidos sem a previsão de datas com ano de 4 dígitos ficassem particularmente vulneráveis a falhas com o problema do ano 2000; entretanto é difícil justificar esta opinião. Outros argumentam que a aritmética BCD do COBOL evitou muitos outros problemas que poderiam ocorrer com o uso ingênuo do ponto flutuante em cálculos financeiros.

O COBOL provou ser durável e adaptável. O padrão atual do COBOL é o COBOL2002. O COBOL2002 suporta agora conveniências modernas como Unicode, geração de XML e convenção de chamadas de/para linguagens como o C, inclusão como linguagem de primeira classe em ambientes de desenvolvimento como o .NET da Microsoft e a capacidade de operar em ambientes fechados como Java (incluindo COBOL em instâncias de EJB) e acesso a qualquer base SQL.

Uma amostra do curso e seus objetivos.

Desta vez estou aqui para mostrar um pouco do que um cientista da computação vai estudar e qual a utilidade de seu estudo. Claro que será apenas uma amostra, digamos que bem pequena porém, bastante relevante. A idéia é escolher 3 disciplinas do da grade e fazer uma relação com um objetivo da SBC.

Escolhi disciplinas que são muito importantes para o 2º objetivo da SBc. Espero que ao ler, vocês descubram qual é o objetivo.

A inteligência artificial dedica-se a buscar métodos que simulem a capacidade humana de pensar problemas.
Ementa: Conceitos básicos. Solução de Problemas: revisão de estratégias de busca, buscas heurísticas, comparação de estratégias, aplicação de busca em jogos. Representação do Conhecimento: construção de bases de conhecimento, uso da lógica em IA. Noções de Planejamento. Raciocínio: regras de produção, baseado em situações incertas, baseado em casos. Aprendizado de Máquina Simbólico: indução de árvores de decisão, aprendizagem não-supervisionada e aprendizagem por reforço. Aplicações de IA. Trabalho prático.
Essa disciplina está associada a um dos desafios da SBC: Modelagem computacional de sistemas complexos artificiais, naturais e sócio-culturais e da interação homem-natureza.

Programação Orientada a Objeto, é a disciplina que lida diretamente com a computação, por isso, ela está ligada a todos os desafios sem menor dúvida, mas a que ela está melhor adequada é ao obijetivo já citado anteriormente.

A disciplina Métodos e Técnicas de Pesquisa trata de ensinar a trabalhar cientificamente fezendo pesquisas, é uma disciplina essencial em se tratando de um curso de Ciências e se relaciona praticamente com todos os desafios da Computação uma vez que a ciência é sinônimo de pesquisa, que não só procura por novas respostas como, principalmente, por novas perguntas.

segunda-feira, 4 de maio de 2009

Regulamentação da profissão

Existe um projeto de regulamentação da profissão da informática. E é dela que vim falar hoje. Pois ela é importantíssima para as pessoas formadas na área e não-formados mas que atuam na área. Sou a favou pois as pessoas poderão ser mais bem remuneradas e mais importante de tudo que ela poderão servir melhor os clientes uma vez que está previsto na regulamentação a melhor capacitação dos profissionais da área, formados ou não. Sendo assim, será melhor para todos mesmo que os contratantes paguem mais, pagarão por serviços mais eficientes, com garantia de qualidade.

Os projetos em votação são os seguites: 

  • 1561/2003: O exercício da profissão na área de informática deve ser livre, ou seja, não precisa de comprovação de Curso superior, educação formal ou registros em conselhos de profissão. O profissional de informática não é obrigado a se registrar em nenhum conselho de profissão, nem será exigido do mesmo registro nos conselhos para participar de licitação, concursos, ou processo seletivo para empregos e cargos na área de informática, porém é facultado a exigencia de diplomas ou certificações para o exercício de funções ou atividades específicas pela entidade contratante. OBS: Na minha opnião, esse projeto é algo já existente no Brasil, mesmo que ainda não tenha sido implantado, é a realidade dos Profissionais de informática brasileiros.
  • 815/1995: Regulamenta a profissão de Analista de sistemas e autoriza autoriza a criação do Conselho Federal de Informática - CONFEI e dos Conselhos Regionais de Informática - CREI. Que serão órgãos administrativos com o objetivo de orientar e fiscalizar o exercício dos profissionais de informática, bem como as pessoas jurídicas com atividade principal relacionada a área de informática, poderão exigir o registro dos profissionais no conselho e fixar, cobrar e executar contribuições anuais devidas por pessoas físicas ou jurídicas, bem como preços de serviços e multas que constituirão receitas próprias. OBS: Na minha opnião, é a mais cabível.
  • 607/2007: Essa possui os mesmos principios da anterior, porém muito mais completos. Ela estabelece como serão os conselhos nacionais e o federal de informatica, obriga o profissional de informática a pagar anuidades. OBS: Na minha opnião, muito complexa e rígida.

Meu computador

  Então galera, depois de um tempo de inatividade devido a uma viagem forçada estou aqui de volta para, agora, falar do meu computador. Pois é e para começar  a falar do meu computador nada mais justo do que começar pela placa mãe. Minha placa mãe é uma GIGABYTE GA-EP31-DS3L com Audio e rede, ddr2 dual channel, 4 portas serail Ata II.

A ela estão ligados todos os outros componentes do computados, direta ou indiretamente.

 O processador, que no meu caso é um intel dual core. Ele é a parte mais fundamental para o funcionamento de um computador. Processadores são circuitos digitais que realizam operações como: cópia de dados, acesso a memórias e operações lógicas e matemáticas. Os processadores comuns trabalham apenas com lógica digital binária. Existem processadores simples, que realizam um número pequeno de tarefas, que podem ser utilizados em aplicações mais específicas, e também existem processadores mais sofisticados, que podem ser utilizados para os mais diferentes objetivos, desde que programados apropriadamente. Processadores geralmente possuem uma pequena memória interna, portas de entrada e de saída, e são geralmente ligados a outros circuitos digitais como memórias, multiplexadores e circuitos lógicos. Muitas vezes também um processador possui uma porta de entrada de instruções, que determinam a tarefa a ser realizada por ele. Estas seqüências de instruções geralmente estão armazenadas em memórias, e formam o programa a ser executado pelo processador. Em geral, fala-se que um processador é melhor do que outro na medida em que ele pode realizar uma mesma tarefa em menos tempo, ou com mais eficiência. Processadores podem ser projetados para tarefas extremamente específicas, realizando-as com eficiência insuperável. Este é o caso nos processadores que controlam eletrodomésticos e dispositivos simples como portões eletrônicos e algumas partes de automóveis. Outros visam uma maior genericidade, como nos processadores em computadores pessoais. Os processadores formam a classe mais elevada de circuitos digitais, precedidos pelas máquinas de estado e unidades de lógica e aritmética.

Em qualquer computador existe a memória secundária. Ela permite a leitura e a escrita, utilizada como memória primária em sistemas eletrônicos digitais. A minha memória ram é uma DDR2.

Existem os dispositivos de entrada e saída
Os dispositivos de Entrada e Saída, possibilitam a interação entre processador e homem, possibilitando a entrada e/ou saída de dados.
Os dispositivos de entrada codificam as informações de modo que se torne compreensível ao sistema digital.
Os dispositivos de saída decodificam as informações de modo que se torne compreensível ao usuário.
São dispositivos de entrada: teclado, mouse, drive de cd/dvd, pen drive, scanner, joystick.
São dispositivos de saída: monitor de vídeo, caixa de som, impressoras.

Por hoje é só. Amanhã eu complementarei o meu post.

domingo, 12 de abril de 2009

SBC, função e metas

Na ultima segunda feira, na aula de introdução a computação, tivemos uma palestra sobre a SBC, ministrada pelo professor Rogerio, coordenador do departamento de Sistema de Informação. A palestra foi muito proveitosa, rica, e os principais enfoques eram os congressos que vão haver este ano, sobre computação, e os Grandes Desafios da Computação de 1996-2016.
 A SBC foi fundada em 1978 onde os sócios podem ser dos mais variados tipos: Professores, pesquisadores, estudantes e os profissionais da computação.
Falou-se sobre os cinco grandes desafios da computação:
  1. Gestão da Informação em grandes volumes de dados multimídia distribuídos.
  2. Modelagem computacional de sistemas complexos artificiais, naturais e sócioculturais e da interação homem-natureza.
  3. Impactos para a área da computação da transição do silício para novas tecnologias.
  4. Acesso participativo e universal do cidadão brasileiro ao conhecimento.
  5. Desenvolvimento tecnológico de qualidade: sistemas disponíveis, corretos, seguros,
escaláveis, persistentes e ubíquos.

O professor passou ainda duas perguntas para serem respondidas, é claro.
A primeira é sobre as graduações em computação. Ele quer saber se elas estão preparadas para formar pessoas capazes de dar conta de tais desafios. E eu acredito que elas fazem a sua parte tendo em vista o pouco investimento do governo mas que toda a dificudade pode ser revertida com a força de vontade do universitário(pesquisador) em aprender e ajudar o mundo da melhor maneira possível que pra ele seria solucionando esses cinco desafios.
a segunda pergunta foi: A que áreas do conhecimento humano diz respeito o desenvolvimento da área de Computação? E eu posso afirmar que hoje em dia tudo está ligado a computação, ou melhor, todos estão ligados através da computação. A computação é antes de mais nada um instrumento muito valioso no mundo atual. Atravez dela todos que tem acesso a tal instrumento podem se comunicar e repassar informação(experiências, pesquisas, idéias, erros para não serem repetidos) quem ajudam ao avanço do conhecimento humano em todas as áreas, em todas as direções.


segunda-feira, 30 de março de 2009

lógica segundo aristòteles, boole e frege

Entendida popularmente como o estudo do raciocínio correto, a lógica surge no Ocidente com o filósofo grego Aristóteles. Para mostrar que os sofistas (mestres da retórica e da oratória) podem enganar os cidadãos utilizando argumentos incorretos, Aristóteles estuda a estrutura lógica da argumentação. Revela, assim, que alguns argumentos podem ser convincentes, embora não sejam corretos. A lógica, segundo Aristóteles, é um instrumento para atingir o conhecimento científico.
Boole criou a lógica booleana, originalmente desenvolvida por George Boole em meados de 1800, permite que uma série de coisas pouco prováveis sejam mapeadas em bits e bytes. O que há de genial sobre a lógica booleana é que, uma vez entendido seu processo, ela (ou pelo menos a parte necessária para compreender as operações de um computador) é absurdamente simples. Boole era autodidata e fundou aos 20 anos de idade a sua própria escola e dedicou-se ao estudo da Matemática. Em 1847 publicou The Mathematical Analysis of Logic em que introduziu os conceitos de lógica simbólica demonstrando que a lógica podia ser reduzida a equações algébricas.
Antes de Frege, a lógica formal não obteve sucesso além do nível da lógica de sentenças: ela podia representar a estrutura de sentenças compostas de outras sentenças, usando palavras como "e", "ou" e "não", mas não podia quebrar sentenças em partes menores. Não era possível mostrar como "Vacas são animais" leva a concluir que "Partes de vacas são partes de animais". então ele criou a lógica de predicados, onde ele mostrou como podemos introduzir variáveis e quantificadores para reorganizar sentenças. Frege trata sentenças simples sem substantivo como predicados e aplica a eles to "dummy objects" (x). A estrutura lógica na discussão sobre objetos pode ser operada de acordo com as regras da lógica sentencial, com alguns detalhes adicionais para adicionar e remover quantificadores. O trabalho de Frege foi um dos que deu início à lógica formal contemporânea.
Todos os três, tiveram uma grande comtribuição para a lógica como a conhecemos atualmente. 

Perfil

Comecei a gostar de informática na 5ª série no CODAP com a professora Aldênia como já falei aqui no blog. passado os ano e vendo q era isso q eu queria prestei vestibular pra CC. estou gostando bastante do curso. o curso tem bons professores q vão ajudar bastante no meu desenvolvimento na universidade e na vida(pelo menos é oq eu espero). nunca fiz nenhum curso de computação.... nada. mas estou gostando bastante e é a área q eu quero. até agora não tive nenhuma dúvida. e essew trabalho inicial do blog tem me ajudado a poder pensar sobre o curso, onde irei trabalhar, como vou trabalhar, em que eu posso ajudar os outros atravez do meu curso(nas aulas do professor shneider) e assim por diante. oq eu posso esperar do curso é que ele me ajude não só na minha vida profissional como na pessoal.