fbpx

27 fev
Brasil precisa fazer mais para crescer o uso da Inteligência Artificial

O estudo também faz recomendações para fomentar a participação de mulheres em carreiras de tecnologia e estímulo a startups

 

Para analisar se o Brasil está preparado para alcançar os potenciais benefícios trazidos pela Inteligência artificial, a consultoria americana DuckerFrontier, a pedido da Microsoft, elaborou o Índice de Preparação para a IA (AI Readiness Index), um indicador que cruza as variáveis de desenvolvimento e disseminação da IA e une todos os fatores relacionados à sua implementação. Na análise, foram considerados sete países da América Latina: Brasil, México, Chile, Colômbia, Peru, Argentina e Costa Rica.

De acordo com o índice, o Brasil está em uma posição que pode melhorar para acelerar a adoção de IA em relação à outros países na região, como o Chile, o México, e a Colômbia, conforme mostra o pilar de “Desenvolvimento e Disseminação de IA” do índice. Neste pilar, o Brasil está bem posicionado nos quesitos cibersegurança e ecossistema tecnológico, figurando na segunda posição em ambos. Já em capital humano e ambiente de inovação, o país está em posição desfavorável, ocupando o 7º e o 6º lugares, respectivamente.

O estudo destaca ainda cinco categorias que deveriam ser priorizadas para o desenvolvimento de IA no país: governo, serviços públicos e governança; educação, habilidades e capacitação; pesquisa, inovação e desenvolvimento; infraestrutura de tecnologia; e ética, regulamentação e legislação. É citado como exemplo a necessidade de um amplo compromisso do governo em liderar o desenvolvimento de uma estratégia nacional de IA aliado com o envolvimento do setor privado, da academia e da sociedade civil.

Alguns passos previstos na pesquisa para que o governo prepare o país para essa transformação de forma ética, transparente e com um impacto positivo na sociedade são investir no poder da computação em nuvem, criação de um banco de dados nacional para uso público e privado, criação de um Centro Nacional de Pesquisa em Inteligência Artificial, uso de IA na prestação de serviços públicos, inclusão de habilidades relevantes para a IA no sistema educacional como inteligência computacional e treinamento digital para servidores públicos. Além disso, o estudo também faz recomendações para fomentar a participação de mulheres em carreiras de tecnologia e estímulo a startups.

O levantamento foi divulgado na segunda edição do AI + Tour, evento da Microsoft que percorre oito países da América Latina, incluindo o Brasil, para apresentar como a Inteligência Artificial (IA) já é uma das principais alavancas de transformação digital e  o potencial da IA no futuro dos negócios e da sociedade.

Com uma apresentação sobre como a  evolução da IA vai modificar a sociedade em que vivemos, Tim O’Brien, diretor geral de programas de IA da Microsoft, ressaltou a importância de desenvolver essa tecnologia de forma transparente, ética e responsável. “A IA tem potencial para nos ajudar a resolver alguns dos maiores desafios do mundo. A oportunidade é significativa, mas o design, o desenvolvimento e o uso responsáveis ​​são igualmente importantes. A tecnologia e as ciências sociais devem andar lado a lado para garantir um impacto positivo nas pessoas e na sociedade”, diz O’Brien.

As simulações, que consideram as áreas de serviços públicos, prestação de serviços corporativos, comércio varejista, atacadista, hotelaria e alimentação, construção, manufatura, mineração, água e energia, e agricultura e pesca, mostram que a adoção máxima de IA no país pode aumentar a taxa composta anual de crescimento (CAGR) do Produto Interno Bruto (PIB) para 7,1% ao ano até 2030, considerando um cenário de máximo impacto pelos benefícios da IA. Esse é um aumento superior à projeção de 2,9% de crescimento do PIB feita pelo Banco Mundial e pelo Fundo Monetário Internacional (FMI) no mesmo período.

Segundo o estudo, o maior avanço do PIB viria acompanhado ainda de um crescimento até quatro vezes maior nos níveis de produtividade do país, podendo chegar a uma taxa composta anual de crescimento de até 7% ao ano no período até 2030, comparada a 1,7% de crescimento ao ano estimado pelo Banco Mundial e pelo FMI.

Fonte: Convergência Digital 

11 fev
A tecnologia que pode ajudar a desmascarar imagens falsas

O projeto da Jigsaw reúne as capacidades de sete desenvolvedores diferentes, compondo um “kit de análise” bem mais completo.

TECNOLOGIA POSSIBILITA CHECAR FOTOS, MAS AINDA NÃO CONSEGUE EXAMINAR VÍDEOS

Entre as muitas informações falsas que circularam durante as eleições de 2018, a maior parte trazia imagens como “prova”. Por exemplo, as fotografias de boletins de urnas que mostravam o candidato Fernando Haddad com quase 10 mil votos enquanto Jair Bolsonaro tinha zero votos, indicando uma suposta fraude eleitoral.

Uma nova ferramenta anunciada nos Estados Unidos junta diversas tecnologias desenvolvidas em diferentes centros de pesquisa para tornar mais eficiente a detecção de imagens manipuladas. Segundo a Jigsaw, uma incubadora de tecnologia do Google, trata-se de uma solução “avançada” para um mundo em que a criação de conteúdo enganoso é cada vez mais sofisticada.

A iniciativa se chama Assembler. Segundo o texto de apresentação, existem muitas ferramentas que conseguem examinar um aspecto específico de uma imagem, mas que têm alcance limitado por causa disso.

Por exemplo: o software que percebe nuances de brilho que podem indicar uma sobreposição de imagens não consegue captar inconsistências em grupos de pixels (um pixel é a menor unidade de uma imagem; uma fotografia é formada por milhares ou milhões de pixels).

O projeto da Jigsaw reúne as capacidades de sete desenvolvedores diferentes, compondo um “kit de análise” bem mais completo. O Assembler ainda está em fase de testes, realizados com organizações jornalísticas em diferentes países. A empresa não planeja disponibilizar a ferramenta para o público.

As tecnologias usadas

Uma das ferramentas incluídas no projeto é um programa que detecta o uso na imagem de uma tecnologia de deepfake chamada StyleGAN. Essa tecnologia usa a inteligência artificial para gerar novos rostos humanos a partir de características de rostos de pessoas existentes. Os resultados são realistas ao extremo.

Outro recurso incorporado no Assembler é um algoritmo que analisa os “patches” (grupos de pixels) de uma imagem para determinar se algum deles foi copiado e colado em outra parte da foto, com o objetivo de cobrir algum elemento que se desejava remover.

IMAGEM MANIPULADA SIMULA ENCONTRO DO EX-PRESIDENTE AMERICANO BARACK OBAMA COM O PRESIDENTE DO IRÃ, HASSAN ROUHANI

Diferenças de contraste ou divisões pouco naturais são o alvo de outra tecnologia que faz parte da iniciativa de checagem do Google. Nesse caso, a inteligência artificial se vale dos valores cromáticos da imagem, ou seja, os graus de luminosidade ou escuridão encontrados.

Desafios do projeto

O projeto consegue dar conta de algumas das técnicas existentes para modificação de fotos, mas não de todas. Ele também, inicialmente, existe como plataforma separada de redes sociais como o Facebook, local de intensa circulação de conteúdo fake.

Outra limitação é que esse tipo de análise ainda não pode ser realizada em conteúdo de vídeo. Atualmente, a manipulação de imagens em movimento é a “vanguarda” do conteúdo fraudulento das deepfakes. Em 2019, um vídeo que coloca frases na boca do fundador do Facebook, Mark Zuckerberg, evidenciou o nível de sofisticação disponível atualmente.

Outra categoria de deepfake, em que um rosto é enxertado em outro corpo, são motivo de preocupação do Departamento de Defesa dos Estados Unidos desde 2018. O órgão criou um software de análise de vídeos que consegue detectar pistas sutis em imagens manipuladas.

Fonte: Nexo Jornal 

07 fev
Explicando Machine Learning de forma simplificada

Você provavelmente já ouviu falar de Machine Learning e inteligência artificial , mas tem certeza de que sabe o que são? Se você está lutando para entendê-las, não está sozinho. Há muita agitação que torna difícil dizer o que é ciência e o que é ficção científica. Começando com os próprios nomes…

Graças às novas tecnologias computacionais, o machine learning de hoje não é como o machine learning do passado. Ele nasceu do reconhecimento de padrões e da teoria de que computadores podem aprender sem serem programados para realizar tarefas específicas; pesquisadores interessados em inteligência artificial queriam saber se as máquinas poderiam aprender com dados.

O aspecto iterativo do Machine Learning é importante porque, quando os modelos são expostos a novos dados, eles são capazes de se adaptar independentemente. Eles aprendem com computações anteriores para produzir decisões e resultados confiáveis, passíveis de repetição. Isso não é uma ciência nova – mas uma ciência que está ganhando um novo impulso.

O aprendizado de máquina é um rotulador de coisas, essencialmente

Ao contrário da crença popular, o Machine Learning não é uma caixa mágica de mágica, nem é o motivo de US $ 30 bilhões em financiamento de VC. Na sua essência, o aprendizado de máquina é apenas um rotulador de coisas , pegando sua descrição de algo e dizendo qual rótulo ele deve receber.

O que parece muito menos interessante do que você lê no Hacker News. Mas você ficaria empolgado o suficiente para ler sobre esse tópico se o chamamos de rotulagem de coisas em primeiro lugar? Provavelmente não, o que mostra que um pouco de marketing e deslumbramento podem ser úteis para obter dessa tecnologia a atenção que ela merece (embora não seja pelas razões que você imagina).

É fenomenalmente útil, mas não tão ficção científica quanto parece

E a inteligência artificial (IA)? Enquanto os acadêmicos discutem sobre as nuances do que a IA é ou não , a indústria está usando o termo para se referir a um tipo específico de Machine Learning. De fato, na maioria das vezes as pessoas as usam de forma intercambiável, e eu posso viver com isso. Então, a IA também é sobre rotulagem de coisas.

 Você estava esperando robôs ? Algo de ficção científica com uma mente própria, algo humanóide? Bem, a IA de hoje não é isso. Mas somos uma espécie que vê traços humanos em tudo. Vemos rostos em torradas, corpos em nuvens, e se eu costurar dois botões em uma meia, posso acabar falando com ela. Esse fantoche de meia não é uma pessoa, e nem a IA – é importante ter isso em mente. Isso é uma decepção? Queixo para cima! A coisa real é muito mais útil.

Deixe-me mostrar por que você deveria estar animado. O que você vê na foto?

Que tipo de animal é esse? Calma, né? Agora me diga o que seu cérebro fez com esses pixels para obter essa resposta.

Você acabou de captar alguns dados bastante complexos através de seus sentidos e, como se por mágica, você o rotulou de ‘gato’. Isso foi tão fácil para você! Que tal se quiséssemos que um computador fizesse a mesma tarefa, classificasse (rotulasse) as fotos como gato / não gato?

O Machine Learning é um novo paradigma de programação, uma nova maneira de comunicar seus desejos a um computador

Na abordagem tradicional de programação, um programador pensaria muito sobre os pixels e os rótulos, se comunicaria com o universo, inspiraria os canais e, finalmente, criaria um modelo. Um modelo é apenas uma palavra chique para receita ou um conjunto de instruções que seu computador precisa seguir para transformar pixels em etiquetas.

Um modelo é uma receita que um computador usa para transformar dados em etiquetas. São apenas alguns códigos que a máquina usa para converter entradas em saídas e podem ser artesanais por um programador ou aprendidos com os dados por um algoritmo.

Mas pense sobre quais seriam essas instruções. O que você está realmente fazendo com esses pixels? Você pode expressar isso? Seu cérebro teve o benefício de eras da evolução e agora simplesmente funciona, você nem sabe como funciona. Essa receita é bem difícil de encontrar.

Explique com exemplos, não instruções

Não seria melhor se você pudesse simplesmente dizer ao computador: “Aqui, veja vários exemplos de gatos, veja vários exemplos de não-gatos e descubra você mesmo”? Essa é a essência do Machine Learning. É um paradigma de programação completamente diferente.

Agora, em vez de fornecer instruções explícitas, você programa com exemplos e o algoritmo de Machine Learning encontra padrões nos seus dados e os transforma nessas instruções que você não poderia escrever por conta própria. Não há mais artesanato de receitas!

AI permite automatizar o indescritível 

Por que isso é emocionante? Trata-se de expressar nossos desejos aos computadores de uma maneira que não podíamos antes. Adoramos fazer com que os computadores façam coisas para nós. Mas como podemos dar instruções se as instruções são realmente difíceis de pensar? Se eles são inefáveis?

IA e Machine Learning são sobre como automatizar o indescritível. Eles se explicam usando exemplos em vez de instruções. Isso desbloqueia uma enorme classe de tarefas com as quais não conseguimos obter computadores para nos ajudar no passado, porque não conseguimos expressar as instruções. Agora todas essas tarefas se tornam possíveis – o Machine Learning representa um salto fundamental no progresso humano. É o futuro e o futuro está aqui!

Evolução do machine learning

Graças às novas tecnologias computacionais, o machine learning de hoje não é como o machine learning do passado. Ele nasceu do reconhecimento de padrões e da teoria de que computadores podem aprender sem serem programados para realizar tarefas específicas; pesquisadores interessados em inteligência artificial queriam saber se as máquinas poderiam aprender com dados.

O aspecto iterativo do Machine Learning é importante porque, quando os modelos são expostos a novos dados, eles são capazes de se adaptar independentemente. Eles aprendem com computações anteriores para produzir decisões e resultados confiáveis, passíveis de repetição. Isso não é uma ciência nova – mas uma ciência que está ganhando um novo impulso.

Embora diversos algoritmos de machine learning existam há muito tempo, a capacidade de aplicar cálculos matemáticos complexos ao big data automaticamente – de novo e de novo, mais rápido e mais rápido – é um desenvolvimento recente. Eis alguns exemplos bem conhecidos de aplicações de machine learning, dos quais você já deve ter ouvido falar:

  • Os carros autônomos super esperados do Google? A essência do machine learning;
  • Ofertas recomendadas como as da Amazon e da Netflix? Aplicações de machine learning para o dia-a-dia;
  • Saber o que seus clientes estão falando de você no Twitter? Machine learning combinado com criação de regras linguísticas;
  • Detecção de fraudes? Um dos usos mais óbvios e importantes de machine learning no mundo de hoje.

Qual a importância do machine learning?

O interesse renovado no Machine Learning se deve aos mesmos fatores que tornaram a mineração de dados e a análise Bayesiana mais populares do que nunca: coisas como os crescentes volume e variedade de dados disponíveis, o processamento computacional mais barato e poderoso, o armazenamento de dados acessível etc.

Tudo isso significa que é possível produzir, rápida e automaticamente, modelos capazes de analisar dados maiores e mais complexos, e entregar resultados mais rápidos e precisos – mesmo em grande escala. E ao construir modelos precisos, uma organização tem mais chances de identificar oportunidades lucrativas – ou de evitar riscos desconhecidos.

O que é preciso para criar bons sistemas de machine learning?

  • Capacidade de data preparation;
  • Algoritmos – básicos e avançados;
  • Processos automatizados e iterativos;
  • Escalabilidade;
  • Modelagem conjunta.

 

Fonte: Wired e Blog SAS

30 jan
7 habilidades de programadores altamente eficazes

Existem muitas habilidades técnicas que um engenheiro de software deve dominar, mas outras apenas com a experiência do dia a dia no mercado de trabalho podem desenvolver. Vamos te dizer sete delas para você se tornar um profissional ainda mais preparado.

1. Aprenda a ler o código de outras pessoas

É uma grande habilidade, que possui vários benefícios,  poder seguir o código de outras pessoas.

Não importa o quão confuso ou mal pensado seja o código de um engenheiro anterior, você ainda precisa ser capaz de percorrê-lo. Afinal, é o seu trabalho. Mesmo quando você era esse engenheiro um ano antes.

Essa habilidade o beneficia de duas maneiras. Por um lado, poder ler o código de outras pessoas é uma ótima chance de aprender o que é um design ruim. Enquanto você olha o código de outras pessoas, aprende o que funciona e o que não funciona. Mais importante, você aprende que tipo de código é fácil para outro engenheiro seguir e que código é difícil de seguir.

Você precisa garantir o máximo possível de leitura ao ler o código de outras pessoas. Dessa forma, outros engenheiros entendem o quanto você é um engenheiro superior.

Lembre-se de mencionar a importância do código de manutenção e bons comentários. Isso mostra ainda mais seu domínio na área de programação.

Seu código deve ser tão bem projetado que não requer documentação. De fato, você não deve documentar nenhum código, se for um bom programador. Isso é apenas uma perda de tempo e você precisa gastar seu tempo codificando e em reuniões.

Ser capaz de ler o código confuso de outras pessoas também facilita a atualização quando necessário. Ocasionalmente, isso significa atualizar o código em que você não possui experiência. Por exemplo, uma vez seguimos um script de Powershell a Python e Perl. Tínhamos experiência limitada em Perl, mas ainda tínhamos contexto suficiente para descobrir o que estava acontecendo e fazer as alterações necessárias.

Isso ocorre por ter um entendimento decente de todo o código, além de poder ler os scripts Perl. A leitura do código de outras pessoas o torna valioso porque você pode seguir até sistemas com engenharia excessiva que podem surpreender os outros.

2. Senso para identificar projetos ruins

Existem muitas habilidades que levam tempo para aprender. Uma das habilidades que acreditamos que vale a pena conhecer é entender quais projetos não valem a pena ser realizados e quais são claramente marchas da morte.

As grandes empresas sempre têm muito mais projetos em andamento do que provavelmente jamais serão concluídos ou impactantes. Existem alguns projetos que podem não fazer sentido nos negócios (pelo menos não para você) e outros que são mal gerenciados. Isso não quer dizer que você deva interromper uma ideia quando discordar do projeto. No entanto, se as partes interessadas não puderem explicar adequadamente o que farão com o resultado final, talvez o projeto não valha a pena.

Além disso, alguns projetos podem ser tão focados na tecnologia em vez da solução que pode ficar claro desde o início que não haverá muito impacto. Essa habilidade requer muitos projetos ruins antes que você tenha uma idéia do que realmente é um projeto ruim. Portanto, não gaste muito tempo cedo tentando discernir cada projeto.

Em algum momento de sua carreira, você terá apenas um bom senso.

3. Evitando reuniões

Seja você um engenheiro de software ou cientista de dados, as reuniões são uma necessidade, porque você precisa estar na mesma página com seus gerentes de projeto, usuários finais e clientes. No entanto, também há uma tendência para as reuniões assumirem repentinamente toda a sua agenda. É por isso que é importante aprender a evitar reuniões desnecessárias. Talvez uma palavra melhor para usar seja gerenciar e não evitar. O objetivo aqui é garantir que você gaste seu tempo em reuniões que conduzam decisões e ajudam sua equipe a seguir em frente.

O método mais comum é simplesmente bloquear um bloqueio de duas horas todos os dias, que é uma reunião constante. Geralmente, a maioria das pessoas marca uma reunião recorrente em um momento que considera benéfico. Eles usarão isso como um tempo para acompanhar seu trabalho de desenvolvimento.

Outra maneira de evitar reuniões para que você possa realizar o trabalho é aparecer antes de qualquer outra pessoa. Pessoalmente, gostamos de aparecer cedo porque, em geral, o escritório é mais silencioso. A maioria das pessoas que aparece cedo é como você, apenas querendo fazer o trabalho para que ninguém o incomode.

Isso é importante para colaboradores individuais, porque nosso trabalho exige momentos em que nos concentramos e não conversamos com outras pessoas. Sim, há momentos em que você pode resolver problemas em que pode querer trabalhar com outras pessoas. Mas assim que você passar pelos problemas de bloqueio, precisará codificar. É sobre entrar nessa zona em que você está constantemente segurando muitas idéias complexas sobre o trabalho que está fazendo. Se você estiver constantemente parado, pode ser difícil continuar de onde parou.

4. Esteja sempre com dicas de comando Git

Alguns especialistas em CS começaram a usar o Git no dia em que nasceram. Eles entendem todos os comandos e parâmetros e podem fazer círculos em torno dos profissionais.

Outros experimentam o Git pela primeira vez no primeiro emprego. Para eles, o Git é um cenário infernal de comandos e processos confusos. Eles nunca têm 100% de certeza do que estão fazendo (há uma razão pela qual as folhas de dicas são populares).

Não importa qual sistema de repositório sua empresa use, o sistema será útil se você o usar corretamente e um obstáculo se for usado incorretamente. Não é preciso muito esforço para se transformar em você gastando horas tentando desembaraçar alguma mistura de vários galhos e garfos. Além disso, se você esquecer constantemente de obter a versão mais recente do repositório, também estará lidando com conflitos de mesclagem que nunca são divertidos.

Se você precisar manter uma folha de dicas de comando Git, faça-o. O que quer que torne sua vida mais simples.

 

5. Escreva códigos de simples manutenção

Uma tendência que os engenheiros mais jovens podem ter é tentar implementar tudo o que sabem em uma solução. Existe esse desejo de entender sua programação orientada a objetos, estruturas de dados, padrões de design e novas tecnologias e usar tudo isso em cada pedaço de código que você escreve. Você cria uma complexidade desnecessária porque é muito fácil anexar-se excessivamente a uma solução ou padrão de design que você usou no passado.

Há um equilíbrio com conceitos de design complexos e código simples. Padrões de design e design orientado a objetos devem simplificar o código no grande esquema das coisas. No entanto, quanto mais um processo é abstraído, encapsulado e com caixa preta, mais difícil pode ser a depuração.

 

6. Aprenda a dizer não e priorize

Isso vale para qualquer função, seja você um analista financeiro ou um engenheiro de software. Mas, em particular, os papéis da tecnologia parecem ter todos precisando de algo deles. Se você é um engenheiro de dados, provavelmente será solicitado a fazer mais do que apenas desenvolver pipelines. Algumas equipes precisarão de extrações de dados, outras precisarão de painéis e outras precisarão de novos pipelines para seus cientistas de dados.

Agora, priorizar e dizer não podem realmente ser duas habilidades diferentes, mas elas estão intimamente ligadas. Priorizar significa que você gasta apenas um tempo de alto impacto para a empresa. Considerando que dizer não às vezes significa apenas evitar o trabalho que deve ser tratado por uma equipe diferente. Eles geralmente acontecem em conjunto para todas as funções.

Essa pode ser uma habilidade difícil de adquirir, pois é tentador aceitar todos os pedidos apresentados em seu caminho. Especialmente se você for direto para a faculdade. Você quer evitar decepcionar alguém e sempre recebeu uma quantidade considerável de trabalho.

Nas grandes empresas, há sempre uma quantidade infinita de trabalho. A chave é apenas assumir o que pode ser feito.

Existem muitas habilidades que não são testadas em entrevistas ou mesmo sempre ensinadas em faculdades. Muitas vezes, isso é mais uma limitação do ambiente do que uma falta de desejo de expor os alunos a problemas que existem em ambientes reais de desenvolvimento.

7. Design de Operação

Uma habilidade que é difícil de testar em uma entrevista e difícil de replicar quando você está fazendo cursos na faculdade é pensar em como um usuário final pode usar seu software incorretamente. Costumamos fazer referência a isso como pensar em cenários operacionais.

No entanto, essa é apenas uma maneira educada de dizer que você está tentando falsificar código de prova.

Por exemplo, como grande parte da programação é de manutenção, muitas vezes significa alterar código altamente confuso com outro código. Mesmo uma alteração simples requer o rastreamento de todas as referências possíveis de um objeto, método e / ou API. Caso contrário, pode ser fácil quebrar acidentalmente os módulos que você não percebe que estão conectados. Mesmo se você estiver apenas alterando um tipo de dados em um banco de dados.

Também inclui pensar em casos extremos e pensar em todo um projeto de alto nível antes de iniciar o desenvolvimento.

Quanto aos casos mais complexos em que você está desenvolvendo novos módulos ou microsserviços, é importante dedicar seu tempo e refletir sobre os cenários operacionais do que você está construindo. Pense em como os usuários futuros podem precisar usar seu novo módulo, como eles podem usá-lo incorretamente, quais parâmetros podem ser necessários e se existem maneiras diferentes de um futuro programador precisar do seu código.

Simplesmente codificar e programar é apenas parte do problema. É fácil criar software que funcione bem no seu computador. Mas há várias maneiras de implantar código pode dar errado. Uma vez em produção, é difícil dizer como o código será usado e que outro código será anexado ao seu código original. Daqui a cinco anos, um futuro programador pode ficar frustrado com as limitações do seu código.

 

14 jan
A parcialidade dos algoritmos

Como a inteligência artificial absorve padrões discriminatórios e o que a ciência pode fazer para evitar essas distorções

ALGORITMO DO YOUTUBE CONDUZ A CONTEÚDOS CADA VEZ MAIS EXTREMISTAS, SOBRETUDO À DIREITA NO ESPECTRO POLÍTICO

Alguns algoritmos de inteligência artificial (IA) são desenvolvidos para aprender a reconhecer a música preferida do usuário, o gênero de filmes que lhe interessa, os assuntos que busca no jornal. O objetivo desse tipo de programação é identificar padrões – e, assim, automatizar decisões e facilitar a vida das pessoas. No entanto, por serem feitos para assimilar modelos de comportamento, os algoritmos também podem replicar atitudes que reforçam o racismo, a misoginia e a homofobia. Absorvem, reproduzem e, como resultado, robustecem a discriminação e a intolerância nas mais variadas formas.

Em agosto deste ano, um estudo realizado por pesquisadores da Universidade Federal de Minas Gerais (UFMG) apresentou um exemplo tão contundente desse círculo vicioso que repercutiu em diversas publicações da imprensa internacional: um processo de radicalização política no YouTube no contexto norte-americano, onde o algoritmo de recomendação tem um importante papel. “Já havia pesquisas qualitativas e reportagens que mostravam o YouTube como um terreno fértil para a proliferação de comunidades obscuras vinculadas à chamada alt-right [direita alternativa] norte-americana, cujas ideias são intimamente relacionadas à supremacia branca”, diz o cientista da computação Manoel Horta Ribeiro, atualmente doutorando na Escola Politécnica Federal de Lausanne (EPFL), na Suíça. No mestrado na UFMG, sob orientação dos cientistas da computação Wagner Meira Jr. e Virgílio Almeida, ele queria entender como esse fenômeno acontecia.

O grupo vasculhou 331.849 vídeos de 360 canais de diferentes orientações políticas e rastreou 79 milhões de comentários. Um volume imenso de dados, tratável justamente graças a recursos de inteligência artificial. “O único trabalho manual foi a classificação dos canais conforme a orientação política, utilizando estudos e dados de ONGs [Organizações Não Governamentais] como a ADL [Anti-Defamation League]”, diz Ribeiro. Os resultados revelaram que os canais supremacistas brancos são beneficiados pela migração de apreciadores de canais politicamente conservadores de conteúdo menos radical. “Rastreamos a trajetória dos usuários que comentavam vídeos de canais conservadores e descobrimos que, com o passar do tempo, eles comentavam vídeos dos canais mais radicais. Havia uma migração consistente dos conteúdos mais leves para os mais extremos”, lembra Ribeiro. “Ainda estamos tentando entender o porquê dessa migração, mas acho que três razões podem explicar o fenômeno: o formato da mídia, na qual todos podem criar conteúdo e na qual os espectadores interagem muito diretamente com os criadores; o atual cenário político mundial; e o algoritmo, que permite que usuários encontrem ou continuem a consumir conteúdo extremista por meio do sistema de recomendação.”

As pesquisas envolvendo o YouTube vêm se tornando mais relevantes nos últimos anos. Segundo o cientista da computação Virgílio Almeida, professor emérito do Departamento de Ciência da Computação da UFMG, a plataforma de vídeos já se mostrou muito interessante para a ciência. “O número de usuários é enorme – mais de 2 bilhões no mundo e 70 milhões no Brasil –, assim como seu impacto na sociedade”, diz o pesquisador. Seu departamento se tornou um verdadeiro celeiro de pesquisas sobre o fenômeno das redes sociais.

Com experiência anterior em análise de desempenho de sistemas computacionais, Almeida começou a se dedicar às redes sociais em 2007. Em uma sociedade cada vez mais conectada, o número e a abrangência dos estudos nesse campo cresceu. “Além dos alunos de computação, tive estudantes de economia, psicologia e letras. Entre os colaboradores mais recentes alguns são do direito, da administração e das ciências políticas”, enumera Almeida.

Os estudos que tiveram maior repercussão vieram do campo político – polarizado tanto nos Estados Unidos quanto no Brasil. Em 2018, uma análise de discurso de ódio e discriminação em vídeos postados no YouTube por grupos de direita norte-americanos teve destaque na International ACM Conference on Web Science, na Holanda. O trabalho foi reconhecido como o melhor feito por estudantes: os alunos de doutorado Raphael Ottoni, Evandro Cunha, Gabriel Magno e Pedro Bernardina – todos do grupo de Wagner Meira Jr. e Virgílio Almeida.

Para investigar as falas transcritas dos YouTubers e os comentários postados nos vídeos, os pesquisadores da UFMG utilizaram as ferramentas Linguistic Inquiry Word Count (LIWC) e Latent Dirichlet Allocation (LDA). O LIWC permite a classificação de palavras em categorias correspondentes à estrutura das frases (pronomes, verbos, advérbios etc.) e ao conteúdo emocional (se expressam alegria, tristeza, raiva etc.). O LDA busca palavras que possam definir os principais tópicos de uma conversa.

“Utilizamos também uma ferramenta baseada em um teste psicológico para observar o viés dessas postagens”, explica Raphael Ottoni. Segundo ele, a ferramenta se baseia na comparação das distâncias entre palavras situadas em um mesmo contexto, com o fim de estabelecer associações. Isso é feito por meio de técnicas de aprendizado de máquina que convertem as palavras de um texto em vetores de números, por sua vez usados para calcular a similaridade semântica das palavras. Assim, em um determinado assunto, palavras que se situam mais próximas tendem a estabelecer entre si uma associação de significado. “Palavras como cristianismo apareciam no texto associadas com atributos de valor positivo, como bom ou honesto, enquanto islamismo era frequentemente relacionada a terrorismo e morte”, diz Ottoni. Semelhante tendência preconceituosa foi encontrada nas referências a comunidades LGBTQI+.

Essas técnicas foram, então, aplicadas à conjuntura brasileira. Os pesquisadores estudaram vídeos publicados no YouTube durante o período de eleições presidenciais de 2018, em 55 canais identificados com posições políticas desde a extrema esquerda até a extrema direita. Mensagens de ódio e teorias conspiratórias foram identificadas com mais frequência nos canais de extrema direita – e foram justamente esses que tiveram maior crescimento no número de visualizações, possivelmente influenciando o resultado das urnas.

O grupo de pesquisadores está agora finalizando um artigo sobre os resultados dessa análise. Mas, antes mesmo da publicação, o estudo foi citado por uma reportagem do jornal The New York Times, que fez uma série sobre a influência do YouTube em diferentes países, com destaque para o Brasil.

 

FOTO: LÉO RAMOS CHAVES/FAPESP

MECANISMOS DE BUSCA E REDES SOCIAIS REFLETEM E REFORÇAM PRECONCEITOS

Atração perigosa

Segundo Almeida, outras pesquisas já constataram que os algoritmos de recomendação de notícias e vídeos acabam se valendo da atração humana por notícias negativas e teorias conspiratórias para aumentar o engajamento dos usuários com a plataforma. “Uma pesquisa de um grupo do MIT [Instituto de Tecnologia de Massachusetts] publicada na revista científica Science mostra que os medos, as raivas as emoções mais extremas são fatores-chave na disseminação de tweets com falsidades”, destaca.

Da mesma maneira que o algoritmo aprende as músicas e os filmes preferidos do usuário, ele também aprende suas preferências políticas, razão pela qual as plataformas de compartilhamento de conteúdo – como o Facebook – transformam-se em bolhas quase intransponíveis de um determinado espectro político. O usuário recebe apenas as informações que corroboram suas opiniões prévias.

Foi para estudar esse fenômeno – inspirado pelo livro O filtro invisível (Zahar, 2012), do ativista político norte-americano Eli Pariser – que o cientista da computação norte-americano Christo Wilson, da Northeastern University, dos Estados Unidos, entrou no campo das redes sociais, em 2012. “Minhas pesquisas focavam, originalmente, o estudo da personalização dos algoritmos utilizados pelos mecanismos de busca, e desde então tenho expandido para outros tipos de algoritmos e contextos”, disse o pesquisador para Pesquisa FAPESP.

Atualmente em período sabático no Centro Berkman Klein para Internet e Sociedade, da Universidade Harvard, Estados Unidos, onde Almeida atua como professor-associado, Wilson tem acompanhado com interesse os achados dos pesquisadores mineiros. “Gosto muito dos estudos de Virgílio Almeida, Wagner Meira e Fabrício Benevenuto; eles fazem um trabalho incrível nas mídias sociais.” Em 2020, Wilson também pretende se voltar ao campo da política: planeja um grande estudo acerca do impacto das redes sociais nas próximas eleições de seu país. “Vamos monitorar a maioria dos serviços on-line para tentar entender como as pessoas encontram conteúdos e como eles afetam seu comportamento”, adianta.

EM MEIO A UMA PROFUSÃO DE VÍDEOS, É DIFÍCIL FUGIR DE UMA VISÃO PARCIAL

Discriminação algorítmica

A política é apenas um dos muitos temas que têm estimulado pesquisas do Departamento de Ciência da Computação da UFMG. O viés algorítmico pode ser encontrado onde menos se espera – como, por exemplo, nos serviços de assistentes inteligentes de voz do celular. Uma pesquisa realizada em parceria entre a Universidade de Fortaleza (Unifor) e o grupo da UFMG identificou que a eficiência dos assistentes de voz, como Google e Siri, varia conforme o sotaque e o nível de escolaridade.

A cientista da computação Elizabeth Sucupira Furtado, coordenadora do Laboratório de Estudos dos Usuários e da Qualidade em Uso de Sistemas (Luqs) conduziu um estudo qualitativo, em sessões individuais e presenciais, com dois grupos de voluntários: moradores da capital cearense, entre os quais vários nascidos em outros estados, e estudantes de uma classe noturna de Educação de Jovens e Adultos (EJA). “Percebemos que os usuários nascidos nas regiões Sudeste e Sul eram mais compreendidos pelos softwares de assistentes de voz do que os outros”, revela a pesquisadora.

Erros de pronúncia (cacoépia), gagueira ou repetição de palavras e truncamentos (disfluência) também trouxeram prejuízos ao desempenho dos assistentes robóticos. Segundo a pesquisadora, uma vez que o sistema aprende com usuários que têm mais escolaridade, o treinamento dos assistentes de voz tende a se limitar a falas padronizadas. “É importante que as empresas percebam que existe um público que não está sendo atendido”, alerta Furtado. “Essas pessoas continuam excluídas da inovação tecnológica.”

Nos mecanismos de busca também se ocultam preconceitos. Foi o que demonstrou a cientista da computação Camila Souza Araújo em sua dissertação de mestrado pela UFMG, em 2017. Nos buscadores do Google e do Bing, a pesquisadora procurou pelos termos “mulheres bonitas” e “mulheres feias” e constatou um preconceito indiscutível de raça e idade. As mulheres identificadas como bonitas eram, majoritariamente, brancas e jovens. O viés se reproduziu na maioria dos 28 países onde o buscador Bing está presente e 41 países que utilizam o Google, mesmo os situados no continente africano.

A receita do preconceito

Ao utilizar sistemas de aprendizagem de máquina, a sociedade corre o risco de perpetuar preconceitos inadvertidamente, graças ao senso comum que vê a matemática como neutra. Um engenheiro de dados norte-americano, Fred Benenson, cunhou um termo para definir esse risco: mathwashing. Ele se baseou no greenwashing, o uso de estratégias de marketing pelas empresas para simular preocupação ambiental. Da mesma maneira, a ideia de que os algoritmos sejam neutros também beneficia e isenta de responsabilidade as empresas que os utilizam.

Ocorre que os sistemas de inteligência artificial são alimentados por dados, e quem faz a seleção desses dados são seres humanos – que podem ser movidos por preconceitos de forma inconsciente ou intencional. Um exemplo disso foi explicitado por um estudo publicado em outubro na revista Science, liderado por um pesquisador da Faculdade de Saúde Pública da Universidade da Califórnia em Berkeley, nos Estados Unidos. Em um grande hospital daquele país, o grupo norte-americano verificou que o algoritmo responsável por classificar os pacientes mais necessitados de acompanhamento – por estarem em maior risco – privilegiava brancos em detrimento de negros. Isso acontecia porque o sistema se baseava nos pagamentos aos planos de saúde, que são maiores no caso de pessoas que têm mais acesso a atendimento médico, e não na probabilidade de cada um ter doenças graves ou crônicas.

De onde vem o viés

Em um estudo que se tornou referência na área, Solon Barocas, professor de Ética e Política em Ciência de Dados da Universidade Cornell, nos Estados Unidos, e organizador do workshop internacional “Justiça, responsabilidade e transparência na aprendizagem de máquina”, detalhe maneiras de se estabelecer o viés algorítmico

PELA DEFINIÇÃO DO ALVO

Para que a máquina inicie seu aprendizado, ela precisa saber que informações buscar. Por exemplo: se o objetivo é criar um filtro de spam, ela precisa aprender quais são os atributos ou características de uma mensagem que se deseje rotular como spam. Pòde ser o endereço de IP ou determinadas frases do conteúdo (“pílula mágica para perda de peso”, “milhões de dólares para você” etc.)

PELA ESCOLHA DAS AMOSTRAS

O viés ocorre quando o sistema de IA é treinado com dados tendenciosos ou infere dados a partir de amostras enviesadas. Por exemplo: o St. George’s Hospital, no Reino Unido, havia desenvolvido uma ferramenta para classificar candidatos à faculdade de medicina. Mas esse sistema se baseava em exemplos de admissões anteriores, que desfavoreciam mulheres e minorias raciais. O processo automatizado passou a refletir uma discriminação do passado.

PELA COLETA DOS DADOS

O universo de dados pode ser parcial. Por exemplo: o aplicativo Street Bump foi desenvolvido em 2012 pela prefeitura de Boston, nos Estados Unidos, para obter dados sobre as condições das ruas. Os dados, coletados por motoristas voluntários enquando dirigem, fornecem ao governo informações em tempo real para planejar as manutenções necessárias. Como há mais usuários de automóveis e smartphones entre as pessoas mais ricas, bairros pobres ficam de fora.

PELO USO DE MODELOS SIMPLISTAS

Quando uma empresa simplifica demais a seleção de dados, por questão de tempo ou custo, o resultado provevelmente será discriminatório. Por exemplo: um sistema de seleção de vagas de emprego que aceite apenas candidatos formados em universidades com altas mensalidades.

POR CORRELAÇÕES DISTORCIDAS

Nem sempre os dados disponíveis são suficientes para traçar correlações precisas e são usadas informações substitutas. Por exemplo: moradores de uma determinada região têm maiores problemas com inadimplência e um sistema hipotético de IA usa esse dado para decidir se clientes de um banco podem receber empréstimos. Se o CEP da residência tiver relação com a origem racial, ao considerar a região de moradia o sistema discriminaria a etnia.

Controle e responsabilidade

Proteger a sociedade da desinformação e do preconceito disseminados pela inteligência artificial é um desafio que poderia contar com a ajuda da tecnologia: a própria inteligência artificial pode oferecer formas de prevenção e controle.

Já existem, por exemplo, avanços na identificação das notícias falsas, mais conhecidas como fake news. Em outubro de 2018, um grupo de pesquisadores da Universidade de São Paulo (USP) e da Universidade Federal de São Carlos (UFSCar) lançou a versão piloto de uma ferramenta digital com esse objetivo. Ela está disponível, gratuitamente, via web ou WhatsApp. Basta submeter a notícia suspeita ao sistema de verificação. Ao constatar indícios de falsidade, o sistema responde: “Essa notícia pode ser falsa. Por favor, procure outras fontes confiáveis antes de divulgá-la”.

Segundo os autores do estudo, por enquanto o sistema consegue identificar, com precisão de até 90%, notícias que são totalmente falsas ou totalmente verdadeiras. Para separá-las, são usados parâmetros como o número de verbos, substantivos, adjetivos, advérbios, pronomes e, sobretudo, erros ortográficos presentes nos textos.

Na Universidade Estadual de Campinas (Unicamp), um grupo liderado pelo cientista da computação Anderson Rocha, diretor do Instituto de Computação, tem se dedicado a desenvolver mecanismos de identificação de informações falsas veiculadas em fotos e vídeos. “Utilizamos técnicas de IA para comparar as informações que estão em determinado texto com comentários e possíveis imagens. Ao verificarmos esses três grupos de informação, apontamos a possibilidade de discrepância que pode levar à identificação de notícia falsa”, diz Rocha.

Os pesquisadores da Unicamp também se dedicam à identificação das falsificações incrivelmente realistas de áudio e vídeo, conhecidas como deep fakes, e ao estudo da autoria de textos postados em rede social, por meio de uma técnica que avalia o estilo de escrita do autor – a estilometria. Outra frente de pesquisa do grupo é a filogenia digital: “Buscamos o processo de evolução de um determinado objeto digital – imagem, vídeo ou texto – que sofre alterações sucessivas em sua versão original”, explica Rocha. O objetivo é identificar como determinada notícia postada em rede social vai sendo modificada ao longo do tempo por diferentes pessoas que adicionam ou removem elementos. “Dificilmente teremos uma única solução, global e genérica, para o combate às fake news, mas desenvolvemos ferramentas pontuais que vão enfrentando caso a caso. Para que conseguíssemos um salto que nos permitisse disponibilizar ferramentas de controle para a sociedade, precisaríamos ter investimento do setor privado tentando trazer esse conhecimento gerado na academia e transformar em produto”, opina o pesquisador.

Do setor privado também se espera maior transparência no desenvolvimento das ferramentas tecnológicas. O termo “responsabilidade algorítmica” tem sido cada vez mais utilizado nos debates sobre o uso da IA. Segundo o advogado Rafael Zanatta, especialista em direito digital e pesquisador do grupo de Ética, Tecnologia e Economia Digitais da USP, ainda não existem leis específicas relacionadas aos aspectos discriminatórios de algoritmos, mas já há iniciativas nesse sentido. Nos Estados Unidos, foi apresentado um projeto de lei denominado Algorithmic Accountability Act. Se ele for aprovado, as empresas terão que avaliar se os algoritmos que alimentam os sistemas de IA são tendenciosos ou discriminatórios, bem como se representam um risco de privacidade ou segurança para os consumidores. “Essa lei segue um pouco da lógica da legislação ambiental, é uma espécie de avaliação de impacto da ferramenta tecnológica”, compara Zanatta.

Em abril deste ano, a União Europeia divulgou uma série de diretrizes éticas para o uso da inteligência artificial. Entre elas, o estabelecimento de medidas que responsabilizem as empresas pelas consequências sociais da utilização da IA e a possibilidade de intervenção e supervisão humanas no funcionamento do sistema.

No Brasil, também se tentou introduzir uma lei prevendo a revisão humana de decisões automatizadas. Um cidadão que se sentisse prejudicado por uma decisão mediada por algoritmos – na concessão de um empréstimo, por exemplo – poderia requerer um revisor para esclarecer os critérios utilizados para a decisão. No entanto, o projeto foi vetado em julho de 2019 pela Presidência da República, sensível ao argumento das empresas de que a revisão humana acarretaria custos adicionais.

FOTO: LÉO RAMOS CHAVES/FAPESP

PESQUISAS SOBRE MULHERES BONITAS REVELAM UMA VISÃO RACISTA

Educação antiviés

Para Virgílio Almeida, a proteção contra o uso tendencioso da IA começa na educação. Ele destaca como exemplo a iniciativa de escolas da Finlândia que estimulam as crianças a desenvolverem espírito crítico e identificarem notícias falsas na web. Não basta, claro, educar o usuário, é preciso educar também o programador. “Para evitar o viés, uma das maneiras é dispor de dados mais diversos para treinar o algoritmo”, lembra o professor.

A estudante de graduação Bruna Thalenberg, uma das fundadoras do Tecs – Grupo de Comput{ação Social}, do Instituto de Matemática e Estatística (IME) da USP, concorda: “O mundo está em constante mudança, os algoritmos não deveriam repetir o passado”. Fundado em 2017 como uma equipe de extensão, o Tecs nasceu do diálogo de estudantes da USP com o colega brasileiro Lawrence Muratta, que fazia ciência da computação na Universidade Stanford, nos Estados Unidos, onde já havia um grupo discutindo a questão do viés.

“Sentíamos que o curso de ciência da computação estava muito afastado da sociedade”, conta o ex-aluno Luiz Fernando Galati, que hoje trabalha no Centro de Ensino e Pesquisa em Inovação da Fundação Getulio Vargas. Ele conta que o objetivo inicial do grupo era promover palestras e debates, mas eles acabaram propondo a inclusão de um novo curso na grade curricular, o que foi feito. “As palestras que promovemos são oferecidas hoje na disciplina direito e software, sob a supervisão dos professores Daniel Macedo Batista e Fabio Kon.” O Tecs também participa da TechShift Alliance, que reúne 20 organizações de alunos universitários das Américas do Norte, do Sul e da Ásia, dispostos a debater as questões sociais ligadas à inteligência artificial. Os grupos se reúnem em um evento anual, chamado TechShift Summit.

Como seu próprio nome indica, além da reflexão, o grupo tem o propósito de se dedicar à ação, por meio de projetos que permitam a grupos marginalizados o acesso ao universo digital. Um desses projetos é o ensino de lógica de programação para alunos do Centro de Atendimento Socioeducativo ao Adolescente, a Fundação Casa. “O projeto surgiu de um contato entre uma integrante do Tecs e o Projeto Primeiro Livro, que fazia ações em unidades da Fundação Casa e em escolas públicas. A primeira turma do curso iniciou no segundo semestre de 2018”, conta a estudante Jeniffer Martins da Silva, educadora do projeto. Desde sua criação, mais de 40 jovens já passaram pelo curso.

Para os integrantes do Tecs, não são apenas os grupos atendidos pelo projeto que podem se beneficiar com os cursos, mas a área da ciência da computação como um todo. “Qualquer equipe com mais diversidade tem melhor desempenho. Mais riqueza de perspectivas leva a melhores e mais inovadoras soluções para os desafios que precisarem superar”, conclui Silva.

Publicado por: NEXO Jornal 

19 dez
18 dicas do Google para ser um bom engenheiro de software

Trabalhar na Google é um sonho de vários engenheiros/futuros engenheiros, com destaque para os engenheiros de software. A Google possui a fama de ter ótimos escritórios (há dois no Brasil, um em Belo Horizonte e outro em São Paulo) e os salários são absurdamente motivadores, fatores que justificam a concorrência altíssima . Se você é um engenheiro/futuro engenheiro de software, então precisa conferir essas dicas que a empresa divulgou sobre como se tornar um bom engenheiro de software.

1. Faça cursos de introdução à Ciência da Computação

Eles fornecem instruções básicas sobre programação.
Recomendações: Udacity – intro to CS courseCoursera – Computer Science 101

2. Saiba programar em pelo menos uma linguagem orientada a objetos, como C++, Java ou Python

Recomendações (nível iniciante): Coursera – Learn to Program: The FundamentalsMIT Intro to Programming in JavaGoogle’s Python ClassCoursera – Introduction to PythonPython Open Source E-Book

Recomendações (nível intermediário): Udacity’s Design of Computer ProgramsCoursera – Learn to Program: Crafting Quality CodeCoursera – Programming LanguagesBrown University – Introduction to Programming Languages

3. Aprenda outras linguagens de programação

Adicione outras linguagens de programação  em seu repertório, como Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell.
Recomendações:  w3school.com – HTML TutorialCodeAcademy.comUdacity – Mobile Web DevelopmentUdacity – HTML5 Game Development

4. Teste seu código 

Aprenda a identificar erros, crie testes e hackeie seu próprio software.
Online Resources: Udacity – Software Testing MethodsUdacity – Software Debugging

5. Desenvolva raciocínio lógico e conhecimentos em matemática discreta

Recomendações: MIT Mathematics for Computer Science, Coursera – Introduction to Logic, Coursera – Linear and Discrete Optimization, Coursera – Probabilistic Graphical Models, Coursera – Game Theory

6. Compreenda bem algoritmos e estruturas de dados

Recomendações: MIT Introduction to Algorithms, Coursera Introduction to Algorithms Part 1 & Part 2List of AlgorithmsList of Data Structures, Book: The Algorithm Design Manual

7. Compreenda bem sistemas operacionais

Recomendações: UC Berkeley Computer Science 162

8. Aprenda UX Design

Recomendações: Udacity – UX Design for Mobile Developers

 

9. Aprenda sobre Inteligência Artificial

Recomendações: Stanford University – Introduction to RoboticsNatural Language ProcessingMachine Learning

10. Aprenda a criar compiladores

Recomendações: Coursera – Compilers

 

11. Aprenda a criptografar

Recomendações: Coursera – CryptographyUdacity – Applied Cryptography

12. Aprenda programação paralela

Recomendações: Coursera – Heterogeneous Parallel Programming

13.Trabalhe em projetos fora de sala de aula

Crie e mantenha um site, faça seu próprio servidor ou construa um robô.
Recomendações: Apache List of ProjectsGoogle Summer of CodeGoogle Developer Group

14. Trabalhe em uma parte pequena de um grande sistema, leia e entenda o código e encontre erros

Recomendações: GithubKiln

15. Trabalhe em projetos com outros programadores

Irá ajudá-lo a melhorar sua capacidade de trabalhar em equipe e permite aprender com os outros.

16. Pratique seu conhecimento em algoritmos e capacidade de programação

Pratique por meio de competições ou concursos.
Recomendações: CodeJamACM ICPC

17. Seja um monitor

Ensinar os outros estudantes te ajuda a melhorar seu conhecimento no assunto.

18. Faça estágio na área de engenharia de software

Mas, o guia alerta: seguir todos os itens não garante um emprego na Google. As recomendações servem para introduzir ou complementar seu conhecimento. Então, você precisa se esforçar em outras tarefas para conseguir um emprego nesta gigante empresa.

Referências: Google: Guide for Technical Development

03 dez
Uma Visão Evolutiva do Código de Sistemas e o Papel do Engenheiro de Software

Ter uma visão macro do negócio é entender como o sistema pode melhorar fluxos de processos no mundo real

Tempo de leitura: 4 minutos 

Há sete anos a NASA lançava o Rover Curiosity para o Planeta Marte, um veículo autônomo que objetivava explorar a superfície do planeta. Em outubro deste ano, foi divulgado uma foto do Rover Curiosity fazendo uma Selfie.

Fonte: NASA (2019)

 

Um questionamento extremamente preponderante do ponto de vista computacional é o que está por trás do Rover Curiosity. Ao pensar rapidamente podemos responder que é o Sistema Operacional que inicializa suas aplicações, ou a Inteligência Artificial que o faz selecionar a rocha correta sem a intervenção da NASA aqui na Terra.

O Código

A resposta é que princípio de tudo é o CÓDIGO, é ele que descreve como será o Sistema Operacional, como ocorrerá a interação deste com o hardware e a aplicação e, no exemplo do Rover Curiosity, como será a interação do Sistema Operacional com o hardware do veículo e a Inteligência Artificial.

Margaret Hamilton

Margaret Hamilton é considerada a primeira Engenheira de Software, com o código do programa de voo da Apollo 11, a primeira missão tripulada à Lua de 1969, desenvolvido em Assembly com 64.992 linhas de código.

É importante destacar que, naquela época, as premissas das metodologias tradicionais de desenvolvimento foram seguidas, como teste de software, revisão e aprovação.

Todo o código da Apollo 11 pode ser encontrado no GitHub no endereço: https://github.com/chrislgarry/Apollo-11

Um outro exemplo de software amplamente utilizado, e que aqui é abordado para entender a evolução da complexidade de um código, é o Kernel do Linux. Presente em todos os celulares Android e Sistemas Operacionais Linux, como Ubuntu e Red Hat, atualmente possui mais de 20 milhões de linhas de código.

 

“Engenheirizar Software”

Todos os aspectos mostrados até agora foram para entender o quão complexo encontra-se o nível de codificação de sistemas. Em 1969, tínhamos um software de programa de voo com quase 70 mil linhas de código e hoje temos um sistema rodando em um celular com mais de 20 milhões de linhas de código.

Esta complexidade de sistemas norteou exigências do mercado e adaptabilidade dos Engenheiros de Software, principalmente no entendimento do Processo de desenvolvimento de Sistemas, cerne de um Projeto de Software. Quando Barry Boehm publicou, em um de seus artigos de 1988, o “Modelo Espiral”, foi uma grande mudança de paradigma em relação ao Modelo Cascata. O desenvolvimento de software passou a ter um ciclo, e a cada novo ciclo um incremento de entrega.

O surgimento do Manifesto Ágil

Em 2001, houve o advento do Manifesto Ágil através de uma nova abordagem de Metodologias, na qual o grande foco no ciclo de desenvolvimento seria o cliente e o atendimento de suas demandas, mesmo que estas ocorressem ao longo do ciclo de codificação. O cliente tornou-se, portanto, participante ativo deste processo. Desta forma, Metodologias Ágeis como Scrum, XP e FDD tornaram-se amplamente utilizadas por engenheiros de softwares em seus projetos, agregando celeridade e continuidade nas entregas e satisfação do cliente.

 

O conhecimento da linguagem de codificação, o entendimento da metodologia de desenvolvimento e das tecnologias envolvidas neste processo tornaram-se uma prerrogativa básica para o Engenheiro de Software, considerando os diversos nichos no qual sistemas são empregados.

 

Engenheirizar Software é ter uma visão macro do negócio, entender como o sistema pode melhorar aquela situação, definir melhorias de fluxos de processos no mundo real (antes de defini-los em sistemas), envolver todos os Stackeholders de maneira motivadora e participativa no projeto e, acima de tudo, criar uma nova perspectiva sistêmica que gere uma lucratividade para os envolvidos.

26 nov
O que é ping, e o que você precisa saber sobre isso

O ping é um importante comando para determinar a qualidade da transmissão de dados online

É possível usar sites especializados em medição do ping

 

Para quem joga online, ou é um heavy user de computadores, o termo ping, com certeza, soa familiar. O Packet Internet Network Grouper foi criado por Michael Muuss e é uma ferramenta usada para examinar o estado da rede local e de outros equipamentos conectados a ela. Saiba mais sobre o que é ping e como ele pode afetar em sua performance nos jogos online!

O que é ping e como funciona?

O ping é um comando que mede quanto tempo um pacote de informações leva para ir a um destino e voltar, em milissegundos (ms). Ou seja, ele verifica a velocidade de uma conexão e, quanto menor seu valor, mais rápida é a internet.

O nome ping, na verdade, é uma analogia ao som de um sonar, assim como seu modo de agir. O ping é um importante comando para determinar a qualidade da transmissão de dados online de redes e sistemas operacionais em todo o mundo.

Como usar o comando?

Qualquer usuário pode usar o ping para verificar a velocidade de sua conexão, independentemente de seu sistema operacional. O primeiro passo é o seguinte:

-Windows: abra o menu iniciar e digite “cmd” ou “prompt de comando” no campo de busca;

-OS X: acesse a pasta aplicativos, depois utilitários e abra o terminal;

-Linux: acesse o terminal pelo atalho Ctrl + Alt + T.

Em seguida, basta digitar ping e inserir a URL de um site ou o IP de uma máquina que esteja conectada à sua rede e na qual a conexão será testada. Serão apresentados vários dados, como o número de pacotes e se houve perdas de dados. Ao fim, aparecem as velocidades mínima, máxima e média, em milissegundos.

Também é possível usar sites especializados em medição do ping e que eliminam a necessidade de acesso ao terminal ou ao prompt de comando, como o Teste seu Ping ou o Teste sua Velocidade.

Como o ping afeta o jogo online e como estabilizá-lo?

O ideal é que o valor do ping esteja abaixo de 100 ms para que o usuário consiga jogar online. Também é importante notar se há perda de pacotes, pois caso haja, o usuário terá dificuldades para jogar, assistir vídeos etc. Caso os resultados de sua conexão não estejam dentro do esperado, o usuário pode adotar algumas medidas para minimizar o problema, como:

– usar cabos: as conexões cabeadas dão mais estabilidade e velocidade na transmissão de dados, ao contrário das conexões por Wi-fi;

– usar uma aplicação por vez: se você quer jogar seu jogo online, evite deixar o Torrent aberto, por exemplo, pois são aplicações que usam uma alta taxa de dados. Usadas ao mesmo tempo, elas causam interferências e podem atrapalhar o andamento da partida;

-evite horários de pico: horários em que muitos usuários estão conectados à rede simultaneamente podem reduzir a qualidade da conexão da internet.

-resete o modem e o roteador: às vezes é uma solução para reduzir o valor do ping. Basta desligar os aparelhos da tomada, esperar alguns segundos e religá-los;

-reclame com a operadora: por fim, vale notificar a operadora sobre os problemas com sua conexão. Em alguns casos a causa pode ser uma dificuldade da empresa ou necessidade de mudança na rota da transmissão de dados, por exemplo.

Fonte: PlayerID

18 nov
Tecnologia para empreendedores: por que você deve entender programação?

Especialmente no começo, é preciso ser mão pra toda obra e a tecnologia não fica fora disso

Especialmente no começo, é preciso ser mão pra toda obra e a tecnologia não fica fora disso.

 

Se você é um empreendedor ou empreendedora, sabe que não existe descrição de trabalho nessa função. Você faz todas as tarefas que precisam ser feitas: desde o lançamento até tratar com investidores, o suporte ao cliente e trocar as lâmpadas do escritório.

Especialmente no começo, é preciso ser mão pra toda obra e a tecnologia não fica fora disso. Você pode contar a programação como uma das habilidades da sua caixa de ferramentas. Mesmo que você nunca seja um programador em tempo integral, há muito valor em saber codificar.

A maioria das empresas acaba falhando não porque fica sem dinheiro, mas porque fica sem recursos. Especialmente no mundo da tecnologia, o principal diferencial entre empresas de tecnologia bem-sucedidas e malsucedidas é seu conhecimento em tecnologia. Por essa razão, empreendedores e donos de empresas devem ter algum conhecimento de programação.

Saber disso é metade da batalha, aprender a codificar é o restante. Aqui estão algumas razões pelas quais você deve aprender a codificar.

1. Reduz custos indiretos

Contratar um desenvolvedor para um único propósito é caro. Um empreendedor que possui habilidades de codificação reduz as despesas gerais imediatamente. Embora ter um desenvolvedor interno na equipe seja fundamental durante violações de segurança e falhas de servidor, essas são todas questões que um empreendedor pode aprender a lidar e até reduz custos de contratação por entender melhor qual o trabalho que deve ser feito.

2. Desenvolvimento mais rápido de produto e serviço

Esperar que os estágios de desenvolvimento de código sejam concluídos para produto, aplicativo, software e produtos relacionados à tecnologia pode colocar em risco os cronogramas de conclusão do protótipo. Quando um empreendedor aprende a codificar, pode mover o desenvolvimento de produtos e serviços um pouco mais rápido. Isso também permite que as fases de teste do projeto ocorram mais rapidamente. Assim como torna possível a tomada de decisão sobre estratégia de produto: quais linguagens usar, como montar um time quando for a hora, quais metodologias usar no desenvolvimento, entre outras questões estratégicas.

3. Criar cronogramas apropriados do projeto

Quando você sabe quanto tempo leva cada parte do desenvolvimento do produto, incluindo o tempo alocado para a codificação, os cronogramas do projeto são mais realistas. Isso poupa muito estresse e tensão muitas vezes sentidos pelas equipes de desenvolvimento com supervisores que não entendem o processo. Ao fornecer ao desenvolvedor um prazo apropriado, as extensões, os erros e os programas incompletos são problemas menores.

4. Oportunidades adicionais de carreira

Se a aventura de empreendedorismo que você planejou não funcionar ou falhar completamente, aprender a codificar lhe dará opções de carreira para recorrer. Algumas das opções de carreira a considerar são o desenvolvimento web back-end, front-end, técnico de suporte e analista de dados, por exemplo. Empreendedores sempre precisam ter um “plano B” para o caso do caminho que você tomar acabar sendo uma estrada sem saída.

5. Análise de ideia mais rápida

Todos os empreendedores precisam ter pelo menos um gênio técnico por trás deles para ajudar a conduzir análises de produtos, construir uma equipe de desenvolvimento e realizar testes beta. Verificar estatísticas e resultados de testes com um conjunto de olhos diferente é ideal na maioria das situações. Com duas pessoas trabalhando nos dados, os resultados chegam mais rapidamente e os planos para desenvolvimento, marketing e lançamento de produtos podem começar a funcionar.

6. Capacidade de transferir aprendizagem

Aprender a codificar lhe dá um conhecimento valioso para passar para os membros da sua força de trabalho. Se você é um empreendedor de desenvolvimento de aplicativos, ensinar um método específico a um membro da equipe capacita-o a ajudar em mais fases de desenvolvimento. Você tem tempo para ensinar o membro da equipe, pois os aplicativos podem levar meses para serem desenvolvidos.

Transferir o que você, como founder, aprendeu na aula de codificação para aqueles que trabalham para você constrói uma equipe mais forte, um produto final mais completo e uma equipe intercambiável para dividir as tarefas. A transferência de aprendizado é uma parte vital de ser um empreendedor de sucesso, já que muitos o encararão diretamente como mentor.

7. Habilidades de auto-personalização

Às vezes é difícil transmitir exatamente o que você quer de um projeto. Pode ser difícil usar uma terminologia simples para explicar a uma desenvolvedora de codificação o que você imagina em sua própria mente. A capacidade de personalizar aplicativos, sites e programas garante que você esteja criando exatamente o que deseja. Além de você ser mais valioso para si mesmo por ter essas habilidades, você é mais valioso para toda a equipe.

As habilidades de auto-personalização podem levar um empreendedor de tecnologia a desenvolver novos aplicativos para ajudar os outros a aprenderem novos processos, uma nova habilidade ou resolver problemas. A mente de um empreendedor está sempre pensando na melhor maneira de fazer algo, desenvolver mais itens relacionados à tecnologia é uma demonstração disso.

Conclusão

Empreendedores, especialmente em novos empreendimentos de tecnologia, deveriam ser mais auto-suficientes. Os custos de operação e desenvolvimento serão menores e uma boa base de educação pode ser obtida. Um empreendedor bem-sucedido que entende todas as fases de seu negócio está se preparando para o sucesso.

Fonte: Bossabox

22 out
O que é SQL e para que ele serve?

SQL significa “Structured Query Language”, ou “Linguagem de Consulta Estruturada”, em português.

Você já ouviu falar em SQL? Essas três letrinhas são muito frequentes em vagas de emprego, e seus conhecimentos têm sido cada vez mais requisitados no mercado. Neste artigo vamos explicar o que é o SQL, para que serve e por que você deveria se preocupar em aprendê-lo o quanto antes.

O que é SQL?

SQL significa “Structured Query Language”, ou “Linguagem de Consulta Estruturada”, em português. Resumidamente, é uma linguagem de programação para lidar com banco de dados relacional (baseado em tabelas). Foi criado para que vários desenvolvedores pudessem acessar e modificar dados de uma empresa simultaneamente, de maneira descomplicada e unificada.

Para que serve?

A programação SQL pode ser usada para analisar ou executar tarefas em tabelas, principalmente através dos seguintes comandos: inserir (‘insert’), pesquisar (‘search’), atualizar (‘update’) e excluir (‘delete’). Porém, isso não significa que o SQL não possa fazer coisas mais avançadas, como escrever queries (comandos de consulta) com múltiplas informações.

(Fonte: SQL Server Tutorial/Reprodução)

Por que aprender SQL?

Segundo a Dataquest, escola referência em ciência de dados, existem três motivos primordiais pelo qual profissionais que usem dados precisam se preocupar em aprender a linguagem SQL:

  • 1. SQL é usado em qualquer lugar;
  • 2. Está em alta demanda, já que muitas empresas o utilizam;
  • 3. Embora já existam outras alternativas, o SQL nunca vai deixar de ser relevante.

É uma linguagem fundamental para qualquer profissional de análise, ciência ou engenharia de dados, sendo ainda mais usada do que Python e R. Contudo, devido a sua simplicidade, não é necessário ser um programador para aprendê-la, e em cada vez mais áreas têm sido exigido o conhecimento em SQL como complementar em tarefas cotidianas.

Áreas que requerem ou podem requerer SQL:

  • Programação
  • Engenharia de software
  • Administrador de banco de dados
  • Analista de Qualidade
  • Business Intelligence
  • Desenvolvimento
  • Marketing e Conteúdo e Redes Sociais
  • Consultoria
  • Gestão de Projetos
  • Tecnologia da Informação
  • Engenharia de Redes
  • Suporte Técnico
  • Big Data
  • Jornalismo de Dados

E, basicamente, qualquer área que lide com tecnologia, e tenha seus próprio banco de dados, poderá exigir conhecimento em SQL como complemento profissional.

(Fonte: Dataquest/Reprodução)

Importância no mercado

Segundo o Guia de Profissões e Salários da Catho, a média salarial de um analista de sistemas SQL no Brasil é de R$ 3.473,19; já gerentes, coordenadores e consultores de bancos de dados podem ter salários acima de R$ 7 mil.

Com o mundo digitalizado de hoje, saber lidar com grandes quantidades de dados é fundamental. A linguagem SQL já é tida como um dos conhecimentos pilares de qualquer profissional que atua com tecnologia; além disso, com a alta competitividade do mercado, saber uma informação tão útil quanto o SQL com certeza é um ótimo diferencial.

Fonte: TecMundo

11 out
Three Commandments for Technology Optimists

Technology can be a powerful force for good, but its impacts are unpredictable. On the 25th anniversary of WIRED, technologists should temper their enthusiasm with proper caution.

he impacts of new technologies are unpredictable: Inventors hyperbolize a revolutionary technology when it emerges, but it’s impossible for society to anticipate its long-term effects. Because new technologies are so powerful and incomprehensible, responsible technologists must practice what the poet John Keats called negative capability: “capable of being in uncertainties, Mysteries, doubts, without any irritable reaching after fact,” simultaneously cultivating caution and enthusiasm.

I’ve been thinking about technology enthusiasm as long as WIRED has been published. Long an editor of competing magazines, I now help build life sciences companies, mostly in health and agriculture. Witness and participant, I’ve become (to my slight surprise) a person of a fixed, familiar ideology, one of those blithe bastards who think technology can solve big problems, grow wealth, and enlarge human possibilities. All I lack is the fleece vest.

I’m not an absolute fool about technology: a determinist or militant naif. I know that most technologies are contingent, neither necessary nor impossible, and that use makes a particular technology good or bad, according to circumstance and effect. I don’t forget Clay Shirky’s rueful dictum that “it’s not a revolution if nobody loses,” and I concede that the losers in any technologically wrought social transformation are often those with the least to lose. But I believe that any broadly adopted technology satisfies some profound human need. We are technology-making apes who evolve through our material culture; everywhere, people fly like birds, speed like cheetahs, and live as long as lobsters, but only because of our technologies. I’m confident that smart, generous policies can ameliorate technological unemployment and other displacements.

 

More religiously, while I recognize that technological solutions create new problems, I have faith those problems will find yet more solutions, in an ascending spiral of frustration and release—the greatest show on Earth that will never end, until we do.

Science, unlike technology, is an absolute good, and learning about the world is a kind of categorical imperative: an unconditional moral obligation that is its own justification. Those who expand human thought are especially heroic, because they replace obscurity with the truth, which however so shocking is always salutary.

But science is only directly useful insofar as it leads to new technologies. In my new life, I often ask myself: With the time I have left, what novel technologies should I pursue? Which should I reject? Not long ago, the partners at my firm considered a technology that might prevent disease. But we chose to let someone else commercialize it, because its expansive powers and potential liability confounded us. Was our choice admirable or cowardly?

These are not easy questions, not least because there is no consensus—and surprisingly little systematic writing—about what technology is and how it develops. The best general book on the subject, Brian Arthur’s The Nature of Technology: What It Is and How It Evolves (2009) distinguishes between the singular use of the word technology as a means to fulfill a human purpose (for instance, a speech-recognition algorithm or filtration process) and a generic assemblage of practices and components (technological “domains,” like electronics or biotechnology). Arthur, an economist at the Santa Fe Institute who refined models of increasing returns, writes, “A technology is more than a mere means. It is … an orchestration of phenomena to our use.”

If technology is functional and its value instrumental, then it follows that not all singular applications of technological domains are equal. Nuclear fission can power a plant or detonate a bomb. The Haber-Bosch process, which converts atmospheric nitrogen to ammonia by a reaction with hydrogen, was used to manufacture munitions in Germany during World War I, but half the world’s population now depends on food grown with nitrogen fertilizers. (Fritz Haber, who was awarded the 1918 Nobel Prize in Chemistry for coinventing the process, was a conflicted technologist—the father of chemical warfare in World War I. His wife, also a chemist, killed herself in protest, in 1915.) What’s more, designs possess a moral direction, even if technologies can be put to different uses. You can hammer a nail with a pistol butt, although that’s not what it’s for; a spade can kill a man, but it’s better for digging. Therefore, the first commandment for technologists is: Design technologies to swell happiness. A corollary: Do not create technologies that might increase suffering and oppression, unless you’re very sure the technology will be properly regulated.

However, the regulation of new technologies presents a special problem. The future is unknowable, and any really revolutionary technology transforms what it means to be human and may threaten our survival or the survival of the species with whom we share the planet. Haber’s fertilizers fed the world’s people, but also fed algae in the sea: Fertilizer runoffs have created algae blooms, which poison fish. The problem of unpredictable effects is especially acute with some energy and all geoengineering technologies; with biotechnologies such as gene drives that can force a genetic modification through an entire population in a few generations; with artificial eggs and sperm that might allow parents to augment their offspring with heritable traits.

One tool to regulate future technologies is the precautionary principle, which in its strongest form warns technologists to “first do no harm.” It’s an alluringly simple rule. But in an influential paper on the principle, the Harvard jurist Cass Sunstein cautions, “Taken in [its] strong form, the precautionary principle should be rejected … because it leads in no directions at all. The principle is literally paralyzing—forbidding inaction, stringent regulation, and everything in between.” A weaker version, adopted by the nations that attended the Earth Summit in Rio in 1992, stipulates, “Where there are threats of serious or irreversible damage, lack of full scientific certainty shall not be used as a reason for postponing cost-effective measures to prevent environmental degradation.” The threshold for plausible harm is left worryingly undefined in most weak versions of the principle. Nonetheless, the weaker version suggests a second commandment for technologists: In regulating new technologies, balance costs and benefits, and work with your fellow citizens, your nation’s lawmakers, and the world’s diplomats to enact reasonable laws that limit the potential damage of a new technology, as further evidence is forthcoming. It’s good that Facebook invented a global social network, but the company must now cooperate with regulators to limit how malefactors can hack our heads, maddening populations and hijacking elections.

A final commandment helps technologists choose which technologies to pursue. In a complicated fashion, new technologies are not only the “orchestration of phenomena to our use” but are tools of scientific inquiry. Brian Arthur notes, “Science not only uses technology, it builds itself from technology.” High-throughput screening speeds drug discovery, but it also provides new understanding of cancer genomics. Deep learning may one day permit driverless cars, but it will also untangle the mysteries of brain development. Thus, the third commandment for technologists: The best technologies have utility but also provide fresh scientific insights. Prioritize those.

On my desk at work, I have a replica of the skull of La Ferrassie 1, the most complete Neanderthal skeleton ever found. The original belonged to an adult male who lived 50,000 to 70,000 years ago. He walked as upright as you or me, and had you met him on a Paleolithic hillside in what is now the Vézère Valley in France, he would have seemed hauntingly strange: obviously human but stockier, broad-nosed, and beetle-browed. In ways we can only dimly guess, his manners would have been strange too. Surely, he could talk after a fashion, because he possessed the anatomy for speech and shared with us a gene, FOXP2, necessary for the development of language. But the archeological record tells us that he was also different from Homo sapiens. Around 70,000 years ago something switched on in the heads of modern humans—either a genetic mutation or a social adaptation; we don’t know what—that allowed us to design new stone tools that Neanderthals only clumsily imitated, as well as make cave art, flutes, wine, and, eventually, all the rest: the vault of King’s College Chapel, Cambridge; Darwin collecting his irrefutable factsa cure for cancerthe mission to Mars.

 

Original published: Wired 

03 out
Quanto custa fazer um jogo?

A complexidade dos video games aumentou, exigindo que os times de desenvolvimento se expandissem

Game Developer

Seja pela inovação de conceitos ou pela pura melhoria técnica, a indústria de jogos tenta se superar a cada ano, trazendo ao público não somente melhores efeitos gráficos e sonoros, mas também narrativas e tomadas mais elaboradas, que já se aproximam das grandes produções do cinema.

A complexidade dos video games também subiu, exigindo que os times de desenvolvimento se expandissem. De vinte pessoas passamos para mais de duzentas. Os times que antes davam conta de tudo agora são responsáveis apenas pela criação de um efeito na cena.

Não é à toa que vemos grandes obras, tais como HaloUncharted 2: Among ThievesGears of War e Call of Duty: Modern Warfare 2. Mas você já parou para pensar em quanto foi gasto com essas enormes produções?

Em ambiente Windows ou Linux, tudo fica bem mais fácil!

Começando nossa jornada pelos computadores, temos logo de cara a plataforma de desenvolvimento mais barata, robusta e flexível de todas — que serve inclusive de apoio para as demais. Os interessados na criação de games se depararão rapidamente com uma série de ferramentas, algumas gratuitas e outras pagas, mas todas com o objetivo de simplificar o processo.

O conhecimento de uma linguagem de programação — como C++, C, Java, Python ou C# — é indispensável, mas o que não falta na internet é material de apoio gratuito. Uma simples busca por portais como o YouTube rendem pilhas de vídeos explicativos, com direito a exemplos práticos e sugestões.

Nos PCs, as pessoas também têm liberdade de escolha para criar jogos extremamente simples, focados em mercados web, como MSN Messenger, Orkut e sites em flash. Os que levarem tudo mais a sério podem recorrer à compra de uma licença de uso de soluções como a Unity (que possui inclusive uma versão específica para iPhones).

Existem diversos pacotes de distribuição, sendo o mais simples deles gratuito. Já aqueles mais robustos começam em US$ 649 e vão até US$ 1499.

Os caminhos fáceis do desenvolvimento independente

Entretanto, de todas as companhias que visam a criação de conteúdo nos computadores, uma das que mais merece destaque é a Microsoft. Ela não somente é detentora de uma das mais intuitivas ferramentas de criação, mas também da plataforma XNA de desenvolvimento, que serve inclusive para a construção de aplicativos no Xbox 360.

Para quem não conhece, o Kodu é uma das formas mais fáceis de criar um jogo, sendo possível que até mesmo pequenas crianças desenvolvam suas ideias e as coloquem em prática na tela. E acredite: os gráficos dos jogos produzidos geralmente são tridimensionais.

A indústria dos gigantes

 

Mas e os surpreendentes “Unreal”, “Doom” e “World of Warcraft”, quanto custam? São justamente títulos como esses os responsáveis por separarem — com uma folga bem larga — o desenvolvimento independente (Indie) do desenvolvimento praticamente industrial de jogos.

Empresas dedicadas à construção dos games por si só já envolvem custos muito mais altos de manutenção do que os custos totais de produção de um game independente. As maiores, a exemplo da Blizzard e da Epic Studios, são divididas em diversos estúdios e setores, passando por conceituação, trabalho de arte, escrita, revisão, programação, teste, animação, desenvolvimento dos estágios e até mesmo composição própria das trilhas sonoras.

Unreal 3Outro fator que pesa na conta é que, ao contrário do que fazem desenvolvedores independentes (que, como mostrado, quase sempre recaem sobre a utilização de ferramentas simplificadas de programação), as grandes companhias geralmente buscam desenvolver do zero suas próprias arquiteturas de código.

Desse modo, elas conseguem extrair o máximo potencial das plataformas e atingirem suas visões artísticas. São dezenas de etapas desde a conceituação até a finalização, passando por períodos de pré-produção, revisão e em casos mais raros até mesmo de reciclagem, nos quais todo o trabalho é “jogado fora” em favor de um recomeço do código fonte.

Outra preocupação que estas empresas têm é com as inúmeras configurações de hardware dos jogadores. Alguns possuem máquinas muito possantes, enquanto outros querem jogar com notebooks, o que obriga as companhias a gerarem diversas configurações de qualidade, algo que leva bastante tempo.

Logo, como resultado, é comum vermos companhias gastando mais de US$ 1 milhão, enquanto alguns casos raros extrapolam até mesmo a marca dos 30 milhões de dólares. Se o jogo virar sucesso, isso não é problema, haja vista que todo o investimento será recuperado (é comum que a desenvolvedora fique com cerca de 60% do valor de cada venda). Mas quando ninguém compra… É hora de enfrentar a crise!

 

Aumentando a biblioteca de aplicativos da AppStore

 

Desenvolvendo no iPhone. Saltando dos computadores para os telefones celulares, podemos observar que esta foi uma das áreas que mais se aqueceu na última década com relação aos jogos, indo do pobre “Snake” a produções de alto nível, completamente tridimensionais e com direito a história, como Assassins Creed.

De todos os modelos, o que mais impulsionou as vendas foi o iPhone, que conta com a AppStore, uma loja centralizada de aplicativos e diversão das mais variadas naturezas. Para criar e publicar um game para iPhone, a pessoa deve obrigatoriamente se cadastrar como desenvolvedora junto à Apple.

O custo para tal é de US$ 99 pelo programa padrão, sendo que a publicação do aplicativo na loja virtual e as ferramentas de criação (a SDK, ou Software Development Kit) já têm seus custos embutidos no pacote.

O outro programa é voltado para empresas com mais de 500 funcionários e custa US$ 299, mas oferece muitas vantagens em termos de avaliação de conteúdo e de agilidade por parte da Apple. A esta altura você deve estar pensando “A assinatura é barata, vou fazer uma agora mesmo”.

Calma! Aí vai um recado muito importante: para programar e criar aplicativos e jogos para iPhone, é obrigatório o uso de um Mac dotado de processador Intel e com sistema operacional Mac OS X Leopard, o que encarece consideravelmente o processo.

Milionários da noite para o dia

A AppStore tem fama por ter transformado a vida de milhares de desenvolvedores em questão de dias. Alguns que criaram seus aplicativos sozinhos e conseguiram entrar nas paradas de sucesso (como o empresário norte-americano responsável por iFart, um simulador de puns) tiveram suas contas invadidas por milhões de dólares.

A ngmoco, desenvolvedora independente, começou do zero, com poucas pessoas e gastos na criação de Rolando, um jogo muito similar a LocoRoco. O sucesso foi enorme graças ao visual estilizado e ao aproveitamento inteligente das capacidades do aparelho. Para a continuação, a produção ganhou um novo orçamento e um time bem maior de funcionários.

Muitas pedras no caminho

 

Entretanto, apesar de tantos casos de sucesso, temos também muitos problemas com a plataforma portátil da Apple. O primeiro deles é a taxa alarmante de pirataria.

Houve casos em que o criador vendeu cerca de 18 unidades de seu jogo e chegou a ver mais de mil pessoas nos rankings online durante a primeira semana (ou seja, mais de 900 pessoas piratearam).

O segundo é a enorme concorrência, afinal de contas são mais de 100 mil aplicativos disponíveis na AppStore. Muitos deles ainda recebem apoio de grandes empresas para marketing (algumas criaram polêmica por jogarem sujo, contratando terceiros para darem opiniões negativas em programas concorrentes).

Logo, os custos de produção para a plataforma de um modo geral são baixos, mas também envolvem grandes riscos em sua distribuição e a possibilidade de não haver nenhum retorno graças à pirataria.

Xbox 360

O grande foco da Microsoft

 

Depois de tantas ressalvas quanto ao desenvolvimento no iPhone, voltamos a falar da Microsoft e  suas ferramentas. No Xbox 360 todos podem desenvolver, através da XNA, já apresentada acima. Os que optarem pela plataforma contarão com o apoio da linguagem C# (de fácil aprendizado) e de uma excelente interface visual.Exemplo de código C# através do XNA Game Studio

Vale notar também que não falta documentação e aulas virtuais. A grande diferença é que para lançar o jogo no Xbox 360 (e consequentemente poder vendê-lo pela Live Market Place) é necessária a assinatura de um plano anual, que custa US$ 99.

Kits de desenvolvimento

 

Além desse pacote básico para desenvolvedores de pequeno porte, os que quiserem seguir pela trilha mais avançada podem contatar a Microsoft e adquirir as unidades dedicadas de desenvolvimento, com acesso total ao processador gráfico, à memória e ao processador principal.

A arquitetura é elogiada pela maioria, justamente por ser semelhante à dos computadores. As ferramentas também agilizam a criação, minimizando ao menos os gastos operacionais. Isso é confirmado novamente pela Epic, que gastou “apenas” US$ 10 milhões para produzir Gears of War, um enorme sucesso de vendas, enquanto jogos da Sony no mesmo estilo receberam orçamento de mais de US$ 30 milhões.

Os custos na plataforma são totalmente dependentes da proposta, mas pode-se dizer que — em comparação com as demais — eles estão entre os mais baixos da indústria.

Nintendo Wii

Truques para avançar os projetos

A construção de jogos para Wii não é das mais caras (até mesmo porque a configuração dele é muito próxima à do GameCube em termos de arquitetura de processamento e memória, tendo apenas especificações melhoradas), mas o grande problema é conseguir a licença da Nintendo.

A empresa dá muita preferência às desenvolvedoras já sedimentadas no mercado, abrindo espaço para outras com um histórico sólido de desenvolvimento. A promessa de mudança começou recentemente, com o canal WiiWare, mais aberto aos iniciantes, mas ainda assim restrito em vista da quantidade de desenvolvedores interessados.

Mesmo assim, os custos pela licença de desenvolvedor certificado pela Nintendo variam de US$2 mil até mais de US$ 10 mil, de acordo com o tipo de contrato firmado. Infelizmente, esses dados não são mostrados explicitamente pela empresa.

Além do desenvolvimento oficial, aqueles com Wiis destravados estão aproveitando as capacidades do console para criar seus próprios aplicativos e jogos de forma não oficial, o que é conhecido comoHomebrew . Novamente, por se tratar de desenvolvimento independente, os custos iniciais são apenas os da compra e destrava do console para aplicativos não licenciados.

Outra alternativa muito comum — ao menos no que tange o desenvolvimento para Wii — é o aproveitamento das antigas unidades de desenvolvimento para GameCube, que compilam códigos extremamente similares ao do video game atual. Esta está sendo a escolha de muitas universidades para baratear os custos com a aquisição de material de estudo. O que falta é somente o suporte para controles por movimentos.

PlayStation 3

A mais fechada das plataformas

Chegamos finalmente à Sony e ao PlayStation 3, talvez a menos amigável de todas as plataformas atuais de desenvolvimento. O primeiro contato já não é tão simples quanto o realizado com a Microsoft através do XNA: os candidatos ao título de desenvolvedores para as plataformas Sony devem preencher formulários encontrados neste link, tendo que enviar suas propostas já encaminhadas em anexo.

Depois disso, a empresa levará um bom tempo estudando o conteúdo e suas credenciais, em um processo de avaliação individual. O custo do Dev Kit (a unidade de desenvolvimento) do PlayStation 3 baixou muito nos últimos anos, de mais de US$ 10 mil para US$ 2 mil, de acordo com relatos de 2009.

Quem for aprovado e comprar todo o pacote, ainda terá que se virar com mais um “problema”: a arquitetura de processamento do CELL, o processador especial do console, dividido em uma unidade central e outras sete auxiliares, especializadas em operações rápidas. Só o tempo de aprendizado já é suficiente para alavancar os custos com o time de programação e gerar atrasos para os despreparados.

A indústria de hoje e do futuro

Diante de todos esses números, é possível perceber como a indústria do entretenimento (principalmente a dos jogos) deixou de ser tratada como um mero hobby e hoje figura entre as que mais movimentam capital em todo o mundo. O resultado de toda a combinação é um mercado aquecido com alta tendência de crescimento que não emprega milhares, mas sim milhões de pessoas ao redor do globo.

Esta forma de entretenimento deixou de ser focada em nichos e hoje abrange as massas, dos mais novos até os mais idosos, não importando as preferências. Afinal de contas, temos jogos dos mais casuais (como Wii Fit) até os mais “Hardcore”, que exigem dedicação total por parte dos jogadores.

O melhor é que todos estão convidados a participar desta grande roda-viva. Você pode ser o próximo, desenvolvendo e colocando em prática suas próprias ideias. Os únicos requerimentos são tempo e criatividade.

Fonte: Tecmundo 

26 set
Desenvolvimento de Games: o que você precisa saber?

Muitos desenvolvedores de jogos são Engenheiros de Software

Desenvolver jogos requer muito estudo

Muitas pessoas se interessam por trabalhar com desenvolvimento de games apenas por conta de sua paixão por jogos. Contudo, essa é uma área da computação bem complexa e que exige muito comprometimento, dedicação e estudos.

Claro que a paixão por games pode vir a servir como combustível para manter-se focado em atuar na área, porém essa profissão vai muito além disso. Por isso, no artigo, vamos apresentar tudo o que você mais precisa saber a respeito de desenvolvimento de games.

O que faz um desenvolvedor de games?

Os desenvolvedores de jogos projetam e criam jogos para computadores, celulares e consoles. Eles estão envolvidos na concepção, bem como a execução do projeto.

Embora os requisitos de educação variem com base em empregadores, muitos desenvolvedores de jogos em potencial procuram um diploma de bacharel em ciência da computação, engenharia de software ou um campo relacionado — mas já existem cursos específicos.

Como desenvolvedor de games, você pode projetar as principais características do jogo, supervisionar os testes e elaborar o design.

Você também pode trabalhar na produção e conceito artístico. Essa carreira permite muito o uso da criatividade, mas a concorrência por empregos é intensa.

O que é preciso para iniciar na carreira?

Busque uma formação

Desenvolvedores de jogos podem ter um fundo geral em ciência da computação ou eles podem ter concluído um programa de educação formal para se tornar um designer de videogame.

Um curso de desenvolvimento de jogos digitais normalmente inclui classes em C ++, cálculo, design orientado a objetos, algoritmos de jogos, gráficos de computador e fundamentos de rede.

Crie seu portfólio

A maneira mais eficaz de ser notado pelos estúdios de games é criar seus próprios projetos e colocá-los em um portfólio.

Uma carteira de sucesso deve incluir vários pequenos jogos que podem ser jogados até a conclusão. O portfólio deve oferecer aos leitores links para todo o software de instalação necessário para que cada game funcione.

Como backup, devem haver screenshots de cenas cruciais para que eles possam ser avaliados.

O portfólio deve ter, também, o código-fonte de todos os jogos. As notas devem dar crédito a todos os colaboradores que possam ter ajudado com elementos de design, programação ou apresentação dele.

Encontre um estágio

Desenvolvedores iniciantes, muitas vezes, têm dificuldade de conseguir um espaço na indústria de videogames, porque a maioria dos grandes estúdios exige experiência.

Alguns novos programadores encontram suas primeiras posições profissionais em pequenas empresas, fazendo jogos mais simples e curtos para dispositivos móveis e sites de mídia social.

Construa um network

Uma maneira de ganhar uma vantagem no mercado de trabalho competitivo é por meio da rede em blogs, fóruns e sites mais visitados pelos desenvolvedores de jogos.

Às vezes, os contatos profissionais adquiridos nesses sites vão pedir carteiras ou anunciar posições disponíveis não encontradas em plataformas de emprego tradicionais.

Seja autodidata

Como um desenvolvedor iniciante, você terá que descobrir um monte de coisas por si mesmo. É claro que você deve contar com alguma supervisão, principalmente nos primeiros passos, mas isso não quer dizer que você não precisa ser proativo.

Busque se atualizar constantemente sem precisar esperar que alguém peça por isso.

Amplie seus horizontes

Conhecer coisas fora dos games é uma coisa boa para formar referências. Certifique-se de fazer algo além dos jogos, como estudar outras matérias na faculdade que não do sejam do seu curso.

Pegue um hobby de algo totalmente sem relação: alguns dos melhores candidatos são entusiastas da arte, praticam esportes seriamente, simpatizam e estudam a filosofia oriental ou tocam violão, por exemplo.

Jogue regularmente

Se você está indo para o desenvolvimento de games, é melhor jogar com certa regularidade. Você não precisa ser um jogador hardcore, mas deve consumir alguns títulos para ter uma base sobre o mercado.

Esteja pronto para discutir seus gostos nos jogos, o que você está jogando recentemente, por que você gostou deles etc. É bom ter uma ideia do que você está buscando quando você está criando um game. Além disso, quanto mais você jogar quanto mais você gostar de jogar, mais motivação terá para realmente querer trabalhar com eles.

 

Você é aluno do 2º e 3º ano Ensino médio ou Pré-Vestibular e quer saber mais sobre desenvolvimento de games e a faculdade de Engenharia de Software? O iCEV Experience vai te dar o gostinho de como é o ensino superior.

Adivinha qual será o tema do próximo iCEV Experience?

Introdução ao Desenvolvimento de games

Não perde! A oficina será dia 6 de outubro, das 10h às 12h30. Faça sua inscrição! 

 

 

Fonte: Blog Player ID

19 set
Inteligência artificial imita voz de CEO em roubo de US$ 243 mil

Os criminosos recorreram a um software de geração de voz para se passar pelo chefe de uma companhia alemã e solicitar uma transação

Falsificar vozes de executivos do alto escalão artificialmente para roubar milhares de dólares é hoje uma realidade. O Wall Street Journal noticiou o primeiro caso de fraude de voz baseada em inteligência artificial (IA) – também conhecido como vishing (abreviação de “voice phishing”) – que custou a uma empresa alemã US$ 243 mil. O caso é um sinal que a falsificação de áudio está se tornando muito precisa e cada vez mais profissional.

Para conseguir o feito, os criminosos recorreram a um software de IA de geração de voz para se passar pelo chefe de uma companhia proprietária de uma empresa de energia sediada no Reino Unido. Eles convenceram o presidente-executivo da companhia de energia a transferir urgentemente fundos para um fornecedor húngaro em uma hora, com garantias de que a transferência seria reembolsada imediatamente.

Segundo o jornal que apurou o caso, o CEO britânico disse que não desconfiou da voz, pois reconheceu o sotaque alemão e achou que realmente se tratava de seu chefe.

Os fundos transferidos para a Hungria foram, posteriormente, mandados para o México e outros locais. As autoridades ainda estão seguindo os rastros para encontrar os responsáveis pelo crime.

A empresa estava segurada pelo Euler Hermes Group, uma empresa de seguros de crédito, e teve todo seu prejuízo coberto.

O incidente supostamente aconteceu em março e os nomes dos envolvidos e das empresas não foram divulgados. De acordo com o WSJ, os nomes foram ocultados pois uma investigação policial está em curso.

Cibersegurança

Futuro do crime virtual

É improvável que esse continue sendo um caso isolado de um crime perpetrado usando a IA.

Falsificações usando a tecnologia são apenas o começo do que podem ser grandes dores de cabeça para empresas e pessoas físicas no futuro.

À medida que as ferramentas para imitar as vozes e imagens se tornam mais realistas, aumenta também a probabilidade de os criminosos usá-las em seu proveito. Ao fingir identidades no telefone, o acesso a informações privadas fica muito mais fácil.

Em julho, a Diretoria Cibernética Nacional de Israel emitiu um alerta sobre um “novo tipo de ataque cibernético” que aproveita a tecnologia de IA para imitar perfeitamente executivos, instruindo os funcionários a realizar operações, como transferências de dinheiro.

No ano passado, a Pindrop – uma empresa de cibersegurança que cria software de voz antifraude – relatou um salto de 350% na fraude de voz entre 2013 e 2017. Porém, como a empresa mostra, apenas 1 em 638 casos foram falsificações utilizando um software de IA.

Para proteger as empresas das consequências de um ataque de falsificação como esse, a companhia de cibersegurança diz que é crucial que as instruções passadas pelo telefone sejam verificadas por meio de um e-mail ou outro meio alternativo.

Publicado por Infomoney 

13 set
10 linguagens de programação mais usadas no mercado de tecnologia

É preciso ponderar o que melhor se aplica aos seus interesses profissionais e entender a lógica de programação, antes de aprender determinada linguagem.

O mercado de trabalho está buscando cada vez mais por profissionais com conhecimento de linguagens de programação. Como o acesso à tecnologia está mais facilitado, é comum que mais pessoas se interessem pela área, ainda mais considerando uma remuneração mais atrativa. Acompanhe neste artigo um compilado das linguagens de programação mais usadas em 2019 pelo mercado.

Depois, não deixe de acompanhar diversos materiais e livros gratuitos na nossa área de Ebooks.

O que são as linguagens de programação?

Linguagens de programação são conhecimentos escritos e formais que seguem um conjunto de instruções e regras para o desenvolvimento de softwares. Esses programas podem ser utilizados para serem executados em um computador (desktop), dispositivo mobile, equipamento que utiliza IoT ou qualquer outro que possibilite sua execução.

Na prática, programar é escrever um texto seguindo as características de determinada linguagem de programação, o código propriamente dito, que será transformado em um software.

Esse código é lido pelo hardware e é interpretado como um software. No entanto, outros profissionais que conhecem a linguagem de programação utilizada podem ler esse código e entender o que está sendo feito.

Muitas linguagens de programação utilizam palavras e expressões do inglês. Por isso, quem domina esse idioma consegue identificar e ler o código com com mais facilidade.

Carreiras de programação

Programadores ou desenvolvedores são profissões muito procuradas pelo mercado de trabalho e possuem boa remuneração. Para quem está começando a se inteirar dessa área ou realizando um curso superior relacionado à tecnologia, existem muitas dúvidas sobre quais linguagens devem ser aprendidas.

Existem muitos critérios envolvidos na escolha das linguagens de programação a qual um profissional pode se dedicar. Veja alguns deles:

  • mais requisitadas pelo mercado,
  • com demandas contínuas,
  • mais escassas e melhor remuneradas,
  • quais problemas resolvem e as soluções que apresentam,
  • entre tantos outros critérios.

É preciso ponderar o que melhor se aplica aos seus interesses profissionais e entender a lógica de programação, antes de aprender determinada linguagem.

10 razões pelas quais você deveria estudar computação, mesmo que não trabalhe na área

Qual é a profissão do futuro? Querer definir uma carreira ou uma profissão como resposta a esta pergunta seria uma enorme pretensão. Isto porque há diversas demandas crescentes de trabalho no mundo e também pelo fato de que as pessoas possuem personalidades, pensamentos e sonhos diferentes.

Como escolher uma profissão, seja acadêmica ou de mercado, que nos possibilite nos sentirmos úteis? Como optar por algo que permita contribuir com o desenvolvimento de uma sociedade, de pessoas e de um ecossistema? O que eu posso estudar que irá melhorar o meu raciocínio lógico.

 

Cidadão do mundo. Esta é uma expressão que aprendi com o prof. Marcelo Rodrigues ainda durante a graduação. Mas por que Cidadão do Mundo? Se você sabe computação, você pode trabalhar em qualquer lugar do mundo. Isto não acontece com as demais profissões como ser médico, dentista, advogado ou engenheiro civil, que embora você possa exercer lá fora, as validações são necessárias. Já na computação você pode simplesmente sair do Brasil e desembarcar em qualquer lugar do mundo e começar a trabalhar no dia seguinte, isto caso você queira sair do Brasil, pois senão você poderia trabalhar remotamente. Em várias outras profissões quando você decide sair de seu país, você acaba tendo que trabalhar em outras atividades diferentes daquelas que você se preparou.

 

Linguagens de programação mais utilizadas pelo mercado

Confira a lista de linguagens de programação mais usadas pelos programadores, de acordo com os dados coletados em 2018 pela pesquisa anual do site Stack Overflow. A lista das linguagens de programação mais usadas abaixo foi publicada conforme a pesquisa:

10. TypeScript

TypeScript é tido como um superconjunto de JavaScript (que figura numa posição mais alta, nesta mesma lista). Desenvolvida pela Microsoft, essa linguagem adiciona tipagem e alguns outros recursos. Oferecendo uma forma de corrigir ou contornar esses problemas, os arquivos gerados podem facilmente serem convertidos de .ts para .js.

9. C

A linguagem de programação C pode ser utilizada para diversos projetos como o desenvolvimento de sistemas operacionais e compiladores. Além disso, possui diversas variações e muitas outras linguagens que compartilham das mesmas sintaxes criadas pela C.

8. C++

Em oitavo lugar na lista, C++ é uma linguagem de programação bastante popular, até por ser uma das variações da linguagem C. É muito utilizada para o desenvolvimento de softwares mais robustos, com aplicações que fazem integrações entre servidores.

7. PHP

A linguagem PHP é usada principalmente para aplicações web. Com ela, é possível incluir mais funcionalidades em uma página, o que normalmente é mais do que HTML consegue manter. Também é útil para a integração entre banco de dados MySQL e as páginas dos sites.

6. C#

C# também é uma outra variação da linguagem C bastante utilizada pelos profissionais no mercado. É uma linguagem de programação mais complexa de aprender e a área de desenvolvimento de games é a que mais solicita a aplicação desses códigos.

5. Python

Python têm subido nos ranqueamentos. No relatório de 2018, já consta a frente de C# na pesquisa feita pelo Stack Overflow, no ano anterior já havia ultrapassado PHP. Essa linguagem de programação é considerada de fácil aprendizado e está se tornando cada vez mais popular, mesmo já estando no mercado há bastante tempo. É muito utilizado para desenvolvimento web e machine learning e é um dos códigos de mais fácil leitura.

4. Bash/Shell

Bash/Shell é uma linguagem de programação que funciona como um interpretador de comandos de linha. Com ela é possível fazer uma interpretação mais complexa de comandos. É utilizada na construção de softwares que auxiliam na administração de sistemas, para automatizar tarefas cotidianas.

3. Java

Java também está subindo nos índices de popularidade de linguagem. Ela é utilizada para a criação de aplicativos Android, o sistema operacional mais presente nos aparelhos móveis. Além disso, entre seus pontos positivos estão a escalabilidade, sua adaptação com o crescimento de utilizações do software e a retrocompatibilidade. Uma versão antiga do código continua sendo reconhecida por versões mais recentes.

2. SQL

SQL é o padrão para a manipulação de bancos de dados através de SGBDs (sistema de gerenciamento). Com essa linguagem, é possível realizar diversas tarefas como criar arquivos no banco de dados, consultar informações, inserir e alterar registros, gerenciar acesso de usuários, entre outros fatores.

1. JavaScript

JavaScript está em primeiro lugar na lista do Stack Overflow há seis edições! Essa linguagem de programação é utilizada de maneira ampla para aplicações web e tem ganhado espaço tanto no desktop, como no mobile. É bastante utilizado para criar interatividade. Mesmo sendo uma linguagem um pouco mais antiga em comparação com a maioria, ainda é bastante requisitada por sua simplicidade.

Outras tipos de linguagens de programação também bastante usadas

Mesmo não sendo classificadas exatamente linguagens de programação, outras linguagens também figuram na pesquisa feita pelo Stack Overflow – por serem extremamente populares e muito utilizadas, principalmente para páginas web.

Originalmente, ocupavam as terceira e segunda posições, mas separamos para deixar claro que não são linguagens de programação. Confira quais são:

CSS

CSS é uma linguagem que permite a definição de estilos e é utilizada para definir o layout e apresentação de páginas da internet, em complemento a outras linguagens como HTML. Sua principal vantagem é fazer a separação entre o formato (a aparência) e o conteúdo.

HTML

A base da internet é construída com a linguagem HTML. Ela é utilizada para o desenvolvimento de sites e é de fácil compreensão, tanto humana quanto de máquinas (como os bots dos mecanismos de buscas que percorrem a web para indexação de sites).

 

Publicado por Cedro Blog 

26 ago
Uma Projeção do Mercado de Computação em Nuvem

 

Computação em Nuvem se faz presente em nosso dia a dia de uma forma bem mais expressiva do que se imagina. Este serviço tornou-se quase que um pré-requisito de nossas atividades corriqueiras, como assistir um filme na Netflix, comprar com o cartão Nubank ou solicitar uma corrida pelo Uber, todos os exemplos são de empresas que executam suas aplicações em Nuvem.

 

Tecnologia Emergente

Uma das maiores empresas de consultoria na área de TI, Gartner, publicou em abril deste ano uma projeção das receitas do serviço de Nuvem Pública Mundial, na qual até final de 2019, os gastos estão previstos na ordem de $214,3 bilhões de dólares e em 2022, $ 331,2 bilhões de dólares. Essas receitas representam um aumento de na ordem de quase 55% em três anos, um mercado de tecnologia completamente emergente.

Um dos grandes marcos da Computação em Nuvem ocorreu em 2006, quando a Amazon Web Service passou a ofertar esta modalidade de serviço. Hoje, a oferta de provedores de nuvem é bem maior, destacando-se como os três principais provedores de Nuvem, a Amazon AWS, a Azure e a Google Cloud Platform, conforme evidenciado no relatório apresentado pela DevOps Research and Assessment (DORA) de 2018.

Em outubro de 2018, o Gartner discorreu a seguinte frase em seu Guia de Planejamento para Computação em Nuvem para 2019:

 “A Computação em Nuvem é a plataforma de inovação que o negócio digital exige. A nuvem se tornou a base que permite que as empresas se transformem, diferenciem e obtenham uma vantagem competitiva. ”

Diante de tantas assertivas apresentadas referente a Computação em Nuvem, convém questionar-se sobre expressividade deste modelo de serviço e o porquê de sua adoção. Sistemas executados em ambientes de Nuvem possuem:

Alta disponibilidade – Google Cloud, Amazon AWS e Azure dispõem de diversos Data Centers distribuídos geograficamente pelos países;
Dimensionamento automático – o hardware é redimensionado conforme o uso;
Escalabilidade – disponibilidade de recursos conforme demanda;
Grande oferta de serviços – Big Data, Inteligência Artificial, Blockchain, Internet das Coisas, entre outros.

Um aspecto relevante a se considerar é o financeiro: o cliente paga pelo o uso nos serviços de nuvem, portanto, torna-se economicamente mais barato do que a aquisição de equipamentos para disponibilizar o serviço na Internet.

 

No âmbito da Engenharia de Software

Do ponto de vista do Engenheiro de Software, para o projeto arquitetural de sistemas para o ambiente de Computação em Nuvem deve-se considerar alguns aspectos e saber usar as vantagens da Nuvem no projeto. O desacoplamento do código, a arquitetura de microsserviços, a execução destes em container, que são pequenos sistemas operacionais, e a gestão deste container pelo Kubernetes, são alguns exemplos de boas práticas nesta arquitetura.

Com isso, podemos concluir que o profissional de TI, de qualquer área, seja desenvolvedor, Engenheiro Software, analista de sistemas ou analista de infraestrutura, devem estar preparados, conhecer os serviços e acompanhar a evolução do mercado de Computação em Nuvem, somente desta forma sistemas passarão a ser altamente disponíveis, resilientes e tolerantes a falhas.

 

Está com dúvidas?
Estamos aqui pra ajudar! Envia um e-mail ou chama no whatsapp: (86) 3133-7070
Entrar em contato!
© 2017 iCEV Instituto de Ensino Superior
Esse domínio pertence ao Grupo Educacional Superior CEV
CNPJ: 12.175.436/0001-09