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
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?
Eu diria que, tal como noutras áreas, é 20% de inspiração e 80% de transpiração [:D]
 
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?

Basicamente:
Ou se gosta, ou não se gosta.

Quem não gostar o melhor é não insistir e ir fazer outra coisa.

Quem gosta supera facilmente a maioria das dificuldades, porque normalmente
estão numa demanda constate por saber mais e fazer melhor.

Seja como for:
Teach Yourself Programming in Ten Years

Para poder dar uma resposta melhor, precisaria de saber exactamente qual é a
tua dúvida. Curso a escolher? Carreira?
Que já sabes tu de programação? Que já fizeste?
 
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?

Nao há jeito inato. Tens que saber como é que as coisa se integram, nao há grande volta a dar.
 
Basicamente:
Ou se gosta, ou não se gosta.

Quem não gostar o melhor é não insistir e ir fazer outra coisa.

Quem gosta supera facilmente a maioria das dificuldades, porque normalmente
estão numa demanda constate por saber mais e fazer melhor.

Seja como for:
Teach Yourself Programming in Ten Years

Para poder dar uma resposta melhor, precisaria de saber exactamente qual é a
tua dúvida. Curso a escolher? Carreira?
Que já sabes tu de programação? Que já fizeste?

Sou aluno de eng de telecomunicações e informática , já fiz algumas cadeiras de programação ( indrodução à programação, algoritmos e estrutura de dados, arquitectura de computadores) e estou a descobrir as maravilhas da programação aplicadas ao lixux.
É um curso com uma boa carga de código e como há a possibilidade de ter de ir para esta área quando acabar e como estou numa de ficar competente na área da informática- não apenas na optica do utilizador- estou a perguntar isto.

Atinei bem com as funções mas quando entrei nos objectos a coisa ficou mais lenta embora já esteja a entrar no ritmo. Mas quando digo entrar no ritmo refiro-me a compreender os conceitos não parte mais importante , ou seja desenhar uma solução e traduzi-la para a linguagem que uso ( Java e C na maioria dos casos).
 
Nao há jeito inato. Tens que saber como é que as coisa se integram, nao há grande volta a dar.

Claro que existe jeito inato.
Não é suficiente, mas existe.
Neste caso o jeito inato traduz-se apenas numa maior facilidade para perceber as coisas,
chama-se capacidade abstractiva, ou raciocínio abstracto, ou capacidade de idealizar
soluções mentalmente.
Mas é óbvio que a experiência pode criar esta habilidade que noutros é "inata".

Skills Needed in Programming
GMAT Hacks: Improve Your Abstract Thinking Skills
abstraction - Can abstract thinking be taught? - Stack Overflow
http://www.doc.ic.ac.uk/pandora/firstyearbook.pdf
 
Sou aluno de eng de telecomunicações e informática , já fiz algumas cadeiras de programação ( indrodução à programação, algoritmos e estrutura de dados, arquitectura de computadores) e estou a descobrir as maravilhas da programação aplicadas ao lixux.
É um curso com uma boa carga de código e como há a possibilidade de ter de ir para esta área quando acabar e como estou numa de ficar competente na área da informática- não apenas na optica do utilizador- estou a perguntar isto.

Atinei bem com as funções mas quando entrei nos objectos a coisa ficou mais lenta embora já esteja a entrar no ritmo. Mas quando digo entrar no ritmo refiro-me a compreender os conceitos não parte mais importante , ou seja desenhar uma solução e traduzi-la para a linguagem que uso ( Java e C na maioria dos casos).

Pelo uso do adjectivo "maravilhas", parece-me que terás o que é necessário.

Não tenhas problemas com as dificuldades em aprender novos paradigmas
(como os objectos), porque é apenas uma questão de adaptação.

Na informática, aquilo que faz um bom profissional é principalmente o gosto
em aprender a fazer o mais perfeito possível. Ou seja, a melhoria contínua.

Em informática, se não se estudar todos os dias, fica-se obsoleto em pouco
tempo.

Os tais fulanos com anos de experiência tinham um grave defeito: para eles
a informática era uma profissão. Ficaram parados no tempo. Estavam total e
completamente obsoletos.

Quem gostar mesmo disto, trabalha, e quando chega a casa vai investigar e
fazer projectos pessoais, para estar constantemente a aprender coisas novas.

Uma das coisas que te vais aperceber é que, por mais que estudes e por mais
que aprendas, nunca irás saber mais de 0,000000001% de tudo o que há
para saber nesta área. O truque é aprender o mais possível das mais variadas
áreas, porque quanto mais vasto for o teu conhecimento, mais fácil será
aprender o que for necessário num dado momento (seja a nível profissional,
ou como hobby).
 
Mais uma vez me dirijo a vocês para ver se me podem ajudar numa questão que tenho.

Neste momento estou a fazer um projecto que implica controlo de concorrência, é nesta parte que estou com um "problema".

Tenho um método onde é feito o registo de utilizadores (são guardados num Hashmap), este método só pode ser acedido por uma thread, é aqui que entra o controlo de concorrência.

O método é este:

Capturar.JPG

onde aquele "rl" é um reentrantlock, a minha dúvida é como hei-de testar se o controlo estará a ser feito devidamente pois não consigo colocar 2 ou mais clientes a fazer o registo no mesmo instante.

Não sei se me fiz entender bem[:D]:sh)
 
Last edited:
A lógica que estou a tentar fazer é, a thread entra no método e "obtém" o lock ficando assim com a exclusividade de estar no método.
Entretanto caso cheguem outras threads ficam em espera até que a primeira thread faça o "unlock".

A lógica está correta?
 
Mais uma vez me dirijo a vocês para ver se me podem ajudar numa questão que tenho.

Neste momento estou a fazer um projecto que implica controlo de concorrência, é nesta parte que estou com um "problema".

Tenho um método onde é feito o registo de utilizadores (são guardados num Hashmap), este método só pode ser acedido por uma thread, é aqui que entra o controlo de concorrência.

O método é este:

View attachment 119456

onde aquele "rl" é um reentrantlock, a minha dúvida é como hei-de testar se o controlo estará a ser feito devidamente pois não consigo colocar 2 ou mais clientes a fazer o registo no mesmo instante.

Não sei se me fiz entender bem[:D]:sh)

Crias dois clientes e metes a tentativa de registo a ser efectuada em loop.
 
A lógica que estou a tentar fazer é, a thread entra no método e "obtém" o lock ficando assim com a exclusividade de estar no método.
Entretanto caso cheguem outras threads ficam em espera até que a primeira thread faça o "unlock".

A lógica está correta?

Sim, está.
 
Mais uma vez me dirijo a vocês para ver se me podem ajudar numa questão que tenho.

Neste momento estou a fazer um projecto que implica controlo de concorrência, é nesta parte que estou com um "problema".

Tenho um método onde é feito o registo de utilizadores (são guardados num Hashmap), este método só pode ser acedido por uma thread, é aqui que entra o controlo de concorrência.

O método é este:

View attachment 119456

onde aquele "rl" é um reentrantlock, a minha dúvida é como hei-de testar se o controlo estará a ser feito devidamente pois não consigo colocar 2 ou mais clientes a fazer o registo no mesmo instante.

Não sei se me fiz entender bem[:D]:sh)

Li só na diagonal mas se queres fazer um teste local para fins académicos (aka bazarouco) coloca um wait de 5min antes do unlock... assim tens uma janela de 5min para tentares registar mais users noutro processo, se funcionar ninguém deverá conseguir.

Isto é só para satisfazer a curiosidade.
 
Se isso é para a universidade, e se eu fosse o teu prof., levavas um desconto na nota
que até ficavas a ver navios.

Já viste bem o tempo que o lock fica activo?
Imagina que a tua lista tinha milhões de utilizadores (tipo FB).
 
Crias dois clientes e metes a tentativa de registo a ser efectuada em loop.

Li só na diagonal mas se queres fazer um teste local para fins académicos (aka bazarouco) coloca um wait de 5min antes do unlock... assim tens uma janela de 5min para tentares registar mais users noutro processo, se funcionar ninguém deverá conseguir.

Isto é só para satisfazer a curiosidade.

Obrigado, vou experimentar isso.

Se isso é para a universidade, e se eu fosse o teu prof., levavas um desconto na nota
que até ficavas a ver navios.

Já viste bem o tempo que o lock fica activo?
Imagina que a tua lista tinha milhões de utilizadores (tipo FB).
Pensando bem, tens razão:sh) (embora isto irá ter pouquinhos utilizadores, é meramente académico).

Que dica me dás para melhorar o desempenho disto?
 
Que dica me dás para melhorar o desempenho disto?

Dica para melhorar o desempenho?
Deixa de usar o "id" e passa a usar uma coisa tipo GUID ou UUID ou não o explicites tu e deixa a BD tratar disso.
Não faças pesquisa linear, no mínimo usa uma pesquisa binária, ou se quiseres brilhar, metes aquilo numa árvore.
 
Obrigado, vou experimentar isso.


Pensando bem, tens razão:sh) (embora isto irá ter pouquinhos utilizadores, é meramente académico).

Que dica me dás para melhorar o desempenho disto?

Só conhecendo o problema que te foi colocado.
Ou seja, pode muito bem ser que todo o algoritmo possa ser diferente.
Por exemplo, a utilização de um SET não me parece de forma alguma a
estrutura mais apropriada para essa situação.
 
Dica para melhorar o desempenho?
Deixa de usar o "id" e passa a usar uma coisa tipo GUID ou UUID ou não o explicites tu e deixa a BD tratar disso.
Não faças pesquisa linear, no mínimo usa uma pesquisa binária, ou se quiseres brilhar, metes aquilo numa árvore.

Ou então usa as estruturas da framework que já fazem isso tudo.
[;)]

EDIT:
Aliás, aquilo até está a retornar um HASHMAP, pelo que já lá está tudo o
que é necessário. A cena do SET é que deverá ser perfeitamente dispensável
(e do ID).
 
Last edited:
Dica para melhorar o desempenho?
Deixa de usar o "id" e passa a usar uma coisa tipo GUID ou UUID ou não o explicites tu e deixa a BD tratar disso.
Não faças pesquisa linear, no mínimo usa uma pesquisa binária, ou se quiseres brilhar, metes aquilo numa árvore.

Só conhecendo o problema que te foi colocado.
Ou seja, pode muito bem ser que todo o algoritmo possa ser diferente.
Por exemplo, a utilização de um SET não me parece de forma alguma a
estrutura mais apropriada para essa situação.

Obrigado aos dois pela resposta, o objetivo do projeto é trabalhar o controlo de concorrência, este é o maior foco na avaliação.
Até tinha pensado em fazer o registo dos users numa BD mysql ou assim, mas como esta questão não é valorizada acabei por escolher hashmap.

Ou então usa as estruturas da framework que já fazem isso tudo.
[;)]

EDIT:
Aliás, aquilo até está a retornar um HASHMAP, pelo que já lá está tudo o
que é necessário. A cena do SET é que deverá ser perfeitamente dispensável
(e do ID).
Decidi utilizar o ID porque foi a forma que encontrei mais rapidamente para resolver aquele problema, nunca tinha trabalhado com hashmaps.
É nestes momentos que vemos que ainda temos muito, muito para a aprender.

Quando falas nas estruturas da framework o que queres mesmo dizer? Consegues trocar isso por miúdos?
 
Obrigado aos dois pela resposta, o objetivo do projeto é trabalhar o controlo de concorrência, este é o maior foco na avaliação.
Até tinha pensado em fazer o registo dos users numa BD mysql ou assim, mas como esta questão não é valorizada acabei por escolher hashmap.


Decidi utilizar o ID porque foi a forma que encontrei mais rapidamente para resolver aquele problema, nunca tinha trabalhado com hashmaps.
É nestes momentos que vemos que ainda temos muito, muito para a aprender.

Quando falas nas estruturas da framework o que queres mesmo dizer? Consegues trocar isso por miúdos?

HASHMAP, por exemplo.
Não faz parte da linguagem, faz parte da framework.
A linguagem só tem o "int", "double", "boolean", etc.

Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics)

Java Collections Framework Tutorial


Quanto ao trabalho...

Sim, que o objectivo é o controlo da concorrência já tinha dado para perceber.
Mas o que é que foi pedido?
- Uma função para adicionar um login?
- Uma aplicação para gerir utilizadores?

Ou seja, se permitem que se usem bases de dados, então quem gere a concorrência
será o motor da BD, usando transacções. Terias de garantir na BD que os locks nos
registos eram colocados, que não tinhas deadlocks, e que não eram inseridos registos
duplicados (através da utilização de índice único).

Acho é estranho que isso seja em JAVA... normalmente os problemas são bem concretos,
e a implementação é em C em ambiente UNIX/Linux, e sem nada de bases de dados.
 
HASHMAP, por exemplo.
Não faz parte da linguagem, faz parte da framework.
A linguagem só tem o "int", "double", "boolean", etc.

Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics)

Java Collections Framework Tutorial


Quanto ao trabalho...

Sim, que o objectivo é o controlo da concorrência já tinha dado para perceber.
Mas o que é que foi pedido?
- Uma função para adicionar um login?
- Uma aplicação para gerir utilizadores?

Ou seja, se permitem que se usem bases de dados, então quem gere a concorrência
será o motor da BD, usando transacções. Terias de garantir na BD que os locks nos
registos eram colocados, que não tinhas deadlocks, e que não eram inseridos registos
duplicados (através da utilização de índice único).

Acho é estranho que isso seja em JAVA... normalmente os problemas são bem concretos,
e a implementação é em C em ambiente UNIX/Linux, e sem nada de bases de dados.
Já entendi a parte da framework.

O projeto é constituido por um servidor que atende vários clientes, permitindo que estes acedam
e financiem projetos que estão guardados em memória (Hashmap).

Para que isto seja possível tenho de permitir o registo de utilizadores, o registo de projetos de utilizadores etc.
É um género de kickstarter.

Quanto à parte da BD expressei-me mal, tinha pensado em fazer em mysql mas foi-me imposto que
tivesse os dados sempre em memória para que o controlo da concorrência partisse sempre de mim.

Tenho ideia que esta cadeira sempre foi em java, mas não posso garantir isso. Só sei que os profs que a dão são do grupo de sistemas distribuidos, que também dão sistemas operativos e são "fanáticos" pelo Unix/Linux, C etc. Aliás, quem me dera que isto fosse em C, como é em java ando mais às aranhas.
 
Back
Top