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.

Nie przegap kolejnych postów!

Dołącz do ponad 9000 programistów w devstyle newsletter!

Tym samym wyrażasz zgodę na otrzymanie informacji marketingowych z devstyle.pl (doh...). Powered by ConvertKit
Notify of
Łukasz Pyrzyk

#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

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

Piotr Zaborowski

puts “Community <3 DevDay"
—- Ruby

Community <3 DevDay

—- EmojiCode

Piotr Zaborowski

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
Bartosz Sosna

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

Mateusz
Mateusz

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.

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

Dariusz Pawlukiewicz

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

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

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

——C#—-

Paweł Łukasik

ręcznie to pisałeś? :)

Dariusz Pawlukiewicz

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

Paweł Łukasik

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

Namek

Paweł, swój chłop!

Patryk Tenderenda
Patryk Tenderenda

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

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

Patryk Tenderenda
Patryk Tenderenda

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

Arek

gist przejdzie :)

Łukasz Sorczyński

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

Michał
Michał

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

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… Read more »

pawelek

———————– 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

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

+1 za asma :)

Adrian Ciura
Adrian Ciura

<<>>
printfn “Community <3 DevDay"

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

Adrian Ciura
Adrian Ciura

Pierwszy program w F#
Drugi w Cobolu.

Arek

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

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

Arek

:)

Paweł Łukasik

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

Greg
Greg

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

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

Greg
Greg
Paweł Łukasik

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

Michał

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

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

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

JacekK
JacekK
Maciej
Maciej

Community <3 DevDay
//HTML

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

Michal
Michal

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

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

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

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

Chrystian
Chrystian

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

Arek

Propsy za Polish ;)

Łukasz
Łukasz

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

HAHA
Fail roku. Nie ten kod skopiowany :D

Poprawka:

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

Skała
Skała

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

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

Moja książka

Facebook

Zobacz również