#main, 9 maja 2016

By 10 May 2016 #main

Wprawdzie ponown­ie do wtorkowej kawy, ale za to przy słoneczku — zaprasza­my do kole­jnego #maina!

Cykl #main to punkt początkowy Waszego tygod­nia,  prasówka, w której zbier­amy ciekawe lin­ki, dzie­limy się infor­ma­c­ja­mi, a także podsyłamy pro­gramisty­czne zadanie. Mamy nadzieję, że w ten sposób umil­imy Wam poniedzi­ałkowy powrót do rzeczywistości ;)

Podsumowanie ankiety z zeszłego tygodnia

wyniki ankiety.001Wg naszych czytel­ników najlep­szym pro­jek­tem na start jest coś, co rozwiązu­je Two­ją potrze­bę — jeśli zaczy­nasz uczyć się pro­gramowa­nia, pomyśl, jak może pomóc Ci na codzień!

Elektryczne play-doh!

Elek­tryczność i elek­tron­i­ka więk­szoś­ci z nas kojarzy się z lekc­ja­mi fizy­ki w liceum lub stu­di­a­mi, gdzie tem­aty te pojaw­iały się po raz pier­wszy. W rzeczy­wis­toś­ci pod­sta­wowe zasady są znacznie prost­sze i moż­na ich uczyć poprzez zabawę! Na kick­starterze moż­na wesprzeć ‚Squishy Cir­cuits’ — plas­telinę, która prze­wodzi prąd, dzię­ki czemu moż­na za jej pomocą budować pod­sta­wowe układy elek­tron­iczne, oswa­ja­jąc dzieci z elek­trycznoś­cią. Gorą­co polecamy!

Sztuczna inteligencja dla każego

Elona Mus­ka przed­staw­iać chy­ba niko­mu nie trze­ba — ostat­nio angażu­je się on m.in. w inic­jaty­wę SpaceX, jest też założy­cielem Tes­la Motors. Ostat­nio coraz głośniej o jego kole­jnym rewolucyjnym pomyśle — Ope­nAI. Do tej pory sztucz­na inteligenc­ja na tyle zaawan­sowana, że pozwala na sterowanie duży­mi rob­o­t­a­mi, anal­izę big data itp była dostęp­na tylko i wyłącznie dla najwięk­szych i najbo­gat­szych firm. Ope­nAI ma to zmienić — celem firmy jest stworze­nie narzędzi i algo­ryt­mów dostęp­nych dla każdego, bez wyjątku. Pier­wsze bib­liote­ki są już możli­we do pobra­nia, zachę­camy do eksperymentowania!

Artykuł w ser­wisie wired.com
Strona pro­jek­tu

Robo-społeczność karaluchów

Na przestrzeni dziejów ludzkość obaw­iała się, że kon­trolę nad światem prze­jmą kar­aluchy, potem robo­ty. Cóż, wyglą­da na to, że to się dzieje, a pier­wsze robo-kar­aluchy już umieją współpra­cow­ać ;) Póki co chodzi o wchodze­nie na wyższe plat­formy (np. po schodach), niedostęp­ne dla poje­dynczych osob­ników. Naukow­cy ‚nauczyli’ robo­ty współpra­cow­ać ze sobą, dzię­ki czemu potrafią wspól­nym wysiłkiem dostać się na wyższą plat­for­mę. Daleko im do prze­ję­cia świa­ta, ale sama idea i potenc­jalne jej zas­tosowa­nia są wręcz nieograniczone!

Artykuł w ser­wisie geek.com

DLC a samochody

DLC (ang. Down­load­able Con­tent) to idea pop­u­lar głównie w grach — za określoną opłatę może­my pobrać dodatkowe mod­uły, np. nową plan­szę do gry, inną postać itp. Tes­la Motors poszła o krok dalej i przeniosła tą ideę do samo­chodów — mod­el s 70 ofer­owany jest w wer­sji z bater­ią 70 kWh oraz 75 kWh, a jedy­na różni­ca pomiędzy nimi tkwi w opro­gramowa­niu. Za dodatkową opłatą (bagatela 3000$), samochód może pobrać ‚aktu­al­iza­cję’, która odbloku­je dodatkową pojem­ność. To pier­wszy tego typu pomysł, choć wyni­ka z praw ekonomii (i prak­tyk stosowanych od daw­na w branży elek­tron­i­ki użytkowej) — taniej jest wypro­dukować jed­ną wer­sję i ‚ograniczyć’ ją w późniejszym etapie (np. za pomocą oprogramowania).

Artykuł w ser­wisie geek.com

Odpowiedź na pytanie z zeszłego tygodnia

A pytal­iśmy o to: jaka jest różni­ca pomiędzy przeład­owaniem (over­load­ing) a przesła­ni­an­iem (over­rid­ing) metod w Javie?

Pier­wszy mech­a­nizm — przeład­owanie — jest związany z samym językiem i pole­ga na tym, że może­my zdefin­iować dwie metody o tej samej nazwie, ale przyj­mu­jące np. inną ilość lub typ argu­men­tów, przez co w prak­tyce są różny­mi meto­da­mi. Z punk­tu widzenia języ­ka, jest to sto­sunkowo proste rozwiązanie, ale znacznie upraszcza pro­jek­towanie inter­fe­jsów czy korzys­tanie z bib­liotek dla zwykłych użytkown­ików (przykła­dem zas­tosowa­nia są na przykład metody assertE­quals uży­wane np. przy testowa­niu). Przykład­owy kod:

public class OverloadedMethods {
    public doSomething(String subject) {…}
    public doSomething(Integer numericSubject) {…}
}

 

Over­rid­ing z kolei to mech­a­nizm związany z dziedz­icze­niem i polimor­fizmem, który pole­ga na tym, że klasy dziedz­iczące po innej mogą ‚przesłonić’ czy też ‚nad­pisać’ metodę swo­jego rodz­i­ca, mody­fiku­jąc jej dzi­ałanie. Dzię­ki temu zachowanie obiek­tu-dziec­ka może być inne niż obiek­tu-rodz­i­ca w określonej sytu­acji, co poma­ga orga­ni­zować naszą aplikację w log­iczny sposób.
Przykład przesła­ni­a­nia metod:

public class Parent {
    public doSomething(String input) {System.out.println(input);}
}
public class OverridingChildren extends Parent {
    public doSomething(String input) {System.out.println(input + „ processed in children class”);}
}

Więcej infor­ma­cji zna­jdziesz na poniższych stronach:
Przesła­ni­an­ie na stron­ie beginnersbook.com
Przeład­owanie na stron­ie beginnersbook.com
Przeład­owanie metod na stron­ie oracle.com
Przesła­ni­an­ie metod na stron­ie oracle.com

Jak wyświetlić (wypisać w konsoli) datę i godzinę w wybranym formacie?

Oczy­wiś­cie zachę­camy do samodziel­nego odpowiedzenia na pytanie. Za tydzień nasza odpowiedź.

Więcej pytań tech­nicznych z poprzed­nich mainów wraz z linka­mi do odpowiedzi zna­jdziesz tutaj! 

Claude Elwood Shannon

Claude Shan­non może być śmi­ało nazy­wany ojcem tego, co dzisi­aj znamy jak o’układy cyfrowe’, i to z 2 powodów! Już jako stu­dent na MIT, w wieku 21 lat opub­likował pracę na tem­at zas­tosowa­nia alge­bry Boole’a w układach elek­trycznych, udowad­ni­a­jąc, że może ona posłużyć do zbu­dowa­nia dowol­nego sys­te­mu log­icznego. W pod­sumowa­niu przed­staw­ił kil­ka przykład­owych zas­tosowań, w tym np. 4‑bitowy suma­tor (układ doda­ją­cy dwie licz­by). Warto wspom­nieć, że było to w roku 1937. Pra­ca ta dała pod­waliny całej gałęzi nau­ki, w której raz jeszcze w roku 1948 dokon­ał rewolucji — pub­liku­jąc przeło­mową pracę “A Math­e­mat­i­cal The­o­ry of Com­mu­ni­ca­tion”. Pos­tu­lował w niej, że każdą infor­ma­cję (np. tekst , dźwięk czy obrazy) da się zapisać za pomocą zer i jedynek, a więc także przetwarzać. To, co dzisi­aj wyda­je nam się oczy­wiste, na pewno takie nie było w roku 1948. Pra­ca ta dała pod­waliny pod kole­jne gałęzie tego, co obec­nie nazy­wamy IT — kom­put­ery mogły przes­tać być jedynie ogrom­ny­mi kalku­la­tora­mi. Jak­by tego było mało, miał spory udzi­ał w łama­niu szyfrów uży­wanych pod­czas i po II wojnie świa­towej (współpra­cow­ał przez krót­ki czas m.in. z Allanem Turingiem) — przy okazji defini­u­jąc pod­stawy do numerycznej anal­izy szyfrów.

To, co wyróż­ni­ało go spośród wielu współczes­nych mu naukow­ców, było metody­czne pode­jś­cie do prob­le­mu; zami­ast tworzyć rozwiąza­nia ad-hoc, starał się zrozu­mieć zagad­nie­nie i rozwiązać je całoś­ciowo, a nie zaradz­ić prob­le­mom. Przykład­owo pra­ca na tem­at ‚wygładza­nia’ danych związanych z obliczaniem tra­jek­torii lotu pocisku jest w rzeczy­wis­toś­ci pracą poświę­coną anal­izie i sep­a­rowa­niu syg­nału od ‚szu­mu’ w dowol­nym sys­temie komu­nika­cyjnym (co znalazło zresztą niemałe zas­tosowanie w trans­misji radiowej i późniejszych sys­temach wymi­any infor­ma­cji). Do dziś uważany jest za jed­ną z najwybit­niejszych osób, które przy­czyniły się do pow­sta­nia i roz­wo­ju kom­put­erów i tech­nologii cyfrowych.

Artykuł w ser­wisie Sci­en­tif­ic American
Strona wikipedii na jego temat
Pra­ca mag­is­ter­s­ka — z przykłada­mi układów logicznych

Pytanie na ten tydzień

Ide­al­ny trans­port do pra­cy, to …
  • Add your answer