Tópico da Programação (desenvolvimento de software)

Tópico da Programação (desenvolvimento de software)

  • Java

    Votes: 66 53.2%
  • C

    Votes: 77 62.1%
  • C++

    Votes: 58 46.8%
  • C#

    Votes: 47 37.9%
  • PHP

    Votes: 45 36.3%
  • BASIC (Visual e outros)

    Votes: 63 50.8%
  • Objective-C

    Votes: 2 1.6%
  • Python

    Votes: 23 18.5%
  • PERL

    Votes: 11 8.9%
  • JavaScript

    Votes: 55 44.4%
  • Ruby

    Votes: 6 4.8%
  • Pascal (ANSI, Turbo, Delphi, outros)

    Votes: 55 44.4%
  • Lisp

    Votes: 9 7.3%
  • Assembly (quais?)

    Votes: 35 28.2%
  • Fortran

    Votes: 12 9.7%
  • COBOL

    Votes: 16 12.9%
  • Haskell / OCaml

    Votes: 8 6.5%
  • Prolog

    Votes: 22 17.7%
  • .NET

    Votes: 37 29.8%
  • Struts/Hibernate

    Votes: 4 3.2%

  • Total voters
    124
PHP para mim só tem uma (grande) vantagem: pode ser alojado em qualquer lado, praticamente qualquer web host permite sites em PHP.

Porque de resto...

Coding Horror: The PHP Singularity

O rapaz vai ter vários problemas... como ter que começar com um servidor próprio windows em vez de poder usar a cloud para aprender, começar com php é juntar mais lenha.

Para quem quer aprender desenvolvimento web o melhor é começar por uma das várias frameworks já existentes, elas optimizam e realizam vários passos como configurações, compilações e publicações, passos estes que não são fáceis para iniciantes e fornecem ferramentas que facilitam o desenvolvimento (abstracção da camada de base de dados, geração e reutilização de código entre muitas).

Eu aconselharia para quem quer aprender Ruby on Rails, web2py ou Django, são simples e existem milhentos tutoriais que ensinam a usar a framework e a própria linguagem de desenvolvimento (ruby, python ou java). Estas frameworks permitem fazer aplicações simples e complexas e suportam escabilidade sem problemas de maior (existem também vários sites que fazem host grátis de aplicações nestas frameworks para fins educativos).

Neste caso especifico sendo sobre windows... teremos que acrescentar o .net, embora não a considere para novatos é excelente e é provavelmente a melhor framework para correr em window server.
 
O rapaz vai ter vários problemas... como ter que começar com um servidor próprio windows em vez de poder usar a cloud para aprender, começar com php é juntar mais lenha.

Para quem quer aprender desenvolvimento web o melhor é começar por uma das várias frameworks já existentes, elas optimizam e realizam vários passos como configurações, compilações e publicações, passos estes que não são fáceis para iniciantes e fornecem ferramentas que facilitam o desenvolvimento (abstracção da camada de base de dados, geração e reutilização de código entre muitas).

Eu aconselharia para quem quer aprender Ruby on Rails, web2py ou Django, são simples e existem milhentos tutoriais que ensinam a usar a framework e a própria linguagem de desenvolvimento (ruby, python ou java). Estas frameworks permitem fazer aplicações simples e complexas e suportam escabilidade sem problemas de maior (existem também vários sites que fazem host grátis de aplicações nestas frameworks para fins educativos).

Neste caso especifico sendo sobre windows... teremos que acrescentar o .net, embora não a considere para novatos é excelente e é provavelmente a melhor framework para correr em window server.

Lá estás tu a fazer multi-tasking novamente...

Explico:

1. Liceu
2. Nem programar sabe (pensa que sabe)

O que estás a dizer é que é juntar lenha.
Deixa primeiro aprender a programar, e depois fala em frameworks.
Não compliques.

Complicada já é a situação, derivada de quem teve a "brilhante" ideia de falar em HTML e PHP
no liceu, sem ensinar as bases de programação.

Aprende-se a programar aprendendo conceitos, algoritmos e estruturas de dados. Não é com
barbaridades de HTML e PHP. Muito menos com frameworks .NET ou outras.
 
Hoje em dia com cada vez mais empresas com uma grande percentagem ou totalidade do negócio assente online, pessoalmente noto cada vez maior preocupação com a qualidade do produto/serviço produzido. Em parte alguns padrões vieram dar uma ajuda mais no sentido de instituir regras de desenvolvimento (ex.: MVC, MVP...) embora sozinhos não façam tudo. Hoje em dia saber programar, por a coisa a compilar e executar não chega. Utilizar um ORM para ligar à BD e em 2 cliques por um ecrã a funcionar não escala (a não ser que seja uma coisa pequena claro). Hoje mais que nunca é necessário ter visão, porque começa a ser muito claro distinguir um produto/serviço de qualidade de um que não tenha tanta qualidade, a rapidez, segurança, usabilidade ressentem-se. Infelizmente, uma vez que a nossa cultura de aprendizagem prática é on the job, muitas vezes estamos convencidos que estamos a fazer bem mas na realidade podiamos estar a fazer melhor. Isto não quer dizer por em causa tudo o que se faz, mas sim ter o discernimento suficiente para quando estamos a desenvolver algo, investigar um pouco e perceber as boas práticas, utilizar alguns mecanismos que ajudem a identificar algumas gralhas, aplicar boas naming conventions, testar o que se desenvolve principalmente em cenários em que as coisas falham (provocar esses cenários), na prática, produzir o melhor possível e tentar "medir" a qualidade do que se produz, em tempo de execução de cada um dos componentes, em assegurar cenários de teste vários injectando parâmetros mais pertinentes ou mais absurdos. Em suma hoje em dia sair para o mercado e produzir um bom resultado penso que não é tão facil como já foi, o nível de exigência (felizmente) aumentou. Quem tenciona começar nesta área é importante solidificar as bases, a lógica, a algoritmia, o que é uma linguagem, um compilador, um IDE, investir numa boa linguagem (há várias linguagens, e há várias opiniões, mas o mercado neste momento absorve na sua maioria Java e .Net, ou em alternativa algumas áreas mais ou menos exóticas que depois não têm tantas oportunidades mas algumas são bem pagas como SAP por exemplo).

Actualmente ainda há outra desvantagem em começar nesta área, é que os salários baixaram bastante, é comum começar-se por estágio a ganhar 650€ (eu comecei com contrato sem termo a ganhar 1250€ líquidos), no entanto como eu costumo defender, mais cedo ou mais tarde, quem é realmente bom e investe no que faz, distingue-se e será reconhecido, e o dinheiro chegará.
 
Então, neste momento qual é a LP mais adequada para desenvolvimento web?
 
Então, neste momento qual é a LP mais adequada para desenvolvimento web?

Se alguém te der uma resposta diferente de "depende" a essa questão... é porque
não sabe do que está a falar, ou está a pensar somente no contexto que conhece.

Não existe resposta para essa questão.
Essa decisão toma-se num contexto específico.
 
Então, neste momento qual é a LP mais adequada para desenvolvimento web?

Para aprender são provavelmente aquelas que indiquei em cima.

Para desenvolver mesmo depende de demasiadas questões... existem plataformas mais adequadas a umas soluções que outras e vice-versa.
 
Quem tenciona começar nesta área é importante solidificar as bases, a lógica, a algoritmia, o que é uma linguagem, um compilador, um IDE, investir numa boa linguagem (há várias linguagens, e há várias opiniões, mas o mercado neste momento absorve na sua maioria Java e .Net, ou em alternativa algumas áreas mais ou menos exóticas que depois não têm tantas oportunidades mas algumas são bem pagas como SAP por exemplo).

Actualmente ainda há outra desvantagem em começar nesta área, é que os salários baixaram bastante, é comum começar-se por estágio a ganhar 650€ (eu comecei com contrato sem termo a ganhar 1250€ líquidos), no entanto como eu costumo defender, mais cedo ou mais tarde, quem é realmente bom e investe no que faz, distingue-se e será reconhecido, e o dinheiro chegará
.

Ninguém com essas bases solidificadas aceita trabalhar por 650€. Ou saem do país ou procuram outras áreas.

Mas se os conheceres em lx eu contrato-os na hora [:p]

Normalmente tb faço distinção entre desenvolvimento de produto e consultadoria, são áreas diferentes que requerem skills um pouco diferentes.
 
Boas,
um duvida...
Numa base de dados guardar documentos digitalizados torna a BD muito pesada?
Existe forma de contornar isso?
 
Boas,
um duvida...
Numa base de dados guardar documentos digitalizados torna a BD muito pesada?
Existe forma de contornar isso?

Na BD guardas só o nome do ficheiro, e eventualmente o directório.
O ficheiro fica no disco, tal como qualquer outro ficheiro.
 
Joomla?!
Sempre foi assim, ainda antes de haver essas coisas.
Aliás, ainda antes de haver internet.

Era um exemplo.

Podes sempre meter binarios dentro de uma BD, mas é só recomendado por motivos de segurança ou para simplificar o backup....
 
Boas,
um duvida...
Numa base de dados guardar documentos digitalizados torna a BD muito pesada?
Existe forma de contornar isso?

Podes guardar os ficheiros na bd como blob ou equivalente dependendo da base de dados. Agora isso vai custar em termos de performance e espaço da bd. Cada query que fizeres a essa tabela vai ser mais lenta devido ao tamanho da informação que estás a trazer. Se estás a pensar num número muito grande de documentos e que vai crescer muito com o tempo é necessário ter cuidado com a dimensão da bd e o espaço no disco correspondente. Pode por em risco o funcionamento da mesma no futuro. Se optares por essa via usa uma tabela para a informação dos ficheiros (nome, extensão, o que mais precisares) e uma tabela para os binários (relacionada com a primeira claro), assim só vais piorar a performance nas situações em que efectivamente precisas do conteúdo do ficheiro (download por exemplo) e não numa listagem de ficheiros por exemplo.

Outra opção é lidares directamente com o file system numa localização diferente da bd (aconselhável), esta opção pode ou não ser mais complicada de desenvolver porque obriga a tua aplicação a lidar com o file system e com a bd ao mesmo tempo (se a tua plataforma de desenvolvimento já suporta isto pode ser a melhor opção). No caso de ficares sem espaço neste file system vais deixar de conseguir fazer upload de ficheiros mas a aplicação continuará em cima porque a bd não é afectada.

Tudo se faz, agora é sempre necessário pensar bem em qual a hipótese que se aplica melhor às nossas necessidades, muito raramente existe uma solução que é sempre a melhor.
 
64 bits, segurança, frameworks, 650€ e agora os BLOB...

O problema da dimensão da base de dados é insignificante.
O grande problema dos BLOB é a largura de banda usada entre o cliente e o servidor
(ou outros recursos, I/O, memória, etc.), mas principalmente o que isso significa em
termos das durações das transacções.

Quanto mais longa for uma transacção, maior é a probabilidade de lock timeout e de
ocorrência de deadlocks.

E não, não existe raramente uma solução que seja sempre a melhor. A melhor solução
depende sempre de um contexto, e já temos o contexto: web site.
Neste contexto, colocar ficheiros em BLOB na BD é geralmente uma má solução. A
excepção é o que disse o Augustus, quando pretendes aumentar o nível de segurança
de um ficheiro, ou então onde pretendes garantir que os conteúdos (ficheiros) fazem
parte da transacção (ACID). Por exemplo: certificados ou outros ficheiros importantes.

A regra é não usar BLOBs. Usar BLOBs é a excepção.

https://blogs.oracle.com/manveen/entry/blob_vs_file_system_storage
MySQL Consulting and NoSQL Consulting: MySQL DBA: I WILL NOT BLOB

Augustus:
Depende o que consideras facilidade de fazer backup. A última coisa que dá jeito é
fazer backup de bases de dados gigantescas... Fazer backup de um filesystem com
os ficheiros é bem mais fácil: pode ser diferencial (backup apenas do que mudou).
 
64 bits, segurança, frameworks, 650€ e agora os BLOB...

O problema da dimensão da base de dados é insignificante.
O grande problema dos BLOB é a largura de banda usada entre o cliente e o servidor
(ou outros recursos, I/O, memória, etc.), mas principalmente o que isso significa em
termos das durações das transacções.

Quanto mais longa for uma transacção, maior é a probabilidade de lock timeout e de
ocorrência de deadlocks.

E não, não existe raramente uma solução que seja sempre a melhor. A melhor solução
depende sempre de um contexto, e já temos o contexto: web site.
Neste contexto, colocar ficheiros em BLOB na BD é geralmente uma má solução. A
excepção é o que disse o Augustus, quando pretendes aumentar o nível de segurança
de um ficheiro, ou então onde pretendes garantir que os conteúdos (ficheiros) fazem
parte da transacção (ACID). Por exemplo: certificados ou outros ficheiros importantes.

A regra é não usar BLOBs. Usar BLOBs é a excepção.

https://blogs.oracle.com/manveen/entry/blob_vs_file_system_storage
MySQL Consulting and NoSQL Consulting: MySQL DBA: I WILL NOT BLOB

Augustus:
Depende o que consideras facilidade de fazer backup. A última coisa que dá jeito é
fazer backup de bases de dados gigantescas... Fazer backup de um filesystem com
os ficheiros é bem mais fácil: pode ser diferencial (backup apenas do que mudou).

Nuno no ambito do natal tirei te o ignore tenta não ultrapasar os limites sff.

Relativamente ao que escreveste é exactamente o que escrevi em cima mas eu optei por usar uma linguagem ao alcance de todos, isto não é um fórum de informática.

Colocar ficheiros na bd não é uma boa ou má solução,é uma solução que é usada quando os requisitos assim o dizem.

Se quiseres mesmo posso te explicar em que casos é aconselhável guardar binários na bd. Ou até te posso dar uma lista de várias empresas grandes nacionais e int que o fazem. Provavelmente não deverá ser preciso.
 
Uma pessoa com um raciocínio lógico normal consegue fazer coisas interessantes em programação ou o factor "jeito inato" tem uma importância demasiado grande?
 
Uma pessoa com um raciocínio lógico normal consegue fazer coisas interessantes em programação ou o factor "jeito inato" tem uma importância demasiado grande?

Depende do que entendes como programação... na área de ti's por exemplo e com a proliferação de frameworks e standards de desenvolvimento web assim como o aparecimento de plataformas RAD (rapid application development) cada vez mais se valoriza um bom raciocínio lógico em detrimento da necessidade de skills tecnológicas muito especificas.

Noutro tipo de áreas como desenvolvimento de produto e investigação convém ter algum interesse natural ou jeito como lhe preferires chamar...

Isto corresponde mais ou menos às 2 áreas que absorvem muitos dos novos recursos informáticos... r&d, produto e consultadoria.

É uma visão um bocado redutora mas espero que passe o essencial.
 
Back
Top