Busca

JSantanna

Meu blog sobre engenharia, tecnologia, ciência da Computação, etc.

Categoria

programming

10 regras de programação da NASA ( em inglês)

NASA’s 10 rules for writing mission-critical code:

  1. Restrict all code to very simple control flow constructs – do not use goto statements, setjmp or longjmp constructs, and direct or indirect recursion.
  2. All loops must have a fixed upper-bound. It must be trivially possible for a checking tool to prove statically that a preset upper-bound on the number of iterations of a loop cannot be exceeded. If the loop-bound cannot be proven statically, the rule is considered violated.
  3. Do not use dynamic memory allocation after initialization.
  4. No function should be longer than what can be printed on a single sheet of paper in a standard reference format with one line per statement and one line per declaration. Typically, this means no more than about 60 lines of code per function.
  5. The assertion density of the code should average to a minimum of two assertions per function. Assertions are used to check for anomalous conditions that should never happen in real-life executions. Assertions must always be side-effect free and should be defined as Boolean tests. When an assertion fails, an explicit recovery action must be taken, e.g., by returning an error condition to the caller of the function that executes the failing assertion. Any assertion for which a static checking tool can prove that it can never fail or never hold violates this rule (I.e., it is not possible to satisfy the rule by adding unhelpful “assert(true)” statements).
  6. Data objects must be declared at the smallest possible level of scope.
  7. The return value of non-void functions must be checked by each calling function, and the validity of parameters must be checked inside each function.
  8. The use of the preprocessor must be limited to the inclusion of header files and simple macro definitions. Token pasting, variable argument lists (ellipses), and recursive macro calls are not allowed. All macros must expand into complete syntactic units. The use of conditional compilation directives is often also dubious, but cannot always be avoided. This means that there should rarely be justification for more than one or two conditional compilation directives even in large software development efforts, beyond the standard boilerplate that avoids multiple inclusion of the same header file. Each such use should be flagged by a tool-based checker and justified in the code.
  9. The use of pointers should be restricted. Specifically, no more than one level of dereferencing is allowed. Pointer dereference operations may not be hidden in macro definitions or inside typedef declarations. Function pointers are not permitted.
  10. All code must be compiled, from the first day of development, with all compiler warnings enabled at the compiler’s most pedantic setting. All code must compile with these setting without any warnings. All code must be checked daily with at least one, but preferably more than one, state-of-the-art static source code analyzer and should pass the analyses with zero warnings.

About these rules, here’s what NASA has to say:

The rules act like the seat-belt in your car: initially they are perhaps a little uncomfortable, but after a while their use becomes second-nature and not using them becomes unimaginable.

Anúncios

Biblioteca para usar o gnuPlot a partir de um programa em C

gnuplot_demo
Exemplo de um gráfico feito pelo gnuplot.

Para quem pensa em usar o gnuplot( programa para gerar gráficos matemáticos) a partir de programas em C, achei essa biblioteca bem interessante, ainda não testei mas não deve ser complicado de utilizar.

Só um aviso, essa biblioteca funciona em Sistemas Operacionais com o padrão POSIX ( Unix, Linux, MacOS) , para quem usa o windows , tem que baixar um compilador que de suporte, de um pulo no link que tem mais informações por lá.

http://ndevilla.free.fr/gnuplot/

Alunos da USP criam sistema que corrige exercícios de programação em segundos

Agência FAPESP – Dois alunos do Instituto de Ciências Matemáticas e de Computação (ICMC) da tumblr_inline_nlzbxf19OT1r1azxg_400Universidade de São Paulo (USP), em São Carlos, Felipe Duarte e Fábio Sikansi, criaram um sistema de submissão e correção automática de trabalhos de programação denominado Run.codes.
A ferramenta possibilita que os estudantes cadastrem on-line os trabalhos de programação realizados e aguardem alguns segundos até que o resultado da correção apareça. “Nossa ideia foi fazer um sistema eficaz para que o professor pudesse gerir efetivamente o trabalho realizado em uma sala de aula”, explicou Duarte, doutorando do ICMC.
Com o Run.codes, o tempo médio de correção para um trabalho considerado extenso gira em torno dos 30 segundos. “O tempo de correção é muito menor e o sistema ainda permite que o professor abra o código do estudante e verifique o que ele errou”, avalia Moacir Ponti Júnior, professor do ICMC, que utilizou o sistema no semestre passado nas disciplinas Programação orientada a objetos e Introdução à ciência da computação II.

Continuar lendo “Alunos da USP criam sistema que corrige exercícios de programação em segundos”

Meu kit de desenvolvimento de software do dia a dia

Conjunto de 10 ferramentas do dia a dia , as que mais utilizo para desenvolvimento de software, ainda tem outras mas essa pequena lista já é bem representativa  🙂 , se você tem outras sugestões de aplicativos comente no post .

1 – Java 
Principal linguagem que utilizo( vocês já devem ter percebido pelos posts : -)  ) , apresar de vez em quando usar o C/C++ , bash e mais recentemente o ruby …

Java SE – Downloads | Oracle Technology Network | Oracle

2 – IDE : Netbeans 

Pra mim ainda é a mais completa apresar de reconhecer que o eclipse em muitas maquinas roda bem mais rápido , prefiro o netbeans pelo conjunto de ferramentas integradas, e no geral não preciso configurar nada , estou ficando preguiçoso de ter que mexer , configurar e fuçar tutoriais para que as coisas funcionem … em fim , vou de Netbeans .

Welcome to NetBeans Continuar lendo “Meu kit de desenvolvimento de software do dia a dia”

Melhores linguagens de programação ou Linguagens mais populares

O IEEE Spectrum montou um survey para pesquisar quais seriam as linguagens mais utilizadas pela comunidade de desenvolvimento de software. A pesquisa utilizou 10 fontes de informação para a pesquisa:

  • search results in Google 
  • data from Google Trends 
  • tweets sent on Twitter 
  • GitHub repositories 
  • StackOverflow questions 
  • Reddit posts 
  • Hacker News posts 
  • demand for jobs on the Career Builder job site 
  • demand for jobs on the Dice job site 
  • IEEE Xplore journal articles 

As linguagens forma categorizadas como: web, mobile, enterprise e embedded, veja o resultado abaixo:

IEEE Spectrum All Languages Top 20

  1. Java 
  2. C++ 
  3. Python 
  4. C# 
  5. PHP 
  6. JavaScript 
  7. Ruby 
  8. MATLAB 
  9. Perl 
  10. SQL 
  11. Assembly 
  12. HTML 
  13. Visual Basic 
  14. Objective-C 
  15. Scala 
  16. Shell 
  17. Arduino 
  18. Go
    image

    Source: IEEE Spectrum’s 2014 Ranking

    IEEE Spectrum Web Top 10

    1. Java 
    2. Python 
    3. C# 
    4. PHP 
    5. JavaScript 
    6. Ruby 
    7. Perl 
    8. HTML 
    9. Scala 
    10. Go 

    IEEE Spectrum Mobile Top 10

    1. Java 
    2. C++ 
    3. C# 
    4. JavaScript 
    5. Objective-C 
    6. Scala 
    7. Delphi 
    8. Scheme 
    9. ActionScript 

    Coisas estranhas

    Algumas coisas causam estranheza e discussão nessa pesquisa:
    Python é classificada como ‘web’ e ‘enterprise’ enquanto que PHP e Ruby são só ‘web’?
    Sim, HTML não é uma linguagem mas é classificada como apenas ‘web’ e de alguma forma ela vem depois de SQL, Perl e até mesmo Assembly?
    O C# mobile development fica realmente acima do uso de JavaScript e Objective-C? E quem anda criando “phone apps” in Scala, Delphi e Scheme?

    De qualquer maneira é um indicador centrado no mercado norte americano e com fonte baseada em uso acadêmico , é bom comparar esses resultados com o índice TIOBE.

    Fonte:Sitepoint

    Blog no WordPress.com.

    Acima ↑