fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
6 minut

Jak poszerzać horyzonty?


23.08.2016

Nieustannie rośnie popularność kultury “polyglot programmer”. Czyli: jestem “programistą”, a nie “programistą .NET“, “programistą Java” albo “programistą Ruby” albo… Ale czy idą za tym czyny?

JavaScript i inne takie, popularne

Wielojęzyczność programistów wymuszona jest warunkami, w jakich przyszło pracować. Prawda? Kiedyś web-developer to klepał formatki w designerze, obsługiwał “onlick” i wrzucał w internety. Dobrze było, prosto było. Prawda? Jedyne, co trzeba było umieć, to jakiś język server-side, sql (4 słowa kluczowe na krzyż), html (nawet językiem ciężko to nazwać) i może trochę styli. Prawda?

Aż tu nagle 10 lat temu nadeszła rewolucja AJAXowa i javascript przestał służyć tylko do ruszania divów po ekranie. Od tamtej pory ogromna rzesza programistów musiała NAPRAWDĘ stać się programistami-poliglotami. Czyli: porządnie nauczyć się więcej niż jednego języka. Teraz był to “mój język” + javascript. Tak? Ano nie do końca. Powinni, ale… tego nie zrobili.

Nadal mało kto porządnie zna JavaScript mimo tego, że ogromna większość programistów w ten czy inny sposób go dotyka. A świat się nie zawalił.

Czy trzeba?

Czy zatem TRZEBA starać się rozwijać swoje umiejętności w innych technologiach, skoro “dobrze jest jak jest”? Po pierwsze: tak. A po drugie: wcale nie jest dobrze! :)

Nawet pobieżne liźnięcie czegoś NOWEGO może narodzić ciekawą perspektywę. Nie musisz być ultra-pro-wyjadaczem, aby wiedzieć, co w trawie piszczy. Poznać inny paradygmat, inną filozofię. Na chwilę przestać walczyć o “swój najlepszy język” i starać się zrozumieć argumenty z drugiej strony.

Właściwie o to powinno nam wszystkim chodzić: o parcie do przodu. O “niestanie” w miejscu. Nie za wszelką cenę i nie wielkim kosztem, ale zdroworozsądkowo.

Ciekawie pisał o tym Kamil Lelonek w swoim tekście “Be a polyglot programmer“. Zerknijcie.

Jak?

Można klepać pet-projects. Sam do tego namawiałem w tekście “O pet projects“. To najskuteczniejszy sposób. Najbardziej wydajny. Ale też: dość wymagający.

“Przecież ja nie mam czasu”. “Mi się jednak nie chce”. OK, kupuję to. Kiedyś bym się kłócił, że tak nie można, ale z wiekiem zaczynam coraz więcej akceptować.

A gdyby można było… inaczej? Powiem nawet: łatwiej? Tak, jest taka droga.

Można pojechać na konferencję, ale inną niż zwykle! Na konferencję taką, gdzie każdy tytuł to dla nas nowość. Konferencję poświęconą innej niż “nasza” technologii. Nie tylko nauczysz się bardzo, ale to bardzo dużo z poszczególnych prezentacji, ale też skorzystać z pozostałych okoliczności. Każda rozmowa na korytarzu będzie nowym doświadczeniem. Dyskusja przy browarze otworzy Ci oczy na dylematy, z jakimi borykają się programiści z innego ogródka. A to może być naprawdę fascynujące doświadczenie.

Równo rok temu wziąłem udział w fajnej inicjatywie: Ruby On Lakes. Zacne kilkudziesięcioosobowe dev-grono na łódkach rozprawia o programowaniu. Zwiedzając Mazury drogą wodną. Wynajmując sale w portach i wystawiając tam techniczne prezentacje. Jaki świetny pomysł, co nie? A jakże!

To tam dotarło do mnie, że codzienna praca programisty Ruby wygląda naprawdę inaczej niż praca .NETowca. Wyzwania są różne nawet, jeżeli pisze się system o podobnej złożoności! Programistyczne koncepcje doskonale znane w jednym środowisku są w drugim nowością. I odwrotnie. Jedna technologia ma świetne narzędzia rozwiązujące problemy będące bolączką w drugiej technologii. I… odwrotnie. Mentalność też jest inna, inaczej postrzegamy swoje obowiązki. Ba, pracujemy na innym sprzęcie i w inny sposób! Programista programiście nierówny, szczególnie jeśli patrzymy na zupełnie różne kultury i podejścia do programowania.

Zrób sobie przysługę i pojedź kiedyś na konferencję, która Ciebie bezpośrednio nie dotyczy. Zobaczysz jakie to dziwne uczucie. Fajne uczucie.

Za kilka dni wyruszam na drugą edycję RoL. Już się doczekać nie mogę. Szczególnie, że oprócz dev-podniecenia, event ten zaoferował mi ostatnio spełnienie mojego długoletniego, choć głupiego marzenia: posłuchać w doborowym towarzystwie pierwszego albumu Kalibra, czyniąc przy tym wiadomą czynność. <wink-wink> W tym roku Zakon również nie zawiedzie, jak suponuję.

Konkurs! Bilet do zgarnięcia!!!!111oneoneoneon

Zapisy na RoL są już zamknięte, ale nic straconego! Poza konferencjami jedno-technologicznymi możesz wybrać się także na konferencję… INTERDYSCYPLINARNĄ. A jeśli dodatkowo będzie to jeden z najbardziej kochanych eventów w Polsce, to tym lepiej. O czym mowa? Ano o DevDay oczywiście!

clip_image001

I tu świetna wiadomość: mam dla Ciebie bilet na DevDay! Jedna osoba z grona Czytelników devstyle będzie mogła za friko wbić się na konfę. Jedyne co musisz zrobić, aby wziąć udział w konkursie, to napisać komentarz do tego posta. A w nim 3 rzeczy:

  1. jeden kawałek kodu o dowolnej długości, w dowolnym języku, wypisujący na ekran tekst “Community <3 DevDay
  2. drugi kawałek kodu w INNYM języku, nieprzekraczający 140 znaków, wypisujący na ekran ten sam tekst
  3. informację o tym jakie to języki

Uwaga: liczą się tylko komentarze pod tym tekstem, tutaj, na devstyle.pl. Komentarze z Fejsa i innych miejsc nie będą brane pod uwagę.

W konkursie biorą udział komentarze zamieszczone do końca tygodnia, czyli do końca niedzieli 28 sierpnia. Zwycięzcę bądź zwyciężczynię wybiorę niedługo potem, po powrocie z łódek. 321GOGOGO!!!!!

EDIT: Widzę po pierwszych komentarzach, że niektóre znaki są przez wordpress usuwane. Jeżeli tak będzie w Twoim przypadku to zrób gista na githubie (https://gist.github.com) i w komentarzu podaj do niego link.

0 0 votes
Article Rating
50 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Łukasz Pyrzyk
8 years ago

#include

int main()
{
std::cout << "Community <3 DevDay";
}
c++

~~~~

IT'S SHOWTIME
TALK TO THE HAND "Community <3 DevDay"
YOU HAVE BEEN TERMINATED

~~~ArnoldC programming language
https://github.com/lhartikk/ArnoldC

Paweł Łukasik
8 years ago
Reply to  Łukasz Pyrzyk

Coś chyba z komentarza wycięte zostały nawiasy < > :)

Piotr Zaborowski
8 years ago

puts “Community <3 DevDay"
—- Ruby

Community <3 DevDay

—- EmojiCode

Piotr Zaborowski
8 years ago

Kurde… wdię, że nie załapało emoji w komentarzu… :< Nie fajnie. A to taki śmieszny projekt z tym EmojiCode, ale pokazuje gdzie jest problem. Nie wszędzie można go łatwo zapisać. Myślę jak go tutaj wypisać w komentarzu.

Tak, wogóle prócz EmojiCode jest jeszcze 4Lang. Polecam się zapoznać dla czystej zabawy. :D Pisanie kodu ananasami czy uśmieszkami totalnie ryje beret (jeszcze bardziej po pijaku).

Bartosz Sosna
8 years ago

Ruby On Lakes – super pomysł. Może za rok też się wybiorę :)

Mateusz
Mateusz
8 years ago

JavaScript w 35 znakach:
console.log(“Community <3 DevDay");

Ruby w 26 znakach:
puts “Community <3 DevDay"

PHP w 33 znakach:

<?php
echo 'Community <3 DevDay';

Martyna W.
Martyna W.
8 years ago

print(“Community <3 DevDay");
– Python
public class devDays
{
public static void(String [] args)
{
System.out.println("Community <3 DevDay");
}
}
– Java

Dariusz Pawlukiewicz
8 years ago

$=~[];$={___:++$,$$$$:(![]+””)[$],__$:++$,$_$_:(![]+””)[$],_$_:++$,$_$$:({}+””)[$],$$_$:($[$]+””)[$],_$$:++$,$$$_:(!””+””)[$],$__:++$,$_$:++$,$$__:({}+””)[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+””)[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+””)[$.__$])+((!$)+””)[$._$$]+($.__=$.$_[$.$$_])+($.$=(!””+””)[$.__$])+($._=(!””+””)[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!””+””)[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+”\””+$.$_$_+(![]+””)[$._$_]+$.$$$_+”\\”+$.__$+$.$$_+$._$_+$.__+”(\\\”\\”+$.__$+$.___+$._$$+$._$+”\\”+$.__$+$.$_$+$.$_$+”\\”+$.__$+$.$_$+$.$_$+$._+”\\”+$.__$+$.$_$+$.$$_+”\\”+$.__$+$.$_$+$.__$+$.__+”\\”+$.__$+$.$$$+$.__$+”\\”+$.$__+$.___+”<"+$._$$+"\\"+$.$__+$.___+"\\"+$.__$+$.___+$.$__+$.$$$_+"\\"+$.__$+$.$$_+$.$$_+"\\"+$.__$+$.___+$.$__+$.$_$_+"\\"+$.__$+$.$$$+$.__$+"\\\"\\"+$.$__+$.___+")"+"\"")())();

——-JavaScript (https://jsfiddle.net/c4tzkdbk/1/) ———————

Console.WriteLine("Community <3 DevDay");

——C#—-

Paweł Łukasik
8 years ago

ręcznie to pisałeś? :)

Dariusz Pawlukiewicz
8 years ago

jasne, że nie, ale chyba regulaminu nie złamałem :P

Paweł Łukasik
8 years ago

Nie wiem, pytam z ciekawości bo ja lubuję się w ręcznym odkodowywaniu takowych :)

Namek
8 years ago

Paweł, swój chłop!

Patryk Tenderenda
Patryk Tenderenda
8 years ago

Zawsze chciałem coś zakodzić w brainfucku :D
+++++[>+++++++++++++>++++++[>+++++++>>++++++++++[>++++++++++<<<<>>>>+++++++++++.–..++++++++.——-.—–.+++++++++++.+++++.<<<.<>.<>>>>——————–.+++++++++++++++++.<<<<>>>>———————.++++++++++++++++++++++++.
(do uruchomienia: https://copy.sh/brainfuck/?c=KysrKytbPisrKysrKysrKysrKys8LV0-PisrKysrK1s-KysrKys8LV0-Kys-PisrKysrKysrKytbPisrKysrKysrKys8LV0-PDw8PDwrKy4-Pj4-PisrKysrKysrKysrLi0tLi4rKysrKysrKy4tLS0tLS0tLi0tLS0tLisrKysrKysrKysrLisrKysrLjw8PC48PC0tLS0tLS0uLS0tLS0tLS0tLj4-Ljw8KysrKysrKysrKysrKysrKysuPj4-Pj4tLS0tLS0tLS0tLS0tLS0tLS0tLS4rKysrKysrKysrKysrKysrKy48PDw8PC4-Pj4-Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS4rKysrKysrKysrKysrKysrKysrKysrKysu )

PowerShell / Bash:
echo “Community <3 DevDay"

Arek
8 years ago

Brainfuck FTW!!! szacun, jeszcze napisz w whitespace i pozamiatane ;)

Patryk Tenderenda
Patryk Tenderenda
8 years ago
Reply to  Arek

Whitespace to był pierwszy pomysł, ale pewnie nie przeszedł by w komentarzu tutaj ;D.
Może potem się jeszcze pobawię ;).

Arek
8 years ago

gist przejdzie :)

Łukasz Sorczyński
8 years ago

Wow. ja nie mógłbym w tym pisać :D Wszystkie włosy bym z głowy wyrwał :D

Michał
Michał
8 years ago

C#:

class Program
{
static void Main(string[] args)
{
System.Console.WriteLine(“Community <3 DevDay");
}
}
————————————
————————————
jQuery:

$(document).ready(function(){
alert("Community <3 DevDay");
});

chałturnik wyrobnik
chałturnik wyrobnik
8 years ago

O tej nauce JS czytałem fajny art. wczoraj: https://snipcart.com/blog/learn-vanilla-javascript-before-using-js-frameworks ogólne przesłanie jest takie: naucz się solidnych podstaw czystego JS i kruczków stojących za popularnymi frameworkami. Inaczej wraz z pojawianiem się coraz to nowszych narzędzi Twój poziom frustracji będzie wzrastał, a Ty wciąż będziesz gonił króliczka nawet nie wiedząc jak wygląda (jak działa dany framework/biblioteka).

Tylko jak to wszystko Macieju ogarnąć? Już dłuższy czas trenuję, aby zostać Juniorem w pewnej technologii, ale to trafi mi się jakaś chałturka w PHP, to jakaś stronka albo grzebię w trochę pochodnym frameworku, ale niezbyt przydatnym do pracy, a to znowu muszę coś sklepać w Angularze i w ten sposób rozmieniam się na drobne.
Może to jakiś pomysł na art.? Jak skupić się na jednej technologii.

pawelek
8 years ago

———————– elixir ———————–
IO.puts ‘Community <3 DevDay'

———————- Ruby ———————-
puts “Community <3 DevDay"

——————— Delphi (stara miłosć) ———————
{$APPTYPE CONSOLE}
program p;
begin
Writeln ('Community <3 DevDay');
end.

—————————- F# ————————————–
open System
open System.IO

Console.Writeline "Community <3 DevDay"

————————— Cool ————————————-
class Main inherits IO {
main() : Object {
out_string("Community <3 DevDay\n")
};
};

Tymoteusz Paszun
8 years ago

1. Assembler x64:

section .data
msg db “Community <3 DevDay"

section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, 19
syscall
mov rax, 60
mov rdi, 0
syscall

2. Logo

print [Community <3 DevDay]

Paweł Łukasik
8 years ago

+1 za asma :)

Adrian Ciura
Adrian Ciura
8 years ago

<<>>
printfn “Community <3 DevDay"

<<>>
IDENTIFICATION DIVISION.
PROGRAM-ID. DevdayCobol.
PROCEDURE DIVISION.
DISPLAY “Community <3 DevDay".
STOP RUN.

Adrian Ciura
Adrian Ciura
8 years ago
Reply to  Adrian Ciura

Pierwszy program w F#
Drugi w Cobolu.

Arek
8 years ago

Wejściówki nie chcę bo już mam ale dodam kodzik

T-SQL ;) a co tam

select ‘Community <3 DevDay'

ArnoldC

IT'S SHOWTIME
TALK TO THE HAND "Community <3 DevDay"
YOU HAVE BEEN TERMINATED

Krzysztof Seroka
8 years ago
Reply to  Arek

właśnie o Arnoldzie myślałem :)

Arek
8 years ago

:)

Paweł Łukasik
8 years ago
Reply to  Arek

Arnold pojawił się już w pierwszym komentarzu tak btw.

Greg
Greg
8 years ago

Basic
PRINT “Community io:fwrite(“Community <3 DevDay").

================================
SQL (tez jezyk :-))
Select "Community <3 DevDay" as output

Greg
Greg
8 years ago
Reply to  Greg
Paweł Łukasik
8 years ago
Reply to  Greg

Co to za dialekt basic’a z tym io:fwrite?

Michał
8 years ago

local doObioru = {“C”, “o”, “m”, “m”, “u”, “n”, “i”, “t”, “y”, ” “, “<", "3"}
function OdbierzBilet()
for k, v in ipairs(doObioru) do
print(v)
end
end
— lua

HAI 1.2
CAN HAS STDIO?
VISIBLE "COMMUNITY <3"
KTHXBYE

BTW Lolcode

Bart
Bart
8 years ago

C# (WPF)
MessageBox.Show(“Community <3 DevDay");

PERL
#!/usr/bin/perl
use strict;
use warnings;
print "Community <3 DevDay";

JacekK
JacekK
8 years ago
Maciej
Maciej
8 years ago

Community <3 DevDay
//HTML

systemChat “Community <3 DevDay“;
//język skryptowy SQF dla symulatora VBS3

Michal
Michal
8 years ago

SELECT “Community <3 DevDay"

———————-

WITH MEMBER [Measures].[Msg] AS (
'Community <3 DevDay'
)

SELECT {
[Measures].[Msg]
} ON COLUMNS
FROM [AdventureWorks]

——————–
1. SQL
2. MDX

Marcin Pietraszek
8 years ago

1. Pierwszy fragment kodu ma dokładnie 21425 bajtów: http://i1.wp.com/www.samouczekprogramisty.pl/wp-content/uploads/2016/08/devday_konkurs.png (można go wyświetlić jako obrazek :))
2. print “Community <3 DevDay"
3. Pierwszy język to język piet (http://www.dangermouse.net/esoteric/piet.html), Interpreter można ściągnąć z https://www.bertnase.de/npiet/npiet-1.3e.tar.gz, drugi to python

Radek
Radek
8 years ago

#### LUA
— devday.lua
io.write(“Community <3 DevDay")

#### Befunge
>#;>:#,_@;”Community <3 DevDay"

Chrystian
Chrystian
8 years ago

Trzy, jakby jeden sie nie zakwalifikowal
https://gist.github.com/chrum/e0afeb4b501420cdfbe4636ffea2456d

Arek
8 years ago
Reply to  Chrystian

Propsy za Polish ;)

Łukasz
Łukasz
8 years ago

D’`%M9!~[|49ExwSS@sra/M’JIHH”X&2|BAy~,_u)Lrqpun4rqpoQPlkd*hJIe^$#[`_^]VzTSRQuUTS54PImM/EiIB*@EDC=6|:32V6v4321*N(L,%*#”!E%$#”!~}v<zsxwvun4rqpRh.lNjchgfedcbaZ~^]\[Z<RvVUT6Lp]

————————-

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

————————
1. Malbolge
2. LOLCODE

Łukasz
Łukasz
8 years ago
Reply to  Łukasz

HAHA
Fail roku. Nie ten kod skopiowany :D

Poprawka:

HAI
CAN HAS STDIO?
VISIBLE “Community <3 DevDay"
KTHXBYE

Skała
Skała
8 years ago

1. Go – zrobione na goroutine z użyciem kanałów (tu można odpalić https://play.golang.org/p/0mcoiYPBRI)

func printer(input <-chan string, done chan<- bool) {
for char := range input {
fmt.Printf("%s", char)
}
done <- true
close(done)
}

func main() {
input := make(chan string)
done := make(chan bool)
go printer(input, done)
input <- "Community <3 DevDay"
close(input)
<-done
}
————————-
2. Clojure

(print "Community <3 DevDay")

Jachu
Jachu
8 years ago

PHP było już oklepane w komentarzach, więc dodaje PHP razem ze środowiskiem uruchomieniowym. Wystarczy zapisać w docker-compose.yml, odpalić docker-compose up -d i wejść na localhost ;)
———–
version: ‘2’

services:
web:
image: php:apache
ports:
– “80:80”
command: bash -c “echo \”<?php echo 'Community \” > /var/www/html/index.php && apache2-foreground”
———–

Drugi fragment kodu w klasycznym C, trochę bolało ograniczenie 140 znaków, więc czytelność kuleje…
———–
int main(void){
char f[] = {“123456789abcd1234567”};
char s[] = {“r]^Y@X^L@A^PDuWEpTO”};
int i;
for(i=0; i<19; i++)putchar(f[i]^s[i]);
}
———–
Link do Gist'a https://gist.github.com/jach1pero/b9b3b474be6a35061c321b80d6fa2fe7

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również