Futuro do desenvolvemento de software: Futuro dos ordenadores P2

CRÉDITO DA IMAXE: Quantumrun

Futuro do desenvolvemento de software: Futuro dos ordenadores P2

    En 1969, Neil Armstrong e Buzz Aldrin convertéronse en heroes internacionais despois de ser os primeiros humanos en pisar a Lúa. Pero aínda que estes astronautas foron os heroes ante as cámaras, hai miles de heroes descoñecidos que sen a súa participación, ese primeiro alunizaxe tripulado non sería imposible. Algúns destes heroes foron os desenvolvedores de software que codificaron o voo. Por que?

    Ben, os ordenadores que existían naquel momento eran moito máis sinxelos que hoxe. De feito, o teléfono intelixente desgastado da persoa media é varias ordes de magnitude máis poderoso que calquera cousa a bordo da nave espacial Apollo 11 (e toda a NASA dos anos 1960). Ademais, os ordenadores daquela época eran codificados por desenvolvedores de software especializados que programaban o software no máis básico das linguaxes de máquinas: AGC Assembly Code ou simplemente, 1s e 0s.

    Para o contexto, un destes heroes descoñecidos, o director da División de Enxeñaría de Software do programa espacial Apolo, Margaret Hamilton, e o seu equipo tivo que escribir unha montaña de código (na imaxe de abaixo) que usando as linguaxes de programación actuais podería escribirse cunha fracción do esforzo.

    (Na imaxe superior vese Margaret Hamilton de pé xunto a unha pila de papel que contén o software Apollo 11).

    E a diferenza dos nosos días, onde os desenvolvedores de software codifican para preto do 80-90 por cento dos posibles escenarios, para as misións Apollo, o seu código tiña que dar conta de todo. Para poñer isto en perspectiva, a propia Margaret dixo:

    "Debido a un erro no manual da lista de verificación, o interruptor do radar de cita foi colocado na posición incorrecta. Isto fixo que enviara sinais erróneos ao ordenador. O resultado foi que se lle pediu ao ordenador que realizase todas as súas funcións normais para aterrar. mentres recibía unha carga extra de datos espurios que ocupaba o 15 % do seu tempo. O ordenador (ou mellor dito o software) era o suficientemente intelixente como para recoñecer que se lle pedía que realizase máis tarefas das que debería realizar. Despois enviou unha alarma, o que significaba para o astronauta, estou sobrecargado con máis tarefas das que debería facer neste momento, e vou manter só as tarefas máis importantes, é dicir, as necesarias para aterrar... , o ordenador foi programado para facer algo máis que recoñecer as condicións de erro.Incorporouse ao software un conxunto completo de programas de recuperación.A acción do software, neste caso, foi eliminar tarefas de menor prioridade e restablecer as máis importantes... Se o ordenador non o fixeraRecoñeceu este problema e tomou medidas de recuperación, dubido que o Apolo 11 fose o éxito lunar que foi".

    — Margaret Hamilton, directora de Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", Carta a Datamation, Marzo 1, 1971

    Como se insinuou anteriormente, o desenvolvemento de software evolucionou desde aqueles primeiros tempos de Apollo. As novas linguaxes de programación de alto nivel substituíron o tedioso proceso de codificación con 1 e 0 por codificación con palabras e símbolos. As funcións como xerar un número aleatorio que antes requirían días de codificación agora substitúense por escribir unha única liña de comandos.

    Noutras palabras, a codificación do software tornouse cada vez máis automatizada, intuitiva e humana con cada década que pasa. Estas calidades só continuarán no futuro, guiando a evolución do desenvolvemento de software de maneira que terá un profundo impacto na nosa vida cotiá. Isto é o que este capítulo da Futuro da informática serie explorará.

    Desenvolvemento de software para as masas

    O proceso de substitución da necesidade de codificar 1 e 0 (linguaxe máquina) por palabras e símbolos (linguaxe humana) denomínase proceso de engadir capas de abstraccións. Estas abstraccións viñeron en forma de novas linguaxes de programación que automatizan funcións complexas ou comúns para o campo para o que foron deseñadas. Pero a principios dos anos 2000 xurdiron novas compañías (como Caspio, QuickBase e Mendi) que comezaron a ofrecer o que se chaman plataformas sen código ou baixo código.

    Trátase de paneis en liña fáciles de usar que permiten a profesionais non técnicos crear aplicacións personalizadas adaptadas ás necesidades da súa empresa mediante a unión de bloques visuais de código (símbolos/gráficos). Noutras palabras, en lugar de cortar unha árbore e transformala nun armario, constrúea usando pezas prefabricadas de Ikea.

    Aínda que usar este servizo aínda require un certo nivel de coñecementos en informática, xa non necesitas un título en informática, pero usalo. Como resultado, esta forma de abstracción está a permitir o aumento de millóns de novos "desenvolvedores de software" no mundo corporativo e está a permitir que moitos nenos aprendan a codificar a unha idade máis temperá.

    Redefinindo o que significa ser un programador de software

    Houbo un tempo no que unha paisaxe ou o rostro dunha persoa só se podían plasmar nun lenzo. Un pintor tería que estudar e practicar durante anos como aprendiz, aprendendo o oficio da pintura: como mesturar cores, cales son as mellores ferramentas, as técnicas correctas para executar un visual específico. O custo do oficio e os moitos anos de experiencia necesarios para realizalo ben tamén fixeron que os pintores fosen poucos.

    Despois inventouse a cámara. E co clic dun botón captáronse paisaxes e retratos nun segundo que, doutro xeito, tardarían días ou semanas en pintarse. E a medida que as cámaras melloraron, facíanse máis baratas e abundaban ata un punto no que agora se inclúen incluso no teléfono intelixente máis básico, capturar o mundo que nos rodea converteuse nunha actividade común e casual na que agora participan todos.

    A medida que as abstraccións progresan e as novas linguaxes de software automatizan o traballo de desenvolvemento de software cada vez máis rutineiro, que significará ser un desenvolvedor de software dentro de 10 ou 20 anos? Para responder a esta pregunta, vexamos como os futuros desenvolvedores de software probablemente farán para construír as aplicacións de mañá:

    *En primeiro lugar, desaparecerán todos os traballos de codificación estandarizados e repetitivos. No seu lugar haberá unha vasta biblioteca de comportamentos de compoñentes predefinidos, interfaces de usuario e manipulacións de fluxo de datos (partes de Ikea).

    *Como hoxe, os empresarios ou empresarios definirán obxectivos específicos e entregas para que os desenvolvedores de software os executen a través de aplicacións ou plataformas de software especializadas.

    *A continuación, estes desenvolvedores trazarán a súa estratexia de execución e comezarán a crear prototipos dos primeiros borradores do seu software accedendo á súa biblioteca de compoñentes e utilizando interfaces visuais para vinculalos entre si: interfaces visuais ás que se accede mediante realidade aumentada (AR) ou realidade virtual (VR).

    * Os sistemas de intelixencia artificial (IA) especializados deseñados para comprender os obxectivos e os resultados que implican os borradores iniciais dos seus desenvolvedores, perfeccionarán despois o deseño do software redactado e automatizarán todas as probas de garantía de calidade.

    *En función dos resultados, a IA fará unha multitude de preguntas ao programador (probablemente mediante comunicación verbal, tipo Alexa), buscando comprender e definir mellor os obxectivos e entregas do proxecto e discutir como debería actuar o software en varios escenarios. e ambientes.

    *En función dos comentarios do programador, a IA aprenderá gradualmente a súa intención e xerará o código para reflectir os obxectivos do proxecto.

    *Esta colaboración humana-máquina iterará versión tras versión do software ata que unha versión acabada e comercializable estea lista para a súa implementación interna ou para a venda ao público.

    *De feito, esta colaboración continuará despois de que o software estea exposto ao uso no mundo real. A medida que se informan de erros simples, a IA solucionaraos automaticamente de forma que reflicta os obxectivos orixinais desexados descritos durante o proceso de desenvolvemento de software. Mentres tanto, os erros máis graves requirirán unha colaboración humano-IA para resolver o problema.

    En xeral, os futuros desenvolvedores de software centraranse menos no "como" e máis no "que" e "por que". Serán menos artesáns e máis arquitectos. A programación será un exercicio intelectual que requirirá persoas que poidan comunicar metódicamente a intención e os resultados dun xeito que unha IA poida comprender e despois codificar automaticamente unha aplicación ou plataforma dixital terminada.

    Desenvolvemento de software impulsado pola intelixencia artificial

    Tendo en conta a sección anterior, está claro que consideramos que a IA desempeñará un papel cada vez máis central no campo do desenvolvemento de software, pero a súa adopción non é só co propósito de facer que os desenvolvedores de software sexan máis eficaces, tamén hai forzas empresariais detrás desta tendencia.

    A competencia entre as empresas de desenvolvemento de software é cada vez máis feroz cada ano que pasa. Algunhas empresas compiten comprando aos seus competidores. Outros compiten na diferenciación do software. O desafío con esta última estratexia é que non é facilmente defendible. Calquera característica de software ou mellora que unha empresa ofreza aos seus clientes, os seus competidores poden copiar con relativa facilidade.

    Por este motivo, quedan atrás os tempos nos que as empresas lanzan software novo cada un ou tres anos. Nestes días, as empresas que se centran na diferenciación teñen un incentivo financeiro para lanzar novos software, correccións de software e funcións de software de forma cada vez máis regular. Canto máis rápido innoven as empresas, máis fidelizan os clientes e aumentan o custo de cambiar aos competidores. Este cambio cara á entrega regular de actualizacións de software incrementais é unha tendencia chamada "entrega continua".

    Desafortunadamente, a entrega continua non é fácil. Apenas unha cuarta parte das empresas de software actuais poden executar o calendario de lanzamento que se esixe desta tendencia. E por iso hai tanto interese en usar a IA para acelerar as cousas.

    Como se indicou anteriormente, a IA desempeñará un papel cada vez máis colaborativo na elaboración e desenvolvemento de software. Pero a curto prazo, as empresas úsano para automatizar cada vez máis os procesos de garantía de calidade (probas) do software. E outras empresas están experimentando co uso da intelixencia artificial para automatizar a documentación do software: o proceso de seguimento do lanzamento de novas funcións e compoñentes e como se produciron ata o nivel de código.

    En xeral, a IA terá cada vez máis un papel central no desenvolvemento de software. Aquelas compañías de software que dominan o seu uso cedo, finalmente gozarán dun crecemento exponencial sobre os seus competidores. Pero para realizar estas ganancias da intelixencia artificial, a industria tamén terá que ver avances no lado do hardware; a seguinte sección elaborarase neste punto.

    O software como servizo

    Todo tipo de profesionais creativos usan o software de Adobe cando crean obras de arte ou deseño dixital. Durante case tres décadas, adquiriu o software de Adobe como un CD e foi propietario do seu uso a perpetuidade, comprando futuras versións actualizadas segundo fose necesario. Pero a mediados da década de 2010, Adobe cambiou a súa estratexia.

    En lugar de comprar CDs de software con claves de propiedade molestamente elaboradas, os clientes de Adobe agora terían que pagar unha subscrición mensual para o dereito a descargar software de Adobe nos seus dispositivos informáticos, software que só funcionaría xunto cunha conexión a Internet regular a constante aos servidores de Adobe. .

    Con este cambio, os clientes xa non eran propietarios do software de Adobe; alugárono segundo as necesidades. A cambio, os clientes xa non teñen que comprar constantemente versións actualizadas do software de Adobe; sempre que se subscribían ao servizo de Adobe, sempre terían as últimas actualizacións cargadas no seu dispositivo inmediatamente despois do lanzamento (moitas veces varias veces ao ano).

    Este é só un exemplo dunha das maiores tendencias de software que vimos nos últimos anos: como o software está a pasar ao servizo en lugar dun produto autónomo. E non só software máis pequeno e especializado, senón sistemas operativos completos, como vimos co lanzamento da actualización de Microsoft Windows 10. Noutras palabras, software como servizo (SaaS).

    Software de autoaprendizaxe (SLS)

    A partir do cambio da industria cara a SaaS, está xurdindo unha nova tendencia no espazo do software que combina SaaS e AI. As principais empresas de Amazon, Google, Microsoft e IBM comezaron a ofrecer a súa infraestrutura de IA como servizo aos seus clientes.

    Noutras palabras, a IA e a aprendizaxe automática xa non son accesibles só para os xigantes do software, agora calquera empresa e desenvolvedor pode acceder a recursos de IA en liña para crear software de autoaprendizaxe (SLS).

    Discutiremos o potencial da IA ​​en detalle na nosa serie Future of Artificial Intelligence, pero para o contexto deste capítulo, diremos que os desenvolvedores de software actuais e futuros crearán SLS para crear novos sistemas que anticipen as tarefas que deben facer e simplemente complétaos automaticamente.

    Isto significa que un futuro asistente de intelixencia artificial aprenderá o teu estilo de traballo na oficina e comezará a completar tarefas básicas por ti, como dar formato aos documentos tal e como che gustan, redactar os teus correos electrónicos no teu ton de voz, xestionar o teu calendario de traballo e moito máis.

    Na casa, isto podería significar que un sistema SLS xestione a túa futura casa intelixente, incluíndo tarefas como prequecer a túa casa antes de chegar ou facer un seguimento dos produtos que necesitas comprar.

    Na década de 2020 e na década de 2030, estes sistemas SLS desempeñarán un papel vital nos mercados corporativos, gobernamentais, militares e de consumo, axudando gradualmente a cada un a mellorar a súa produtividade e reducir os residuos de todo tipo. Trataremos a tecnoloxía SLS con máis detalle máis adiante nesta serie.

    Non obstante, todo isto ten unha trampa.

    A única forma en que funcionan os modelos SaaS e SLS é se Internet (ou a infraestrutura que hai detrás) segue crecendo e mellorando, xunto co hardware de computación e almacenamento que executa a "nube" na que operan estes sistemas SaaS/SLS. Afortunadamente, as tendencias que estamos a seguir son prometedoras.

    Para saber como medrará e evolucionará Internet, lea o noso Futuro de Internet serie. Para saber máis sobre como avanzará o hardware do ordenador, segue lendo usando as ligazóns que aparecen a continuación.

    Serie Futuro das Computadoras

    Interfaces de usuario emerxentes para redefinir a humanidade: o futuro dos ordenadores P1

    A revolución do almacenamento dixital: o futuro dos ordenadores P3

    Unha lei de Moore esvaecida para provocar un replanteamento fundamental dos microchips: Future of Computers P4

    A computación na nube faise descentralizada: o futuro das computadoras P5

    Por que os países compiten para construír os maiores supercomputadores? Futuro da informática P6

    Como as computadoras cuánticas cambiarán o mundo: o futuro das computadoras P7    

    Próxima actualización programada para esta previsión

    2023-02-08

    Referencias de previsión

    As seguintes ligazóns populares e institucionais foron referenciadas para esta previsión:

    As seguintes ligazóns Quantumrun foron referenciadas para esta previsión: