Po co korzystasz z biblioteki?

0
Pixello napisał(a):
TomRiddle napisał(a):

Nie koniecznie, owszem oszczędzisz sobie tych dwóch tygodni; ale dokładasz do projektu coś co zostanie na lata; i przez te lata takie rozwiązanie może Ci i członkom zespołu zabrać dużo więcej niż te dwa tygodnie.

Akurat do tego się odnosiłem, mogłem od razu dodać cytat, ale to mnie striggerowało, bo najczęściej delikwent sam coś napisze, pójdzie, i przy każdej zmianie to jest dług, który ktoś musi kiedyś zamienić na libkę.

No wiadomo, że tak może być. Im mniejsze doświadczenie developera, tym większa szansa żę to co napisze to będzie crap.

Ale często jest też dokładnie odwrotnie - ściągam jakąś libkę, używam, i zauważam fatalną skazę w bibliotece i myślę sobie: "Jak ktoś mógł tego nie ogarnąć?", i albo robię PR'a jak libka jest nadal maintained, albo trzeba to jakoś objeść w swoim kodzie; albo trzeba robić forka, albo całkiem ją porzucić.

1
dargenn napisał(a):

Śmiem twierdzić, że za pisanie bibliotek zabierają się programiści ze statystycznie większym doświadczeniem niż tacy klepacze crudów z software housów.

Statystycznie pewnie tak.

Ale ciągle Ci programiści z większym doświadczeniem mogą coś zwalić nieźle.

4

Bo biblioteka jest używana w tysiącach projektów i z tego powodu jest też znacznie lepiej przetestowana niż cokolwiek, co napisze sam.

1

Z całym szacunkiem, ale Spring to nie biblioteka tylko framework.

0
Patryk Mieleszko napisał(a):

Z całym szacunkiem, ale Spring to nie biblioteka tylko framework.

Jedno nie wyklucza drugiego.

Jesli napiszesz sobie aplikacje w domain-driven design, i uzyjesz Spring MVC jako jedna z implementacji HTTP, to Spring w zaden sposob nie wplynie na Twoja prace (ergo nie bedzie uzywal swoich framework-skich skilli), a dostarczy jedynie rozwiazanie.

Ale mozesz tez rozsiac najlepsze @Autowire przez cala aplikacje, i tym samym zrobic tight-couple aplikacji do biblioteki, i wtedy juz to na prawde jest "frame-work" :D

1

Nie, nie o to mi chodziło. Chodziło mi o to że zdaje się nie rozumiesz różnicy między frameworkiem a biblioteką. I teraz w zależności o co pytasz to odpowiedzi na twoje pytanie o moje motywację są inne. Więc tak postawiona ankieta jest bez sensu.

Framework to coś w czym działa twoja aplikacja i to framework woła twoją aplikację.

Biblioteka to coś co załączasz do swojej aplikacji i to ty wołasz ją.

2
Patryk Mieleszko napisał(a):

Framework to coś w czym działa twoja aplikacja i to framework woła twoją aplikację.

Biblioteka to coś co załączasz do swojej aplikacji i to ty wołasz ją.

Nie znam Springa, więc kopiuję, ale:

package com.example.servingwebcontent;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ServingWebContentApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServingWebContentApplication.class, args);
    }

}

I kto kogo woła, bo ja tu widzę aplikację wołającą bibliotekę. Tak w skrócie to przypierdzielasz się do nomenklatury i cała dyskuja o tym, gdzie jest granica między frameworkiem, a biblioteką jest równie interesująca co dyskusja C# vs Java czy spacje vs tabulatury.

0
Patryk Mieleszko napisał(a):

Nie, nie o to mi chodziło. Chodziło mi o to że zdaje się nie rozumiesz różnicy między frameworkiem a biblioteką. I teraz w zależności o co pytasz to odpowiedzi na twoje pytanie o moje motywację są inne. Więc tak postawiona ankieta jest bez sensu.

Framework to coś w czym działa twoja aplikacja i to framework woła twoją aplikację.

Biblioteka to coś co załączasz do swojej aplikacji i to ty wołasz ją.

No to jeśli taką definicją się posługujesz, to możesz uznać że w ankiecie chodzi zarówno o biblioteki i frameworki. Dla Ciebie tytuł wątku to powinien być Po co korzystasz z biblioteki lub frameworka?

1

Ja np. używałem czystego JS'a do dosyć złożonej stronki i w wielu momentach aż prosiło się użyć chociażby JQuery. Czasami trzeba było rozwiązać dany problem bez żadnej pomocy, bo wstukując problem w internety, większość prostych rozwiązań było tylko w JQ.
Co nie zmienia faktu, że w czystym JS'ie dało się to napisać - i pewnie zyskałem trochę na wydajności. Z perspektywy czasu faktycznie bezsensem byłoby pobieranie 1,3mb biblioteki dla 2-3 problemów.

1

@Patryk Mieleszko: powiedzmy, że mamy aplikację napisaną w Spring Webflux. 99.9% kodu jest niezmienne, ten 0.01% różnicy to:

HttpHandler handler = ...
ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(handler);
HttpServer.create(host, port).newHandler(adapter).block();

vs

@Bean HttpHandeler httpHandeler() {
  return new ReactorHttpHandlerAdapter(handler);
}

@SpringBootApplication
public class Application {

  public static void main(String[] args) {
     // nic ciekawego
  }
}

Czy według ciebie ten promil kodu sprawia, że nasza biblioteka magicznie przemieniła się w framework? Nie twierdzę, że coś takiego jak framework nie istnieje. Myśle, że ciężko znaleźć dobrą definicję poza coś co wymusza na tobie określony styl programowania i lubi się gryźć z podobnym bytami. Istotą każdego frameworku jest zapewnienie funkcjonalności, które mogą być skustomizowanie przez użytkownika w docelowej aplikacji poprzez konfigurację i różne "wtyki", które są wołane przez framework. Istotą biblioteki jest dostarczenie kodu, który może być użyty w docelowej aplikacji. Jak dla mnie framework to przypadek szczególny biblioteki

0
Kondziowsky napisał(a):

Ja np. używałem czystego JS'a do dosyć złożonej stronki i w wielu momentach aż prosiło się użyć chociażby JQuery. Czasami trzeba było rozwiązać dany problem bez żadnej pomocy, bo wstukując problem w internety, większość prostych rozwiązań było tylko w JQ.
Co nie zmienia faktu, że w czystym JS'ie dało się to napisać - i pewnie zyskałem trochę na wydajności. Z perspektywy czasu faktycznie bezsensem byłoby pobieranie 1,3mb biblioteki dla 2-3 problemów.

No ale znowu, napisałeś czy użyć biblioteki, czy nie; a pytanie jest czemu.

Innymi słowy, pytanie jest - skoro potrzebowałeś użyć jakiegoś feature'a z jQuery, to czemu nie napisałeś swojej wersji z jQuery (czy może napisałeś), zamiast dociągnąć libkę?

Np takie coś jest banalnie napisać

function $(selector) {
  return document.querySelector(selector);
}

I już masz prymitywne "jQuery".

1
TomRiddle napisał(a):

No ale znowu, napisałeś czy użyć biblioteki, czy nie; a pytanie jest czemu.

Faktycznie nie doprecyzowałem. Napisałem swoją wersję z jQuery, bo realnie jQ rozwiązywało szybko może z 2-3 większe problemy implementacji.
Jeżeli biblioteka rozwiązuje konkretny problem (jak np. lazy-loading, datepicker itp.) to dla mnie zaciąganie jej jest ok - bo rozwiązuje jeden problem, jest lekka i zaoszczędza sporo czasu.
Jednak zaciąganie biblioteki pokroju jQ, żeby mieć rozwiązanie kilku problemów jest bez sensu.

0
Kondziowsky napisał(a):
TomRiddle napisał(a):

Napisałem swoją wersję z jQuery, bo realnie jQ rozwiązywało szybko może z 2-3 większe problemy implementacji.
Jeżeli biblioteka rozwiązuje konkretny problem (jak np. lazy-loading, datepicker itp.) to dla mnie zaciąganie jej jest ok - bo rozwiązuje jeden problem, jest lekka i zaoszczędza sporo czasu.

Ok, czyli to pochodzi pod głos Bo nie mam czasu napisać własnej impl?

0
TomRiddle napisał(a):

Ok, czyli to pochodzi pod głos Bo nie mam czasu napisać własnej impl?

Myślę, że tak, jeżeli już używam biblioteki to dla zaoszczędzenia czasu. Aczkolwiek ta odpowiedź nie będzie odnosić się do każdej biblioteki, co wskazałem przykładem z jQ.

0
Kondziowsky napisał(a):
TomRiddle napisał(a):

Ok, czyli to pochodzi pod głos Bo nie mam czasu napisać własnej impl?

Myślę, że tak, jeżeli już używam biblioteki to dla zaoszczędzenia czasu. Aczkolwiek ta odpowiedź nie będzie odnosić się do każdej biblioteki, co wskazałem przykładem z jQ.

No to zaznacz w ankiecie takie opcje jakie się odnoszą, albo zaproponuj dodanie nowej opcji.

1

@TomRiddle:

Ale mi nie chodzi o to jakie biblioteki wybierasz, tylko czemu.

To zależy? (możesz dodać). Wszystko zależy od konkretnego kontekstu w konkretnym momencie. Zależy też od tego, czy to projekt w pracy, czy może jakiś nasz na boku?

To zależy :)

Ogólnie to nie powinno się wymyślać koła na nowo, bo często ktoś ten problem już rozwiązał i zrobił to lepiej. Nie chodzi o to że np. komuś brakuje wiedzy i umiejętności, ale jeżeli ktoś poświęcił mnóstwo czasu na implementację i są ogarnięte różne przypadki.

Ta ankieta mi trochę przypomina dyskusję o XMPP. Ludzie woleli spędzać czas i tworzyć swój protokół popełniając wiele błędów i nie biorąc różnych use casów zamiast po prostu wziąć go i np. dopisać brakujące rzeczy w formie XEPów.

Kolejna kwestia to utrzymywanie takiego kodu. Wiadomo, są różne biblioteki i mają różne wsparcie, jednak jeżeli się wybiera coś popularniejszego i coś co jest dosyć dobrze utrzymywane, to nie musimy sobie i tym jeszcze głowy zawracać.
Wydaje mi się, że wiele osób która by chciała w projektach firmowych wszystko samemu pisać, nie wie że nie chodzi o pisanie kodu ale dostarczenie danej funkcjonalności biznesowej. Np. klient zgłasza się, że potrzebuje funkcjonalności w 5 dni aby po weekendzie ją udostępnić klientom i być przed konkurencją. Załóżmy, że kasa nie gra roli. Szybciej dostarczy się kod gdzie będzie można pewne rzeczy po prostu ponownie wykorzystać zamiast tworzyć go na nowo bo można.

Tak więc jeszcze raz napiszę - To zależy.

0
.andy napisał(a):

@TomRiddle:

Ale mi nie chodzi o to jakie biblioteki wybierasz, tylko czemu.

To zależy? (możesz dodać). Wszystko zależy od konkretnego kontekstu w konkretnym momencie. Zależy też od tego, czy to projekt w pracy, czy może jakiś nasz na boku?

No to chciałbym żebyś w ankiecie odpowiedział na sumę wszystkich tych powodów które są dla Ciebie istotne. Albo ewentualnie "które potencjalnie mógłbyś wziąć pod uwagę", nie ważne jaki projekt robisz.

Ogólnie to nie powinno się wymyślać koła na nowo, bo często ktoś ten problem już rozwiązał i zrobił to lepiej. Nie chodzi o to że np. komuś brakuje wiedzy i umiejętności, ale jeżeli ktoś poświęcił mnóstwo czasu na implementację i są ogarnięte różne przypadki.

Czyli odpowiedź Bo nie mam czasu napisać własnej impl oraz Bo autor biblioteki mógł rozwiązać problem na który ja nie wpadłem?

Ta ankieta mi trochę przypomina dyskusję o XMPP. Ludzie woleli spędzać czas i tworzyć swój protokół popełniając wiele błędów i nie biorąc różnych use casów zamiast po prostu wziąć go i np. dopisać brakujące rzeczy w formie XEPów.

Czyli tu odpowiedź Bo nie mam czasu napisać własnej impl lub Bo nie chcę brać odpowiedzialności za ew. błędy?

Kolejna kwestia to utrzymywanie takiego kodu. Wiadomo, są różne biblioteki i mają różne wsparcie, jednak jeżeli się wybiera coś popularniejszego i coś co jest dosyć dobrze utrzymywane, to nie musimy sobie i tym jeszcze głowy zawracać.

Czyli odpowiedź Bo biblioteki są update'owane przez ich autorów, ja robię tylko install?

Wydaje mi się, że wiele osób która by chciała w projektach firmowych wszystko samemu pisać, nie wie że nie chodzi o pisanie kodu ale dostarczenie danej funkcjonalności biznesowej. Np. klient zgłasza się, że potrzebuje funkcjonalności w 5 dni aby po weekendzie ją udostępnić klientom i być przed konkurencją. Załóżmy, że kasa nie gra roli. Szybciej dostarczy się kod gdzie będzie można pewne rzeczy po prostu ponownie wykorzystać zamiast tworzyć go na nowo bo można.

Czyli znowu Bo nie mam czasu napisać własnej impl?

1

Używam bibliotek, bo nie nie chce mi się wymyślać koła na nowo

1

Po co korzystasz z biblioteki?

Używam, gdy koszt integracji i utrzymania czyjejś implementacji jest mniejszy w stosunku do wyprodukowania i utrzymania własnej implementacji. Albo gdy prototypuję i nie zależy mi na jakości to potem jak coś z tego wyjdzie to robię ewaluację.

0

A mówiąc koszt masz na myśli czas? Bo wiesz, w ankiecie chodzi o podanie powodów, a Ty nie podałeś żadnego. Jasne, gdy ktoś jest mniejszy, ale co to dla Ciebie znaczy mniejszy koszt. Jest 15 opcji w ankiecie do wyboru.

1 użytkowników online, w tym zalogowanych: 0, gości: 1