11 prognoz na przyszłość programowania

Jedyną rzeczą, która leci szybciej niż czas, jest postęp technologii. Pewnego razu po obiedzie przyjaciel projektujący chipy szybko przeprosił, zręcznie wyjaśniając, że prawo Moore'a oznacza, że ​​musi co tydzień ustawiać chipy o 0,67 procent szybciej, nawet na wakacjach. Gdyby tego nie zrobił, żetony nie podwajałyby się co dwa lata.

Teraz, gdy nadszedł rok 2017, nadszedł czas, aby podsumować nadchodzące zmiany technologiczne, choćby po to, aby pomóc Ci dowiedzieć się, gdzie warto postawić na budowanie umiejętności programowania na przyszłość.

Od narastającego bólu głowy związanego z bezpieczeństwem Internetu rzeczy po uczenie maszynowe na całym świecie - przyszłość programowania jest coraz trudniejsza do przewidzenia.

Chmura pokona Prawo Moore'a

Są tacy, którzy twierdzą, że firmy chipowe uderzyły w ścianę. Nie podwajają już szybkości żetonów co dwa lata, jak robili to w latach 80. i 90. XX wieku. Być może - ale to już nie ma znaczenia, ponieważ granice między chipami są mniej określone niż kiedykolwiek.

W przeszłości szybkość procesora w pudełku na biurku miała znaczenie, ponieważ, cóż, można było jechać tylko tak szybko, jak krzemowy chomik w środku mógł kręcić kołem. Kupowanie większego, szybszego chomika co kilka lat również podwajało Twoją produktywność.

Ale teraz procesor na twoim biurku ledwo wyświetla informacje na ekranie. Większość pracy jest wykonywana w chmurze, gdzie nie jest jasne, ile chomików pracuje nad Twoją pracą. Kiedy przeszukujesz Google, ich ogromna chmura może poświęcić 10, 20, a nawet 1000 chomików na znalezienie właściwej odpowiedzi.

Wyzwaniem dla programistów jest znalezienie sprytnych sposobów elastycznego wykorzystania wystarczającej mocy obliczeniowej do rozwiązania problemu każdego użytkownika, tak aby rozwiązanie było dostatecznie szybkie, a użytkownik nie nudził się i nie wędrował do witryny konkurencji. Dostępnych jest mnóstwo mocy. Firmy działające w chmurze pozwolą Ci obsłużyć zmiażdżenie użytkowników, ale musisz znaleźć algorytmy, które z łatwością działają równolegle, a następnie zorganizować synchroniczną pracę serwerów.

Bezpieczeństwo IoT będzie tylko bardziej przerażające

Botnet Mirai, który rozwinął się zeszłej jesieni, był sygnałem ostrzegawczym dla programistów, którzy tworzą nową generację internetu rzeczy. Te sprytne, małe urządzenia mogą zostać zainfekowane jak każdy inny komputer i mogą używać połączenia internetowego, aby siać spustoszenie i wypuścić psy wojny. A jak wszyscy wiedzą, psy mogą udawać kogokolwiek w Internecie.

Problem w tym, że obecny łańcuch dostaw gadżetów nie ma żadnego mechanizmu naprawiania oprogramowania. Cykl życia gadżetu zwykle zaczyna się od długiej podróży z zakładu produkcyjnego do magazynu, a na końcu do użytkownika. Rozłożenie między montażem a pierwszym użyciem nie jest normalne do 10 miesięcy. Gadżety są wysyłane na pół świata w ciągu tych długich miesięcy. Siedzą w pudłach czekających w kontenerach transportowych. Następnie siedzą na paletach w dużych sklepach z pudełkami lub w magazynach. Do czasu ich rozpakowania wszystko mogło się im przytrafić.

Wyzwaniem jest śledzenie tego wszystkiego. Wystarczająco trudno jest zaktualizować baterie w czujnikach dymu za każdym razem, gdy zmieniają się zegary. Ale teraz będziemy musieli się zastanowić nad naszym tosterem, naszą suszarką do ubrań i prawie wszystkim w domu. Czy oprogramowanie jest aktualne? Czy zastosowano wszystkie poprawki zabezpieczeń? Liczba urządzeń utrudnia inteligentne monitorowanie sieci domowej. Do mojego routera bezprzewodowego jest podłączonych ponad 30 urządzeń z adresami IP, a znam tylko 24 z nich. Gdybym chciał utrzymać inteligentną zaporę ogniową, zwariowałbym, otwierając odpowiednie porty dla odpowiednich inteligentnych rzeczy.

Danie tym urządzeniom szansy na uruchomienie dowolnego kodu jest błogosławieństwem i przekleństwem. Jeśli programiści chcą wykonywać sprytne zadania i pozwolić użytkownikom na maksymalną elastyczność, platformy powinny być otwarte. Tak rozkwita rewolucja twórców i kreatywność open source. Ale daje to również twórcom wirusów większe możliwości niż kiedykolwiek wcześniej. Wszystko, co muszą zrobić, to znaleźć jedną markę widgetów, która nie zaktualizowała konkretnego sterownika - voilà, znaleźli miliony widżetów przygotowanych do hostowania botów.

Wideo zdominuje internet na nowe sposoby

Kiedy komitet ds. Standardów HTML zaczął osadzać tagi wideo w samym HTML, prawdopodobnie nie miał wielkich planów przerobienia rozrywki. Chcieli prawdopodobnie tylko rozwiązać usterki z wtyczek. Ale podstawowe tagi wideo reagują na polecenia JavaScript, co sprawia, że ​​są zasadniczo programowalne.

To duża zmiana. W przeszłości większość filmów była konsumowana bardzo pasywnie. Siadasz na kanapie, naciskasz przycisk odtwarzania i widzisz, co redaktor filmu zdecydował, że powinieneś zobaczyć. Każdy, kto ogląda ten film o kotach, widzi koty w tej samej kolejności ustalonej przez twórcę filmu. Jasne, kilka szybkich filmów do przodu prowadzi do konkluzji z taką samą regularnością, jak szwajcarskie pociągi.

Kontrola wideo w języku JavaScript jest ograniczona, ale najzręczniejsi projektanci stron internetowych wymyślają sprytne sposoby na zintegrowanie wideo z resztą strony internetowej w jednolitym płótnie. Daje to użytkownikowi możliwość kontrolowania rozwoju narracji i interakcji z wideo. Nikt nie może być pewien, co sobie wyobrażą pisarze, artyści i redaktorzy, ale do tego będą potrzebować talentu programistycznego.

Wiele z najbardziej zręcznych witryn internetowych ma już wideo mocno działające w sprytnych miejscach. Wkrótce wszyscy będą chcieli przenosić rzeczy. Nie wystarczy umieścić IMGznacznik z plikiem JPEG. Musisz nagrać wideo - i poradzić sobie ze standardami, które podzieliły świat przeglądarki.

Konsole będą nadal zastępować komputery PC

Trudno się złościć na konsole do gier. Gry są świetne, a grafika niesamowita. Zbudowali świetne karty wideo i stosunkowo stabilne platformy oprogramowania, abyśmy mogli zrelaksować się w salonie i marzyć o strzelaniu do złych ludzi lub rzucaniu piłki nożnej.

Konsole do salonu to dopiero początek. Twórcy przedmiotów dla pozostałej części domu podążają tą samą drogą. Mogli wybrać ekosystem open source, ale producenci budują własne zamknięte platformy.

To fragmentuje rynek i utrudnia programistom utrzymanie wszystkiego w porządku. To, co działa na jednym włączniku światła, nie działa na innym. Suszarka do włosów może obsługiwać ten sam protokół co toster, ale prawdopodobnie nie będzie. To więcej pracy dla programistów nad przyspieszeniem i mniejszą liczbą możliwości ponownego wykorzystania naszej pracy.

Dane pozostaną królem

Po wyborach prezydenckich w USA w 2016 r. Znawcy słów naśmiewali się z tych, którzy podają dane, sugerując, że cała ich analiza statystyczna była głupotą. Prognozy były dramatycznie błędne, a ludzie z big data wyglądali źle.

Jak doszli do tego wniosku? Porównując jeden zestaw liczb (prognozy) z innym zestawem liczb (wyniki wyborów). Nadal potrzebowali danych.

Dane to sposób, w jaki widzimy w Internecie. Światło dostarcza nam informacji o prawdziwym świecie, ale liczby mówią nam o wszystkim w Internecie. Niektórzy ludzie mogą źle przewidywać na podstawie niedoskonałych liczb, ale to nie znaczy, że powinniśmy przestać zbierać i interpretować liczby.

Gromadzenie, zestawianie, porządkowanie i analizowanie danych nadal będzie jednym z najważniejszych zadań przedsiębiorstwa. Decydenci potrzebują liczb, a zadaniem programistów będzie nadal dostarczanie danych w sposób łatwiejszy do zrozumienia. Nie oznacza to, że odpowiedzi będą doskonałe. Kontekst i intuicja nadal będą odgrywać rolę, ale potrzeba zmagania się z danymi nie zniknie tylko dlatego, że kilka osób przewidziało, że Donald Trump nie zostanie wybrany. Oznacza to więcej pracy dla programistów, ponieważ nie widać końca naszej potrzeby tworzenia większego, szybszego i wymagającego większej ilości danych oprogramowania.

Uczenie maszynowe stanie się nową funkcją standardową

Kiedy dzieci w college'u biorą udział w kursie „Struktury danych”, uczą się, jak wyglądało życie, gdy ich dziadkowie pisali kod i nie mogli polegać na istnieniu warstwy zwanej „bazą danych”. Prawdziwi programiści musieli przechowywać, sortować i łączyć tabele pełne danych bez pomocy Oracle, MySQL czy MongoDB.

Algorytmy uczenia maszynowego są jeszcze kilka lat od wykonania takiego skoku. Obecnie programiści i naukowcy zajmujący się danymi muszą napisać znaczną część własnego kodu, aby przeprowadzić złożoną analizę. Wkrótce języki takie jak R i niektóre z najmądrzejszych narzędzi analizy biznesowej przestaną być wyjątkowe i zaczną być regularną funkcją większości stosów oprogramowania. Przejdą od czterech lub pięciu specjalnych slajdów w prezentacji PowerPoint do małego prostokąta na rysunku architektury, który jest uważany za pewnik.

Nie stanie się to z dnia na dzień i nie jest jasne, jaki dokładnie będzie to kształt, ale jasne jest, że coraz więcej biznesplanów zależy od algorytmów uczenia maszynowego, które znajdują najlepsze rozwiązania.

Projekt interfejsu użytkownika stanie się bardziej skomplikowany w miarę zanikania komputerów

Każdego dnia wydaje się, że jest jeden powód mniej, by używać komputera. Między pojawieniem się smartfonów, konsol salonowych i tabletów, jedynymi ludźmi, którzy nadal wydają się trzymać się komputerów, są pracownicy biurowi i studenci, którzy muszą oddać zadanie.

Może to stanowić wyzwanie dla programistów. Kiedyś łatwo było założyć, że użytkownicy oprogramowania lub strony internetowej będą mieli klawiaturę i mysz. Teraz wielu użytkowników też nie ma. Użytkownicy smartfonów wciskają palce w szklany ekran, na którym ledwo mieści się wszystkie 26 liter. Użytkownicy konsoli naciskają klawisze strzałek na pilocie.

Projektowanie stron internetowych staje się trudniejsze, ponieważ zdarzenie dotykowe różni się nieco od zdarzenia kliknięcia. Użytkownicy mają różną precyzję, a ekrany różnią się znacznie pod względem wielkości. Nie jest łatwo to wszystko uporządkować, a w nadchodzących latach będzie tylko gorzej.

Koniec otwartości

Upadek komputera to nie tylko powolna śmierć konkretnego formatu. To umieranie szczególnie otwartego i przyjaznego rynku. Śmierć komputera będzie zamknięciem możliwości.

Kiedy komputery były wysyłane po raz pierwszy, programista mógł skompilować kod, skopiować go na dyski, włożyć dyski do toreb ze strunami, a świat mógł go kupić. Nie było żadnego pośrednika, odźwiernego, żadnej surowej centralnej siły proszącej nas, byśmy powiedzieli: „Mamo, czy mogę?

Konsole są szczelnie zamknięte. Nikt nie wchodzi na ten rynek bez zainwestowania kapitału. Sklepy z aplikacjami są nieco bardziej otwarte, ale nadal są otoczonymi murem ogrodami, które ograniczają to, co możemy zrobić. Jasne, nadal są otwarte dla programistów, którzy skaczą przez odpowiednie obręcze, ale każdy, kto wykona fałszywy ruch, może zostać odrzucony. (W jakiś sposób zawsze opóźniają działanie naszych aplikacji, gdy złośliwe oprogramowanie przedostaje się przez nie.

To rozróżnienie jest ważne w przypadku oprogramowania typu open source. Nie chodzi tylko o sprzedaż dyskietek w torebkach. Tracimy możliwość udostępniania kodu, ponieważ tracimy możliwość kompilowania i uruchamiania kodu. Koniec PC to duża część końca otwartości. Na razie większość ludzi, którzy to czytają, prawdopodobnie ma przyzwoity pulpit, który może kompilować i uruchamiać kod, ale to się powoli zmienia.

Mniej osób ma możliwość pisania kodu i udostępniania go. W całej rozmowie o potrzebie nauczania programowania następnej generacji jest mniej praktycznych wektorów do rozpowszechniania otwartego kodu.

Autonomiczny transport jest tutaj na dłużej

To nie same samochody. Niektórzy chcą budować autonomiczne samoloty, które nie są obciążone potrzebą drogową. Inni chcą tworzyć autonomiczne deskorolki do bardzo lekkich podróży. Jeśli się poruszy, jakiś haker marzy o wskazaniu mu, gdzie ma iść.

Programiści nie będą kontrolować tego, co ludzie widzą na ekranie. Będą kontrolować, dokąd ludzie się udają i jak wchodzą w interakcję ze światem. A ludzie są tylko częścią gry. Wszystkie nasze rzeczy również będą się poruszać autonomicznie.

Jeśli chcesz kolację od słynnego szefa kuchni z centrum miasta, autonomiczna deskorolka z ogrzewaną komorą może przywieźć ją do Twojego domu. Jeśli chcesz, aby twój trawnik był skoszony, autonomiczna kosiarka zastąpi dzieciaka z sąsiedztwa.

A programiści mogą wykorzystać wszystkie fajne pomysły, które mieli podczas pierwszej rewolucji internetowej. Jeśli myślałeś, że wyskakujące reklamy były złe w Internecie, poczekaj, aż programiści otrzymają zapłatę za przekierowanie Twoich autonomicznych wrotek przez otwór wentylacyjny nowej restauracji. Jeszcze głodny?

Prawo znajdzie nowe ograniczenia

Tusz ledwo wysechł na Karcie Praw, kiedy zaczęły się debaty na temat tego, co oznacza rozsądne poszukiwanie naszych dokumentów. Teraz, ponad 200 lat później, wciąż spieramy się o szczegóły.

Zmiany technologiczne otwierają nowe drogi dla prawa. Kilka lat temu Sąd Najwyższy uznał, że technologia śledzenia pojazdów wymaga nakazu. Ale to tylko wtedy, gdy policja umieści lokalizator w samochodzie. Nikt tak naprawdę nie wie, jakie zasady obowiązują, gdy ktoś wzywa dane śledzenia z Waze, Map Google lub dowolnej z setek innych aplikacji, które buforują nasze lokalizacje.

A co z wpływem na sposób działania maszyn? Pobieranie danych to jedno, ale ich zmiana jest również przerażająco kusząca. Czy podrabianie dokumentów, nagłówków lub fragmentów jest sprawiedliwe dla policji (lub podmiotów prywatnych)? Czy ma znaczenie, czy celem są prawdziwi terroryści, czy po prostu ludzie, którzy zbyt długo zaparkowali w miejscu, w którym nie ma parkingu bez zasilania licznika?