Executando verificação de segurança...
6

A Essência do Software.

Queria aqui compratilhar um artigo que eu li no Medium que achei muito interessante.

Esse artigo tenta explicar a natureza do Software. Ele diz que muitas pessoas, até mesmo engenheiros de software, não sabem o que exatamente é software.

Uma pessoa que cria software é um programador de computador, um desenvolvedor de software, um engenheiro de software ou um codificador? Existe realmente uma diferença? Isso é antes mesmo de falarmos sobre ser um cientista da computação ou cientista de dados.

Afinal, o que é um software? um programa de computador, código, sistema, aplicativo ou aplicativo? São tantos nomes, para a mesma coisa, que às vezes é até difícil escrever sobre isso e ser consistente.

Ainda segundo ele, software são instruções para computadores fazerem coisas. Porém o que são computadores? e como são essas instruções?

Em certa parte ele cita uma coisa que me fez refletir bastante:

O software está vivo. Isso soa bastante constrangedor, mas é a coisa mais próxima que consigo pensar. Alguns softwares podem ser como uma coisa viva. Nasce, depois cresce e muda. Partes dele às vezes morrem e são substituídas. Com o tempo, toda a base de código pode ser diferente do que era originalmente, mas ainda é o mesmo software. Assim como você e eu.

O artigo é bastante esclarecedor e a partir dele eu fiquei sabendo que coisas que eu pensava serem simples, na verdade, são bem mais complexas e têm toda uma filosofia por trás.

Carregando publicação patrocinada...
4

Pegando o eixo que você falou que o software cresce, muda, morre e são substítuidos. Acredito que ele funcione de forma similar a "Dialética", apesar de ser algo relacionado a filosofia o desenvolvimento FUNCIONA DA MESMA FORMA: duas coisas opostas ou que são realizadas de formas diferentes, quando debatidas, formam uma coisa nova que na grande parte das vezes é muito melhor que a antiga (fazendo com que muitas coisas aconteçam por baixo dos panos, e tá tudo bem).

Isso era algo que eu comecei a refletir esses dias após ter feito uma aula sobre linguagens de baixo nível e alto nível. As linguagens de alto nível são provenientes das de baixo nível, grosseiramente falando, porém as de alto nível ela realiza as mesmas coisas (sem entrar em detalhes técnicos), de modo que a construção do software seja mais rápido e que atenda aos mesmos requisitos que a de baixo nível.

E isso é o que um engenheiro de software faz. Resolve problemas, otimiza perfomance e aumenta produtividade. Então aquela coisa de escrever 010101, já passou, assim como também vai passar os comandos que a gente realiza hoje.

Pare para olhar, o tanto de framework que vem surgindo... Até momentos anteriores a gente tinha que fazer requisição no banco para realizar um CRUD, hoje em dia a gente tem os ORM's, até momentos anteriores a gente tinha que alocar memória e desalocar memória, hoje em dia existem linguagens que nem precisa mais realizar isso (apesar de existirem no mercado algumas que ainda necessitam disso).

Mas de modo geral, eu acredito que a essência do software é continuar aprimorando funcionalidades que já existem, de modo que aumente nossa produtividade, remova os antigos de modo de realizar, e tá tudo bem! Não há problema nenhum em acontecer coisas por baixo dos panos como muita gente fala, desenvolvemos, para atender o mercado que a cada dia ta pedindo mais velocidade e qualidade.

3

Software segundo a definição da ISO é muito mais que "instruções para computadores fazerem coisas"

Infraestrutura, dados, documentação, suporte e tudo mais que é necessario para estas "instruções" serem executadas também fazem parte do software. O codígo é so um pedacinho do software.