Mercado de trabalho C++, segmentos

802 views
Skip to first unread message

matheusssilva

unread,
May 19, 2014, 2:16:13 PM5/19/14
to ccppb...@googlegroups.com
Nos dias atuais, quais os tipos de trabalhos para os quais as empresas ainda contratam programadores C++? Qual segmento?

Gianni

unread,
May 19, 2014, 2:18:02 PM5/19/14
to ccppb...@googlegroups.com
Todos exceto Web-UI?

matheusssilva

unread,
May 19, 2014, 2:27:13 PM5/19/14
to ccppb...@googlegroups.com
Sério? Sistemas também? Tipo ERP?

Rodrigo Delduca

unread,
May 19, 2014, 3:43:00 PM5/19/14
to ccppb...@googlegroups.com
http://careers.stackoverflow.com/jobs/tag/C++

-- 
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" -- Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... .. -. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... --- ..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- -- ..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when the last of their code is rewritten by some asshole using JavaScript" -- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... .. -. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He who does as an adult has no brain" -- John Moore



--
Antes de enviar um e-mail para o grupo leia:
http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira: vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en


Renato Forti

unread,
May 19, 2014, 4:26:34 PM5/19/14
to ccppb...@googlegroups.com
Para ajudar, aqui segue uma lista (desatualizada) de aplicações atuais escritas em C++, logo vagas nestas empresas são abertas com frequência:

JuciÊ Andrade

unread,
May 19, 2014, 9:11:30 PM5/19/14
to ccppb...@googlegroups.com
On Monday, May 19, 2014 3:16:13 PM UTC-3, matheusssilva wrote:
Nos dias atuais, quais os tipos de trabalhos para os quais as empresas ainda contratam programadores C++? Qual segmento?

Os compiladores de C++ estão entre os mais sofisticados em termos de geração de código, empregando uma gama de técnicas de otimização. Há situações em que só é possível resolver o problema de forma econômica, satisfatória, usando C++ (ou C). 

Hoje a maior parte do trabalho disponível para C++ não envolve criar novas aplicações, e sim manter softwares antigos. São programas de médio e grande porte, iniciados na época em que a única alternativa viável para quem precisasse de performance era C++. 

Um segmento que emprega muito C e C++ no Brasil é o de automação comercial, por razões históricas. Algumas instituições financeiras usam C++ para componentes de alta performance.





Jan Palach

unread,
May 20, 2014, 8:10:09 AM5/20/14
to ccppb...@googlegroups.com
Esse "ainda" chega a soar estranho como se o C++ estivesse no último sopro de vida :). O que está muito longe de ser verdade. Mas vamos lá:

- Empresas que trabalham com segurança de T.I fazendo anti-vírus e coisas do tipo que precisam rodar de forma não intrusiva, consumindo pouco recurso e performando bem.
- Jogos para consoles e PC. Mas me refiro à jogos de grande porte e de última geração.
- Empresas como a que eu trabalho que realiza monitoramento de recursos de rede(inventáriar hardware, informações de usuário, de uso de software, se o cara plugou pendrive, se removeu algum item de algum slot, performance). Inclusive todos os nossos concorrentes dos quais temos conhecimento usam C++, pois aqui novamente apenas o C e o C++ resolvem satisfatóriamente  a conversa íntima ali com o hardware e coisas do gênero.
- Empresas do setor financeiro adoram, pela performance e pouco uso de recurso. A Orga System(empresa alemã com escritório no Brasil, Argentina, etc) por exemplo é uma empresa que usa C/C++ em determinadas camadas de seu negócio. Eles trabalham com billing em tempo real. Chegaram até mesmo a implementar um banco de dados próprio em C para atendê-los pois consideraram soluções de mercado até então insuficientes para a necessidades deles.
- Empresas no campo da pesquisa e visualização científica com HPC e Computação gráfica, C e C++ dominam aqui, Python vem chegando bem neste campo também visto que Java tentou, mas perdeu um bom espaço. Sei porque trabalhei alguns anos em lugares como LNCC(Laboratório Nacional de Computação Científica) e lá em geral quando a coisa envolve performance e grandes cálculos a pergunta básica é: "Vamos fazer em C++ ou Fortran?" Trabalhei com C++ e VTK um tempo lá em um projeto chamado HeMoLab(http://hemolab.lncc.br/principal.php).
Essas são só algumas poucas das que me lembro.


*Em geral, C e C++ oferecem as melhores vagas do mercado para se trabalhar com grandes desafios de computação.


--------------


Rodrigo Avancini

unread,
May 20, 2014, 8:40:48 AM5/20/14
to ccppb...@googlegroups.com
Games & Realidade Virtual.. 

Att.
Rodrigo

Alex Sandro Garzao

unread,
May 20, 2014, 8:46:30 AM5/20/14
to ccppbrasil
Oi,

> Hoje a maior parte do trabalho disponível para C++ não envolve criar novas
> aplicações, e sim manter softwares antigos. São programas de médio e grande
> porte, iniciados na época em que a única alternativa viável para quem
> precisasse de performance era C++.

Bom, vou colocar a minha experiência/visão. Eu trabalho desenvolvendo
software em C/C++ desde 1992. A maioria das aplicações que desenvolvi
nestas linguagens eu necessitava usar C/C++ por alguns motivos:
1) Desempenho
2) "Ordens" de cima
3) Eram as linguagens que a maioria da equipe sabia

Claro, ai entra aquela questão que nem tudo que se vê é prego, e nem
sempre precisamos de um martelo hehehe. Certamente, em alguns destes
projetos que participei a vida como desenvolvedor teria sido bem mais
fácil se utilizássemos C#, Python ou alguma outra linguagem de mais
alto nível.

Ainda existem muitos projetos sendo mantidos em C/C++, e ainda muitos
novos projetos sendo criados. Por exemplo, eu trabalhava há pouco
tempo em um sistema de cache, similar ao Squid [1], em C, que foi
feito "quase do zero". Há pouco tempo eu estava desenvolvendo módulos
para o NGINX [2] em C, e atualmente desenvolvo plugins para o Apache
Traffic Server [3] em C++.

Concordo que existem outras alternativas para muitos projetos (como
Python, que eu utilizo para alguns projetos que não envolvam grande
carga), e outras alternativas para projetos que necessitam de um bom
desempenho (como Go e Erlang, por exemplo). Inclusive, estamos
avaliando o uso de Go em alguns projetos na empresa, e também estamos
estudando RUST (da mozilla) por diversão :-)

O que eu acho MUITO legal em várias destas novas linguagens é, alem da
sintaxe "mais clean", o conceito de closures (ou similares) que
possibilitam facilmente implementar um modelo reativo (ou
event-driven, como queiram). Este modelo de programação é possível sim
em C/C++, e inclusive vários projetos já implementaram isso (NGINX,
ATS, ...), seja usando epoll/kqueue ou alguma lib que abstraia um
pouco a complexidade disso tudo. Mas, mesmo assim, a programação neste
modelo reativo fica relativamente mais complexa. Em Go, Erlang e RUST,
este modelo reativo é digamos assim "nativo" da linguagem, então o
código fica trivial (se comparado a C/C++).

Ai fica a pergunta: com outras opções, porque usar C/C++ em novos
projetos? Bom, em muitos casos, a única forma de "espremer" o máximo
do HW é programar o mais próximo dele, e isso significa C/C++. Por
melhores que sejam estas novas linguagens, em função das abstrações
que elas criam, elas não conseguem obter o mesmo desempenho de C/C++.
Em alguns casos, esta "pequena" diferença faz muita diferença, algo
como ter que usar 20 máquinas onde 14 bastariam.

Claro, ai entra outro balanço: valeria a pena demorar mais tempo para
lançar um produto (e consequentemente custar mais), e levar mais tempo
para mantê-lo, por um pouco a mais de desempenho? A resposta certa é
depende :-)

> Um segmento que emprega muito C e C++ no Brasil é o de automação comercial,
> por razões históricas. Algumas instituições financeiras usam C++ para
> componentes de alta performance.

Na minha experiência, eu até trabalhei com C++ para automação
comercial, mas foi um caso raro (aqui na minha região). No geral é
automação industrial, softwares especialistas, software embarcado, e
por ai vai....

Abraços!

[1] http://www.squid-cache.org/
[2] http://nginx.org/
[3] http://trafficserver.apache.org/

--
[]'s
------------------------------------------------------------------
Alex Sandro Garzão
mailto:alexg...@gmail.com
_
_v_ Software Engineer, Computer Science MSc
/(_)\ Linux user #229193
^ ^
------------------------------------------------------------------

Thiago A. Corrêa

unread,
May 20, 2014, 8:52:52 AM5/20/14
to ccppb...@googlegroups.com
On Mon, May 19, 2014 at 3:27 PM, matheusssilva <matheus...@gmail.com> wrote:
Sério? Sistemas também? Tipo ERP?


Tipo ERP também. Provavelmente no interpretador da linguagem dele, e outros módulos que exigem performance.

http://catracalivre.com.br/geral/saude-bem-estar/indicacao/53-vagas-para-trabalhar-na-totvs/

 

Alex Sandro Garzao

unread,
May 20, 2014, 8:58:08 AM5/20/14
to ccppbrasil
> Tipo ERP também. Provavelmente no interpretador da linguagem dele, e outros
> módulos que exigem performance.
>
> http://catracalivre.com.br/geral/saude-bem-estar/indicacao/53-vagas-para-trabalhar-na-totvs/

Pelo que eu saiba, a TOTVS tem uma VM (estilo JVM) que executa as
aplicações. Então, no caso deles, a VM tem que ser "performática", mas
isso não quer dizer que o ERP é feito em C/C++...

Abs!

Antonio Celso C L Souza

unread,
May 20, 2014, 8:45:04 AM5/20/14
to ccppb...@googlegroups.com
Bom acho que é implicito neh... mas pra embarcados e principalmente microcontroladores, assim penso eu!

Abs

Caio Casimiro

unread,
May 20, 2014, 11:06:26 AM5/20/14
to ccppb...@googlegroups.com
Caio Ramos Casimiro
M.Sc. Student
School of Arts, Sciences and Humanities
University of São Paulo

matheusssilva

unread,
May 20, 2014, 1:21:42 PM5/20/14
to ccppb...@googlegroups.com
A nível de Brasil?

Falta programadores C++ hoje? Consegue-se emprego fácil, ou tem que ralar um pouco?

Saber C++ é uma coisa, mas saber aplica-lo em determinado segmento é outra história, tipo, baixo nível (kernel mode, etc.), computação cientifica, multimídia, CG, etc. Qual dessas áreas absorve mais os programadores C++, no Brasil?

Jan Palach

unread,
May 20, 2014, 1:28:31 PM5/20/14
to ccppb...@googlegroups.com
     Eu não diria que faltam programadores C++, mas faltam bons programadores no geral(que saibam empregar ferramentas de maneira correta na hora certa, e que estejam abertos a aprender uma gama delas). Quanto a saber C++ e não saber aplicar, acho que são coisas complementares. Não dá para dizer que sabe C++ só pq leu o deitel e fez todos os exercícios, para chegar no mercado dizendo que sabe C++ você tem de saber como aplicar o mesmo senão não passa nem das entrevistas. Sobre as áreas citadas, há um equilíbrio, talve CG e multimídia estejam na frente(acredito eu).


--------------


--

Alex Sandro Garzao

unread,
May 20, 2014, 1:31:23 PM5/20/14
to ccppbrasil
Interessante o xTuple :-)

Eu trabalhei no desenvolvimento de um POS em C++. Foi usado C++, na
época, porque o sistema tinha que rodar em 386 :-)

Abs!

matheusssilva

unread,
May 20, 2014, 1:37:30 PM5/20/14
to ccppb...@googlegroups.com
A questão de "Saber C++ e não saber aplicar", me refiro no ambito das areas que citei, por exemplo, conheço C++, consigo fazer aplicações desktop, conectar a base de dados, etc. Mas não sei aplicá-lo em segmentos de CG, Multmídia, kernel mode, etc. As vezes conhecemos C++, mas não podemos nos candidatar a uma vaga por não saber aplicar esses conhecimentos na área que a vaga exige.

Jan Palach

unread,
May 20, 2014, 1:51:45 PM5/20/14
to ccppb...@googlegroups.com
     Hum, entendi o que quis dizer. Então essa dúvida habitava minha mente quando entrei no trampo atual, que básicamente é programação a nível de rede e conhecer APIs de SO. Antes de me candidatar para a vaga, meu conhecimento em C++ se resumia a VTK, e eu havia trabalhado bem pouco com paralelismo/concorrência e hoje mantenho um servidor que recebe trocentas coletas por segundo em ambiente Linux, cheio de shared state e programação assíncrona com boost::asio (que eu desconhecia na época), na verdade, nem a boost eu conhecia. Mas me candidatei assim mesmo. O que acontece é que grande parte das empresas tem em mente que profissionais C++ com fundamentos sólidos estão mesmo em falta e os que estão por ai são caros. Creio que ninguém mais esteja aceitando menos de 5k CLT de salário por ai...então muita empresa aceita se o candidato for engajado em aprender e "auto-melhorar". Pelo que você me falou, eu como contratante aceitaria você como contratado.
     Eu acho que você deve se candidatar se acha que terá capacidade de aprender sobre aquele nicho e se gosta daquilo. As empresas não estão em condição de virar as costas para profissionais que tenham essa atitude.


--------------


matheusssilva

unread,
May 20, 2014, 2:28:45 PM5/20/14
to ccppb...@googlegroups.com
Ótima história e obrigado pelo conselho, talvez eu faça isso mesmo, afinal o máximo que pode acontecer é um "não", kkkkkk.
Mas, já tenho buscado algum conhecimento mais especifico, na área de processamento de imagens. São conhecimentos genéricos que independem de linguagem. De posse desses conhecimentos é que pode-se começar a aplicar o uso de alguma ferramenta para resolver os problemas.

Igor Faggiano

unread,
May 20, 2014, 4:11:14 PM5/20/14
to ccppb...@googlegroups.com
Adicionaria, que com C++ você consegue também demandas de (linguagem de) alto nível com recursos disponíveis e multi-plataforma como Boost e QT, além, obviamente, de outras bibliotecas open source (geralmente) multi-plataforma disponíveis por aí...

Com relação à fazer algo em C++ que atenda web, existem sim aplicações (raras, mas existe uma pequena demanda).
Os motivos são óbvios... todos já sabem.

Para citar um exemplo de utilização de C++ em alto nível,
(eu(e uma equipe, obviamente) montei uma ERP em C++ com QT e Boost, para uma empresa atacadista (grande) - para funcionar em Linux, Mac e Windows)

Fica aí a dica.
[]'s
Igor RF


Rodrigo Madera

unread,
May 20, 2014, 4:14:58 PM5/20/14
to ccppb...@googlegroups.com
Igor,

Qt e Boost no mesmo projeto?

Fiquei curioso... como lidaram com as diferenças abismais dos dois?

Que estruturas de dados favoreceram?

Usaram Qt pra parte gráfica, imagino. Chegaram a usar pra outro tipo de código?

Qt é tão, mas tão runtime que chega a me dar nauseas... mas, faz o que
se compromete a fazer.

Madera

angelo

unread,
May 20, 2014, 4:20:10 PM5/20/14
to ccppb...@googlegroups.com
Arrojado, o projeto Erp em C++, interessante

Sabemos que é possivel, se fazer qualquer coisa, em qualquer linguagem, nao só c/c++.. Poderia ter sido feito noutras linguagens, de alto nivel, ou até mesmo em assembly (provavelmente só terminaria em 2020 mas.. poderia)
Mas quanto vai custar a manutenção disso depois ?  Quem compra olhar sempre isso, o custo.. O atacadista provavelmente embutiu o custo disso em alguma coisa e espero que esteja fazendo muito proveito, claro.

Esse é  o tipo de situação do 1% perto  do que escolheriam em C#, VB ou Java.. ainda mais no nosso país, que é bem imediatista.





2014-05-20 17:11 GMT-03:00 Igor Faggiano <vbke...@gmail.com>:

Igor Faggiano

unread,
May 20, 2014, 4:23:07 PM5/20/14
to ccppb...@googlegroups.com
Na verdade, usamos pequenas coisas com Boost (parte de TCP e comunicação e transferência de dados, chat etc.),
Quase tudo foi feito em QT. Faz uns 4 anos isso... (quem fez a parte do boost não fui eu, eu fiquei só com a parte de QT, visto que eu vim do C# e tinha pouca experiência com C++(na época))

[]'s
Igor RF

Igor Faggiano

unread,
May 20, 2014, 4:26:19 PM5/20/14
to ccppb...@googlegroups.com
Foi bem interessante, mas mesmo um programador com pouca experiência em C++ (e boas noções de QT) tem condições de dar manutenção do projeto... ficou "Bem orientado a objeto"... bem simples...

[]'s
Igor RF

Rodrigo Delduca

unread,
May 20, 2014, 4:26:40 PM5/20/14
to ccppb...@googlegroups.com
Madera,

Eu já vi alguns projetos que usam ambos, antigamente o Qt não tinha
suporte a smart pointers, então era usado os da boost. Mesma coisa
para boost.graph, é uma excelente biblioteca, o boost.asio é mais
perfomatico que o QtNetwork, pelo menos na época que eu pesquisei
sobre.

O que eu acho estranho mesmo é que o código fica bem heterogêneo,
enquanto boost faz muito uso de templates e o estilo de codificação é
o snake_case, no Qt templates são usados apenas quando necessário e o
estilo de codificação é java-like

Att.


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



Rodrigo Madera

unread,
May 20, 2014, 4:39:11 PM5/20/14
to ccppb...@googlegroups.com
Que medo... mistureba da porrrra! =P

angelo

unread,
May 20, 2014, 4:42:02 PM5/20/14
to ccppb...@googlegroups.com
Ja que estamos debatendo os nichos, segmentos e mercado de trabalho tenho outro exemplo..

Voces usam o whatsapp. Certo?

Acho que todo mundo aqui tem (inclusive eu), em seus aparelhos de celular, esse app que espalha mais que virus e que quase todo mundo gosta.
Ele foi desenvolvido em Erlang, que é uma linguagem especializada em concorrência, multitarefa originalmente criado para telefonia,  que olhando a sintaxe dele por alto.. deriva bem, bem do c/c++
Acho que eles (a empresa) foram bem felizes na escolha, sem querer defender ninguém

Que aliás, quem fez o Erlang, o fez em quê?  nao duvido que tenha sido c++




2014-05-20 17:14 GMT-03:00 Rodrigo Madera <rodrigo...@gmail.com>:

P.

unread,
May 20, 2014, 4:44:22 PM5/20/14
to ccppb...@googlegroups.com
Em terça-feira, 20 de maio de 2014 17h42min02s UTC-3, angelo escreveu:
 
Que aliás, quem fez o Erlang, o fez em quê?  nao duvido que tenha sido c++

Irrelevante.

O Windows é feito em C e ainda assim é uma merda.

P.

Rodrigo Delduca

unread,
May 20, 2014, 4:46:25 PM5/20/14
to ccppb...@googlegroups.com
Angelo,
Server-side dele é em Erlang, é uma linguagem que tenho estudado em
paralelo. E se não me client-side é em nativo, ou seja, Java para
Android e ObjC para iOS. Todas as VM's/Compiladores/OS que esse
produto usa foram escritas em C/C++, mas acho que isso é point-less,
nesses casos (de escalibilidade) o que mais conta são os algoritimos e
estruturas de dados usados, e não a linguagem.



--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



angelo

unread,
May 20, 2014, 5:11:43 PM5/20/14
to ccppb...@googlegroups.com
Concordo

Porque os requisitos do sistema o fizeram ser uma merda.. usável ainda por cima..



--

Rafael Souza

unread,
May 20, 2014, 5:15:31 PM5/20/14
to ccppb...@googlegroups.com
A Microsoft tem problemas sérios de existência, mas um fato é que a linguagem que usaram para construir o Windows não é um problema, pelo contrário ajuda muito e continua ajudando até hoje.

Uma das coisas que mais me irrita nos windows da vida, é o fato de ter coisas semelhantes ao do mundo unix, mas propositadamente não compatível, parece que os caras fazem de propósito!

[]s
--

Rafael Souza
11 98445-8118

angelo

unread,
May 20, 2014, 5:16:10 PM5/20/14
to ccppb...@googlegroups.com
Entendo que fez parte da estratégia deles.

O aplicativo que roda no lado do usuário, eu sei que foi em alguma linguagem do Android, o client.

estava focando no lado do servidor mesmo (que é onde o sistema precisa funcionar realmente)



Rafael Silva

unread,
May 20, 2014, 5:57:29 PM5/20/14
to ccppb...@googlegroups.com
Então, eu estudei C++ para quem sabe sair do .Net e ir trampar com C++.

Primeiro eu quis Games, mas a relação DOR x Lucro pro Brasil me parece pequena. Não temos grandes estudios de games aqui, mal começamos a usar a Unity3D.

Depois busquei umas vagas na APInfo e surgiram apenas vagas para quem é rodado, não me parece que o C++ atualmente esteja captando juniores, mesmo eu sendo Pleno em .Net acho difícil migrar para Pleno em C++ sem nunca ter mexido em um projeto. Mas eu nem me importo com isso, ia curtir, tanto que foi lendo o Bjarne e vendo o RAII que ficou claro como o Garbage Collector introduziu um problema nas linguagens, Finally/Dispose são apenas remendos para algo que o RAII resolve com maestria.

Aí deixei de mão e continuei estudando tecnologias .Net.

Só compartilhando meu caso, fora do Brasil me parece muito mais fácil de começar do que aqui. Quando eu usava linkedin as vagas lá foram eram frequentes.

Att.

Vinícius dos Santos Oliveira

unread,
May 20, 2014, 6:15:22 PM5/20/14
to ccppbrasil
Em 20 de maio de 2014 18:15, Rafael Souza <rad...@gmail.com> escreveu:
Uma das coisas que mais me irrita nos windows da vida, é o fato de ter coisas semelhantes ao do mundo unix, mas propositadamente não compatível, parece que os caras fazem de propósito!

Ele herda os conceitos, estrutura/organização e sintaxe do DOS, que não foi projetado para ser multitarefa ou multiusuário. Tudo evoluiu como uma gambiarra a partir disso, apesar de algumas releases terem quebrado compatibilidade por um bem maior.

Mas muitas das mudanças são feitas só para causar lock-in mesmo, quebrando interoperabilidade com qualquer concorrente que alcance compatibilidade com os problemas dela. Ainda bem que nós, programadores, temos um nível de exigência maior que o usuário e não vejo tanto programadores defendendo C++/CLI (ou C++/CX). Até vejo os programadores que defendem o GObject, mas ironicamente acabam usando o binding elegante para Python.


--
Vinícius dos Santos Oliveira

JuciÊ Andrade

unread,
May 20, 2014, 6:28:18 PM5/20/14
to ccppb...@googlegroups.com
On Tuesday, May 20, 2014 6:15:31 PM UTC-3, Rafael Souza wrote:
...
Uma das coisas que mais me irrita nos windows da vida, é o fato de ter coisas semelhantes ao do mundo unix, mas propositadamente não compatível, parece que os caras fazem de propósito!

É de propósito. Há muitos anos a Microsoft tinha um Unix, chamava-se Xenix. Quando ela resolveu mudar de ideia e vendeu os direitos do Xenix, o contrato de compra e venda incluiu cláusulas de não competição. Isso significava que ela não poderia lançar um outro Unix ou então incorporar funcionalidades exclusivas do Unix num produto dela, caso contrário estaria desvalorizando o que tinha acabado de vender. Por isso, é bem como você falou: o Windows tem coisas semelhantes, mas propositalmente diferentes. É uma questão legal.

Francisco Lopes

unread,
May 20, 2014, 7:21:53 PM5/20/14
to ccppb...@googlegroups.com
O grosso do mercado é CRUD/TI... e é o que mais vai aparecer de colocação por
aí. C++ era top nessa área, mas deixou de ser a muito tempo, java e c#
dominam. Em outros cantos do mundo me parece haverem muito mais
oportunidades de emprego para C++ pois além desse grosso, também há mais
oportunidades em outros campos, científico aplicado, automobilístico, hardware,
games, backends de alta performance, domótica, etc... C++ se encaixa bem
nestes setores, mas não é o forte do brasil. Acredito que são maiores as chances
de encontrar oportunidades de manutenção de sistemas anos 90 em C++ (que
já são de uma proporção muito menor do que o grosso) do que encontrar
 *novas* oportunidades nicho, onde haveria aplicação de C++.
--

Rodrigo Delduca

unread,
May 20, 2014, 7:27:26 PM5/20/14
to ccppb...@googlegroups.com
Sistemas embarcados também, cada dia que passa vejo mais vagas de C++ do que C


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



Francisco Lopes

unread,
May 20, 2014, 7:35:33 PM5/20/14
to ccppb...@googlegroups.com


Em Ter, Mai 20, 2014 em 8:21 , Francisco Lopes <obl...@gmail.com> escreveu:
O grosso do mercado é CRUD/TI... e é o que mais vai aparecer de colocação por
aí. C++ era top nessa área, mas deixou de ser a muito tempo, java e c#
dominam. Em outros cantos do mundo me parece haverem muito mais
oportunidades de emprego para C++ pois além desse grosso, também há mais
oportunidades em outros campos, científico aplicado, automobilístico, hardware,
games, backends de alta performance, domótica, etc... C++ se encaixa bem
nestes setores, mas não é o forte do brasil. Acredito que são maiores as chances
de encontrar oportunidades de manutenção de sistemas anos 90 em C++ (que
já são de uma proporção muito menor do que o grosso) do que encontrar
 *novas* oportunidades nicho, onde haveria aplicação de C++.

A não ser que você arregace as mangas e arrisque aqui, nestas áreas onde C++
se encaixa bem e se torne um pioneiro ou algo do tipo, provendo um serviço
de brasileiro pra brasileiros.

Pensando no que o brasil é reconhecido, eu sei que é forte na agropecuária,
talvez c++ na tecnologia desse setor também seja uma boa, mas não conheço a
respeito. Na parte embarcada, como o Rodrigo mencionou, por exemplo.

Jan Palach

unread,
May 20, 2014, 9:21:08 PM5/20/14
to ccppb...@googlegroups.com
O Erlang foi escrito pela ericsson usando o C(não sei se a vm(BEAM) tem algo de C++ hoje em dia é bem possível), era uma linguagem proprietária mas foi disponibilizada para código aberto mais tarde. Foi pensada desde o seu início para ter 03 coisas nativas paralelismo, tolerante à falhas, nunca parar mesmo sendo funcional (você consegue efetivamente conectar nos programas feitos em erlang e atualizar módulos "a quente").

Vejam a parte I e parte II, interessante que muito antes das linguagens da moda os caras já estavam lá resolvendo pepinos que hoje muita gente tá descobrindo.

https://www.youtube.com/watch?v=xrIjfIjssLE

https://www.youtube.com/watch?v=rRbY3TMUcgQ


--------------


Igor Faggiano

unread,
May 21, 2014, 7:42:44 AM5/21/14
to ccppb...@googlegroups.com
Minha sugestão para quem quer entrar no mercado de trabalho de uma linguagem que não "aceita júnior", é desenvolver vários projetos e publicá-los na web... ou mesmo participar de projetos open source (o que vai ser um desafio e tanto)... ou mesmo participar de projetos, com compromisso real, sem ganhar 1 centavo... Fazendo isso durante uns 2 ou 3 anos, possivelmente, você já consiga se candidatar como pleno.

Na verdade, quando alguém vem me falar que quer viver como programador C#, mas não encontra oportunidade, eu percebo que é pq o mercado tem pedido cada vez mais mesmo dos Juniores.
Eu geralmente recomendo montar umas páginas ou pequenos projetos e publicá-los na web para mostrar a competência mínima desejada para a maior parte dos empregadores da área, isso, acredito que seja um um bom diferencial.

OBS: Eu sou programador C# sênior (não expert), eu diria que sou entre júnior e pleno de C++... A maior parte dos meus projetos em C++ eu os desenvolvi de graça... só para ganhar experiência....
Obviamente eu ficava mais com o Chimp Job, mas aprendia bastante vendo, conversando, participando do projeto e acompanhando todo o desenvolvimento de toda a arquitetura dos projetos em que participei... bem como ler livros e praticá-los... isso tudo para daqui ainda a alguns anos eu possa trabalhar como pleno de C++, diga-se de passagem, se alguém souber de algo com C++ pleno estou à disposição.

É apenas uma sugestão, se alguém tiver idéia melhor com relação ao que se pode fazer para melhorar a chance de contratação de um programador C++ no mercado brasileiro gostaria de ouvir para entender melhor, visto que é um assunto do meu interesse também.

[]'s
Igor RF

Thiago A. Corrêa

unread,
May 21, 2014, 8:18:10 AM5/21/14
to ccppb...@googlegroups.com



2014-05-21 8:42 GMT-03:00 Igor Faggiano <vbke...@gmail.com>:
É apenas uma sugestão, se alguém tiver idéia melhor com relação ao que se pode fazer para melhorar a chance de contratação de um programador C++ no mercado brasileiro gostaria de ouvir para entender melhor, visto que é um assunto do meu interesse também.



Saber inglês. E não tem como enfatizar isso demais. Saber inglês é pré-requisito para que o cara consiga fazer o que todo mundo quer, que é evoluir as suas habilidades. Encare os fatos, se vc não sabe inglês, em programação você é analfabeto.

Eu já ví gente que não conseguia fazer o programa funcionar, e ao questionar se já viu a documentação disse que sim. Sentei do lado e disse, olha aqui, está escrito na documentação que o que vc está fazendo tem que ser desta forma.... sabe o que ele leu da documentação? O exemplo da documentação. Ele não conseguia entender o texto da documentação, então só olhava o exemplo que acompanhava a documentação. Acredite, isso é recorrente, muito recorrente.

Até quem não tem formação em computação, mas que é confortável com inglês, consegue melhorar as suas habilidades de programação ao ponto de ser melhor do que pessoas formadas em computação mas que torcem o nariz quando você lhe oferece um livro em inglês. Se um colega precisa de ajuda, eu posso explicar um algoritmo ou uma técnica, mas não posso explicar um livro inteiro de API.



Rogerio Machado

unread,
May 21, 2014, 9:25:59 AM5/21/14
to ccppb...@googlegroups.com
Trabalhei na Bovespa com desenvolvimento software em C++/Java. O engine para transacoes financeiras de baixa latencias(alguns microsegundos) eh todo escrito em C++ e STL usando uma versao otimizada do QuickFIX (opensource, http://www.quickfixengine.org/). Com tunning a nivel de SO como: prioridade de threads, ...  Eles tambem tem avancado no desenvolvimento com processamento paralelo usando os nucleos NVIDIA
Mas aos poucos acredito que migrem para JAVA por causa da inflencia da bolsa de Chicago(CME). Fiz entrevistas recentementes em empresas para desenvolvimento C++. Parece que a ideia eh manter o que foi escrito em C++ e para softwares novos JAVA. 

Em segunda-feira, 19 de maio de 2014 22h11min30s UTC-3, JuciÊ Andrade escreveu:
On Monday, May 19, 2014 3:16:13 PM UTC-3, matheusssilva wrote:
Nos dias atuais, quais os tipos de trabalhos para os quais as empresas ainda contratam programadores C++? Qual segmento?

Os compiladores de C++ estão entre os mais sofisticados em termos de geração de código, empregando uma gama de técnicas de otimização. Há situações em que só é possível resolver o problema de forma econômica, satisfatória, usando C++ (ou C). 

Hoje a maior parte do trabalho disponível para C++ não envolve criar novas aplicações, e sim manter softwares antigos. São programas de médio e grande porte, iniciados na época em que a única alternativa viável para quem precisasse de performance era C++. 

Marcelo Geyer

unread,
May 21, 2014, 11:12:26 AM5/21/14
to ccppb...@googlegroups.com
Aqui nós também trabalhamos com ERP em C++ e Qt. O Qt não é bicho de 7 cabeças, a documentação é uma das melhores que já vi e é muito rápido desenvolver com este framework. Muitas empresas já estão olhando para Qt com carinho em virtude do amplo desenvolvimento em diversas plataformas (Linux, Windows, Mac, iOS, Android, etc).


--
Antes de enviar um e-mail para o grupo leia:
http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira: vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en




--
Marcelo E. Geyer
Standard Net Tecnologia e Informação

Rodrigo Delduca

unread,
May 21, 2014, 12:57:53 PM5/21/14
to ccppb...@googlegroups.com
Rogerio,
Gostei do seu relato. Agora fiquei imaginando, será que usando FPGA
e/ou hardware dedicado para isso não seria mais eficiente?



--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



Rogerio Machado

unread,
May 21, 2014, 6:46:29 PM5/21/14
to ccppb...@googlegroups.com
Eu nao me envolvi no projeto de processamento paralelo com NVIDA na Bovespa mas conheco quem trabalha na equipe. Entao nao conheco os detalhes referente a que tipo de algoritmos que rodam nos nucles NVIDIA.   Se fosse dar um palpite procuraria sobre a aplicacao da teoria do caos para previsao de tendencias financeiras. Sobre usar FPGA no meio financeira tenho noticias que existem experimentos visando diminuir os tempos de latencias(que estao na casa de microsegundos) no trade de alta frequencia. A ideia eh usar uma placa de rede com uma FPGA para processar os alguns pacotes FIX(*http://www.fixtradingcommunity.org/pg/main/what-is-fix) de forma paralela(A FPGA eh boa para isso) que chegam via interface ethernet(TCP) e reponder a essas mensagens para o chip de ethernet. Detalhe: tudo isso sem passar pela pilha TCP/IP que roda no processador do servidor.Nesta arquitetura nem todos pacotes sao processados pela FPGA. Alguns passam direto para a pilha TCP do processador Intel do servdir para ser processado por um programa C++.Com essa arquitetura a pilha IP do servidor tem que interagir com a FPGA de modo a gerar os numeros de sequencia TCP entre outros paramentos. Entao uma pilha TCPIP no sistema Windows ou Linux eh dedicada


Obs: Sou desenvolvedor C++ profissional mas apesar disso tb tenho desenvolvido um projeto com FPGA de media complexidade. Entao me  sinto confortavel em escrever sobre isso. Acredito que possa ser um pouco offtopic

Mauro Risonho de Paula Assumpção

unread,
May 21, 2014, 7:12:18 PM5/21/14
to ccppb...@googlegroups.com

Tô no celular, mas gostaria citar o web framework para c++:

http://www.webtoolkit.eu/wt

@firebitsbr

Alex Sandro Garzao

unread,
May 22, 2014, 7:42:51 AM5/22/14
to ccppbrasil
Fantástico o uso de FPGA no mercado financeiro. Interessante mesmo :-)

Algumas empresas que trabalham com equipamentos de rede utilizam o NP
(network processor) para rotear o tráfego, etc e tal. Um exemplo de NP
é o vendido pela EzChips [1].

Pelo que eu saiba, o NP da EzChips nada mais é do que um FPGA
programado para suportar funções específicas para tratamento de
pacotes de rede. Este NP é programável através de um assembly "de alto
nível" que lida com pacotes de rede. Por exemplo, existem instruções
para calcular checksum de pacotes, obter vlan, obter/setar ip, ...

Abraços!

[1] http://www.ezchip.com/

Igor Faggiano

unread,
May 22, 2014, 8:10:39 AM5/22/14
to ccppb...@googlegroups.com
O Rogério, eu cheguei a trabalhar com você lá na Bovespa! que mundo pequeno...
Eu tinha ganhado meu primeiro curso de QT do Márcio Castro na época e sentava na fileira de programadores da frente. KKKK Inclusive fui eu que fiz a segunda versão(que não chegou a ser usada) do Cracker de Log do QuickFix em C++ e QT em Linux.
Eu era de uma equipe que atuava em várias linguagens dando manutenção em quase tudo, desde cobol a vba, delphi, asp, COM, COM+ até C#, VB.NET, Java, C, C++(Eu estava com sob Maurício), e foi quando com ajuda do Paulo D'Angelo (que sentava logo atrás de você na época) quase consegui a oportunidade de ficar focado só nos projetos de C++ sob a mesma coordenadoria que a tua (acho que sob o Nikau-su (um japonês) se não me engano)!
=D

Eu estava conversando com outros gerentes e outros coordenadores, Marcelo Venancio - desenvolvedor C e C++(que agora está na Merrill Linch), estava na parte de "risco" e estava começando a usar cuda para calcular o risco das operações executadas em real-time (40 mil mensagens por segundo - tinha que chegar no micro-segundo) e chegou a me chamar para trabalhar com ele, mas acabou não rolando por não ter quem me cobrisse na minha área naquela época.

(Diga-se de passagem, o Rogério parece humilde, mas o cara é muito fera mesmo!!!! Com certeza um dos melhores programadores que eu tive a sorte de conhecer, pena ter perdido o contato naquela época...)


Rodrigo Strauss

unread,
May 22, 2014, 8:32:26 AM5/22/14
to ccppbrasil
Tem gente usando FPGA para algoritmos de negociação. Um Google por "fpga algorithmic trading" vai trazer um monte de coisas.

Sobre GPU, não dá pra fazer coisa real time com elas, até onde sei pela latência em copiar da memória RAM para a memória da GPU. Tem uma arquitetura nova de compartilhamento de memória que é usada pelo xbox one e ps4 que parece resolver isso. Mas tem gente mais qualificada pra falar sobre isso na lista.

O projeto da bolsa, até onde eu sei, era usar Tesla para apressamento de ativos (o pessoal do mercado chama isso de "precificação", mas parece que essa outra palavra esquisita é o termo correto). Isso tem relação com o Projeto IPN e a integração das clearing. 


Rodrigo Strauss
http://www.1bit.com.br
@rodrigostrauss

angelo

unread,
May 22, 2014, 10:00:43 AM5/22/14
to ccppb...@googlegroups.com
Esse assunto é interessante, mas eu to boiando e agora o cara comenta que encontrou um ex-colega na lista que participava dessa loucura toda.. afinal 40.000 msgs por segundo não sei o que é exatamente o que faz, mas devia ser bem critico... Trazendo pro meu mundo, não tinha um SQL ai no meio do caminho não ? rss

Pelo que vejo até agora pelos comentários, vocês tem um sistema, com vários programas fazendo interface um com o outro.. e não pode haver falha ou atraso.. bem real time
Esses sistemas processam o que exatamente?   Filas e mais filas ?  pergunto, porque eu nunca vi esse tipo de coisa ainda.

Tudo para os acionistas ficarem lá no homebroker na ponta do processo, felizes e satisfeitos acompanhando o comportamento dos investimentos no dia dia

[]s angelo



2014-05-22 9:10 GMT-03:00 Igor Faggiano <vbke...@gmail.com>:

Rodrigo Madera

unread,
May 22, 2014, 10:23:14 AM5/22/14
to ccppb...@googlegroups.com
Sei que hoje na BMF Bovespa estão usando CUDA pra cálculo de risco. Até hoje.

Sei que FPGA era um propósito forte de Marcio Castro, que fez um paper
que achei fodástico, na época.

Queria saber o que mais esse nicho financeiro está usando.

Espero que essa tecnologia que estão falando de compartilhamento de
memória de sistema e GPU vire regra... seria um divisor de águas.

Madera

Rodrigo Strauss

unread,
May 22, 2014, 10:50:48 AM5/22/14
to ccppbrasil
Exatamente isso, fila pra todo lado. Desde MQSeries de mainframe até TIBCO. Algumas coisas podem ser socket, .NET Remoting, WebServices e eteceteras, mas usa-se muita fila.

Nem tudo é realtime, somente a negociação. Tem um parte gigante de negócio que não é realtime. Aí tem desde instalações de Oracle que custam milhões até planilhas Excel rodando em um Windows XP.

Rodrigo Strauss
http://www.1bit.com.br
@rodrigostrauss


2014-05-22 11:00 GMT-03:00 angelo <angelo...@gmail.com>:

P.

unread,
May 22, 2014, 10:59:59 AM5/22/14
to ccppb...@googlegroups.com
A minha visão do resto do mercado financeiro diz a mesma coisa.

Os módulos de negócio são sempre ligados aos remotos por algum tipo de fila de mensagem, em geral o MQSeries ou Direct/Connect.

Segundo o meu entendimento, o requisito é obter ACID na entrega de mensagens.
Isso é mais importante que outras definições para "baixo desempenho".

P.

Igor Faggiano

unread,
May 22, 2014, 1:21:14 PM5/22/14
to ccppb...@googlegroups.com
Lembro que cheguei a perguntar o motivo de usar tibco, se socket simples + API do SO por si só fornece um controle baixo nível o suficiente para manter rápida a mensageria entre os sistemas, e a resposta que eu tive foi: "O TIBCO foi o único meio pelo qual conseguimos manter toda a mensageria em UDP com garantia de 99,999%(3 noves depois da vírgula) de que não haverá perda de dados na transferência. Ele faz alguma mágica que ainda não descobrimos como é feita. Isso nos garante apenas 1 mensagem de recovery a cada 10 mil mensagens (no máximo 4x por segundo)"

Obviamente existe placa de rede de "ultra baixa latência"(não sei a marca) em cada servidor, mesmo assim, 40 mil mensagens por segundo, foi uma imposição da CME, uma vez que a CME faz mais de 10x isso por segundo tbm. 

Para acesso à algumas coisas do IPN, mesmo do EntryPoint e MarketData do PUMA são divididas as corretoras em alguns IPs específicos, por exemplo, o código da corretora vem na quarta parte do IP, ex: 123.123.123.XXX onde XXX é um número de cada corretora,,, assim, eles conseguem fazer um pseudo load balance. Onde só para constar isso é publico, tem nas mensagens públicas que a bolsa envia gratuitamente (sempre em PDF) por e-mail.

Sei tbm que os gateways da bolsa Têm SIM um diferença de latência entre uma e outra.
Sei disso pq eu já fui prejudicado em um sistema de HFT que eu fiz e perdia esporadicamente (naquela época) por conta disso... problema que foi resolvido depois de mudar de corretora (apesar de quê estávamos no co-location).

Todos os sistemas mais pesados da bolsa, (até uns 2 anos atrás) estavam sendo migrados para acessar Oracle ao invés de qualquer outra base de dados existente.

Quase todos os servidores de entry point e market data estão rodando red hat - inclusive com suporte da Red Hat.

Isso tudo é público, apesar que eu só fiquei sabendo como acessar essas informações públicas depois de ter trabalhado lá.... além disso, faz alguns anos, pode ser que já tenham mudado isso tudo...

Rogerio Machado

unread,
May 22, 2014, 3:42:51 PM5/22/14
to ccppb...@googlegroups.com
Estou procurando emprego no momento e dentre as empresas que fiz entrevista recemente uma me chamou a atencao pelo nivel tecnico exigido. Eh para trabalhar em um instituto de pesquisas http://www.fit-tecnologia.org.br/
Se vc acha que o mercado de brasileiro de C/C++ CRUD nao aproveita todo seu potencial entao esta eh a empresa. Tenho informacoes que o instituto tem departamentos desenvolvendo BIOS PC, Hardware com FPGA, embarcados com microcontroladores ARM, JAVA,servicos WEB + JAVA, e outros. Eh exigido ingles avancado e eh usado regularmente para discutir assuntos tecnicos.

Rodrigo Delduca

unread,
May 22, 2014, 3:47:29 PM5/22/14
to ccppb...@googlegroups.com
Rogerio,

Tenho um amigo que trabalha nesta empresa, com C/C++ inclusive.
Procure por Naftali e diga que me conhece, o Mococa :)

Att.


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



Francisco Lopes

unread,
May 22, 2014, 3:55:13 PM5/22/14
to ccppb...@googlegroups.com
Acredito que quando falei de CRUD/TI, não me referias a estas oportunidades
que surgem em muito menor escala onde C e C++ teria um bom encaixe.

angelo

unread,
May 22, 2014, 4:03:28 PM5/22/14
to ccppb...@googlegroups.com
Bem pancado isso hein..  no intervalo aqui depois do almoço comecei a googlar procurando por trading algorithm..hft.. e afins.. um mundo realmente que eu ainda não vi...

E de onde que vem as requisicoes que chegam nesse sistema ?   Internet, broker, pregao da bolsa, geral ?
Sempre que mostram a bovespa na tv é aquela gritaria, quase um pulando em cima do outro..

aqui no trabalho tem uns 4 ou 5 caras que ficam com o programinha aberto o dia todo, aqueles graficos oscilando no monitor...


Igor Faggiano

unread,
May 22, 2014, 4:17:21 PM5/22/14
to ccppb...@googlegroups.com
Aqui acho que começamos a antrar em OffTopic...
Mas me sinto na obrigação de oferecer uma sugestão para evitar mortes desnecessárias:

Sobre "programinha", toma cuidado para não misturar com Forex, que é um mercado diferente.
(do meu ponto de vista, Forex é melhor do que bolsa de valores em quase todos os sentidos, exceto em encontrar uma corretora boa e séria).

Eu sugiro, se você quiser se envolver com isso, começar com Forex, pois é um mundo gigantesco(O mercado de capitais), depois iria para bolsa de valores. Pq no Forex, você tem "conta de Demonstração" onde vc pode operar com dinheiro virtual em um ambiente mais seguro. e será uma boa introdução à mercado de capitais.

Depois estuda CFDs, e daí bolsa de valores, isso é uma sugestão... quem não conhece o mercado de forex, balcão internacional, e CFDs, provavelmente vão te mandar direto pro fogo (bolsa de valores)...

A próxima sugestão é, se você se interessar em querer entrar... antes: tenta vencer uma conta demonstração por 1 ano... e manter estabilidade... outra coisa, é que chegar no mercado com dinheiro real sem estratégia boa: resultará em suicídio - de certa forma podendo chegar próximo ao literal.

Vide casos reais. (inclusive em 1929, 1999, 2008)
Isso não é jogo de azar, nem tão pouco será fácil.

Boa sorte.

Rogerio Machado

unread,
May 22, 2014, 9:22:37 PM5/22/14
to ccppb...@googlegroups.com
Ola Igor,
Primeiramente muito obrigado pelas palavras!
Nao sabia que vc estava  envolvido com tantas tecnologias! Ja deve estar fera, e com seu interesse e vontade de trabalhar duro vai chegar longe!!! :)

 Sobre ter interesse em trabalhar com C++ tem que gostar muito porque percebo que o mercado esta afunilando cada vez mais. O interessante sobre C/C++ eh que se interage mais com baixo nivel, algumas vezes exige criar frameworks/ferramentas e tambem muita disciplina. Porem  todo esse knowhow serve de base muito solida para desenvolver com linguagens de mais alto nivel como .NET,JAVA e outros, onde nao se interage muito em baixo nivel, os frameworks estao prontos  e as arquiteturas pre-moldadas. 
Pensando nisso penso a medio prazo migrar para JAVA e aproveitar todas as experiencias anteriores!

Rogerio Machado

unread,
May 22, 2014, 9:38:51 PM5/22/14
to ccppb...@googlegroups.com
Obrigado Rodrigo pelo contato!

Rodrigo Strauss

unread,
May 23, 2014, 9:17:38 AM5/23/14
to ccppbrasil
Aqui na Intelitrader e em várias empresas da área financeira é quase tudo C++. GC acaba com o requisito de baixa latência. Dá pra contornar, mas é mais fácil fazer em C++ mesmo.

Rodrigo, sistemas da área financeira tem zilhões de integração (com bancos de dados inclusive). Fazer isso em FPGA aumenta o custo do projeto demais, só projetos experimentais toparam bancar esse custo. Imagina a CVM mudando as regras do jogo e você tendo que mudar código em FPGA...

Rodrigo Strauss
http://www.1bit.com.br
@rodrigostrauss


Marcelo Zimbres

unread,
May 23, 2014, 10:19:39 AM5/23/14
to ccppb...@googlegroups.com
"Nos dias atuais, quais os tipos de trabalhos para os quais as
empresas ainda contratam programadores C++? Qual segmento?"

Eu já trabalhei com o desenvolvimento de um programa de análise de
imagens, um programa de segurança para rodar em linux embarcado e
atualmente
trabalho no desenvolvimento de um simulador de navios (bastante
computação científica).

Aproveitando que estão falando de c++ no mercado financeiro, eu queria
saber se essas aplicações tem que seguir coding-standards de "hard
realtime". Por exemplo, podem se dar ao luxo de fazer alocações
dinâmicas em tempo de execução?

Marcelo

Rodrigo Delduca

unread,
May 23, 2014, 11:19:21 AM5/23/14
to ccppb...@googlegroups.com
Strauss,
É verdade, vendo por este lado não vale a pena usar FGPA, sem contar
que equipamento para debbugar uma placa é carissima


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



angelo

unread,
May 23, 2014, 1:54:25 PM5/23/14
to ccppb...@googlegroups.com
Acho que vc não vão saber responder isso, mas vou perguntar assim mesmo... vai que tem alguma idéia mesmo que por alto...

Tem idéia da velocidade que a "rede de baixa latencia" utilizada por esses sistemas de baixa latência, que alguns de vocês ja tiveram a oportunidade programar, trafega ? 
Pra ser rápido, muito rapido.. imagino que essa rede na qual estão plugados os servidores de hft, deva ir na casa dos gigabits.. 1Gbit.. 10 Gbit.. enfim.. 

Caio Casimiro

unread,
May 23, 2014, 2:00:45 PM5/23/14
to ccppb...@googlegroups.com
Uma coisa é latência, outra coisa é largura de banda.
Caio Ramos Casimiro
M.Sc. Student
School of Arts, Sciences and Humanities
University of São Paulo

Rodrigo Delduca

unread,
May 23, 2014, 2:01:05 PM5/23/14
to ccppb...@googlegroups.com
http://www.biztechmagazine.com/article/2012/10/network-latency-financial-services-how-low-can-you-go


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



2014-05-23 14:54 GMT-03:00 angelo <angelo...@gmail.com>:

Rogerio Machado

unread,
May 23, 2014, 2:26:05 PM5/23/14
to ccppb...@googlegroups.com
Na verdade a depuracao de circuitos digitais em FPGA pode ocorrer em varios niveis: simulacao em software(que ainda pode ser dividido em outras classes) e depuracao on chip na FPGA. Na depuracao onchip um circuito digital de analisador logico eh embutido junto com o circuito a ser depurado(entao nao eh necessario um hardware dedicado para isso). Atraves de uma interface no computador(USB) eh possivel monitorar os cores a serem depurados. A simulacao por software permite testar o todo ou em partes(semelhante a um teste unitario de software). Neste ponto fica interessante porque o assunto fica bem "on topic" porque uma das possiveis utilizacoes do C++ eh de gerar circuitos digitals e permitir simulacao da mesma. Na verdade existe o System C(http://en.wikipedia.org/wiki/SystemC) que a combinacao de C++ e linguagens de descricao de hardware. Interessante que o professional para atuar nesta area tem que conhecer C++ e circuitos digitais. 

>>> > Para mais opções, visite http://groups.google.com/group/ccppbrasil
>>> >
>>> > --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
>>> > Emprego & carreira: vag...@ccppbrasil.org
>>> > http://groups.google.com/group/dev-guys?hl=en
>>> >
>>>
>>> --
>>> Antes de enviar um e-mail para o grupo leia:
>>>                      http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
>>>
>>> --~--~---------~--~----~---------------------------------~----------~--~----~
>>> [&] C & C++ Brasil - http://www.ccppbrasil.org/
>>> Para sair dessa lista, envie um e-mail para
>>> Para mais opções, visite http://groups.google.com/group/ccppbrasil
>>> --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
>>> Emprego & carreira:  vag...@ccppbrasil.org
>>> http://groups.google.com/group/dev-guys?hl=en
>>>
>>
>> --
>> Antes de enviar um e-mail para o grupo leia:
>> http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
>> --~--~---------~--~----~---------------------------------~----------~--~----~
>> [&] C & C++ Brasil - http://www.ccppbrasil.org/
>> Para sair dessa lista, envie um e-mail para
>> Para mais opções, visite http://groups.google.com/group/ccppbrasil
>> --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
>> Emprego & carreira: vag...@ccppbrasil.org
>> http://groups.google.com/group/dev-guys?hl=en
>>
>
> --
> Antes de enviar um e-mail para o grupo leia:
>                      http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
> --~--~---------~--~----~---------------------------------~----------~--~----~
> [&] C & C++ Brasil - http://www.ccppbrasil.org/
> Para sair dessa lista, envie um e-mail para ccppbrasil-unsubscribe@googlegroups.com

Rodrigo Delduca

unread,
May 23, 2014, 2:30:16 PM5/23/14
to ccppb...@googlegroups.com
Já tinha lido sobre o SystemC, sabe me dizer se vale a pena? O pessoal
que conheço que trabalha na área recomenda VHDL mesmo...


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



>> >>> > ccppbrasil-...@googlegroups.com
>> >>> > Para mais opções, visite http://groups.google.com/group/ccppbrasil
>> >>> >
>> >>> >
>> >>> > --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
>> >>> > Emprego & carreira: vag...@ccppbrasil.org
>> >>> > http://groups.google.com/group/dev-guys?hl=en
>> >>> >
>> >>>
>> >>> --
>> >>> Antes de enviar um e-mail para o grupo leia:
>> >>>
>> >>> http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
>> >>>
>> >>>
>> >>> --~--~---------~--~----~---------------------------------~----------~--~----~
>> >>> [&] C & C++ Brasil - http://www.ccppbrasil.org/
>> >>> Para sair dessa lista, envie um e-mail para
>> >>> ccppbrasil-...@googlegroups.com
>> >>> Para mais opções, visite http://groups.google.com/group/ccppbrasil
>> >>>
>> >>> --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
>> >>> Emprego & carreira: vag...@ccppbrasil.org
>> >>> http://groups.google.com/group/dev-guys?hl=en
>> >>>
>> >>
>> >> --
>> >> Antes de enviar um e-mail para o grupo leia:
>> >> http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
>> >>
>> >> --~--~---------~--~----~---------------------------------~----------~--~----~
>> >> [&] C & C++ Brasil - http://www.ccppbrasil.org/
>> >> Para sair dessa lista, envie um e-mail para
>> >> ccppbrasil-...@googlegroups.com
>> >> Para mais opções, visite http://groups.google.com/group/ccppbrasil
>> >>
>> >> --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
>> >> Emprego & carreira: vag...@ccppbrasil.org
>> >> http://groups.google.com/group/dev-guys?hl=en
>> >>
>> >
>> > --
>> > Antes de enviar um e-mail para o grupo leia:
>> >
>> > http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
>> >
>> > --~--~---------~--~----~---------------------------------~----------~--~----~
>> > [&] C & C++ Brasil - http://www.ccppbrasil.org/
>> > Para sair dessa lista, envie um e-mail para
>> > ccppbrasil-...@googlegroups.com
>> > Para mais opções, visite http://groups.google.com/group/ccppbrasil
>> >
>> > --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
>> > Emprego & carreira: vag...@ccppbrasil.org
>> > http://groups.google.com/group/dev-guys?hl=en
>> >
>
> --
> Antes de enviar um e-mail para o grupo leia:
> http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
> --~--~---------~--~----~---------------------------------~----------~--~----~
> [&] C & C++ Brasil - http://www.ccppbrasil.org/
> Para sair dessa lista, envie um e-mail para
> ccppbrasil-...@googlegroups.com
Message has been deleted
Message has been deleted

Rogerio Machado

unread,
May 23, 2014, 3:07:20 PM5/23/14
to ccppb...@googlegroups.com
Eu nao conheco SytemC, porem na epoca quando resolvi aprender FPGA considerei usar SystemC por causa de meu background em C++. Porem percebi que o caminho para comecar eh aprender uma linguagem de descricao de hardware VHDL ou Verilog. Como meu objetivo nao eh atuar profissionalmente(soh hobby) com FPGA optei por Verilog em contrapartida  do VHDL que domina no Brasil! 

Atualmente estou com tempo livre para aprender + coisas novas, entao estou tentanto usar esta tecnologia que usa Python para gerar codigo Verilog: http://m-labs.hk/gateware.html
Acho que seu uso ainda esta  + limitado no meio academico. 

Alex Sandro Garzao

unread,
May 23, 2014, 3:48:00 PM5/23/14
to ccppbrasil
> Aproveitando que estão falando de c++ no mercado financeiro, eu queria
> saber se essas aplicações tem que seguir coding-standards de "hard
> realtime". Por exemplo, podem se dar ao luxo de fazer alocações
> dinâmicas em tempo de execução?
>
> Marcelo

Nas aplicações com foco em alto desempenho que eu participei a gente
não fazia alocações dinâmicas por 2 motivos:

1) malloc e afins é uma syscall, então isso gera muita troca de contexto;
2) Se mais de uma thread (de um mesmo processo) tentar alocar memória,
o kernel serializa as requisições [3].

Eu utilizei a jemalloc [1,2] por algum tempo, mas existem várias
outras libs com propósito similar...

Abs!

[1] http://www.canonware.com/jemalloc/
[2] https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919
[3] Tentei achar algum link agora mas não encontrei :-/

--
[]'s
------------------------------------------------------------------
Alex Sandro Garzão
mailto:alexg...@gmail.com
_
_v_ Software Engineer, Computer Science MSc
/(_)\ Linux user #229193
^ ^
------------------------------------------------------------------

Marcelo Zimbres

unread,
May 23, 2014, 4:18:11 PM5/23/14
to ccppb...@googlegroups.com
"Nas aplicações com foco em alto desempenho que eu participei a gente
não fazia alocações dinâmicas por 2 motivos:

1) malloc e afins é uma syscall, então isso gera muita troca de contexto;
2) Se mais de uma thread (de um mesmo processo) tentar alocar memória,
o kernel serializa as requisições [3].

Eu utilizei a jemalloc [1,2] por algum tempo, mas existem várias
outras libs com propósito similar...

Abs!"

Ok, entendo. Então os containers do c++ também eram proibidos? ... a
não ser que vocês tivessem um allocator implementado com jemalloc?
Uma das coisas que não estão claras para mim em c++ é exatamente com
respeito a hard-realtime. Por exemplo, tratar erro com exceção pode
ter guarantia
de rodar em no máximo n clocks? E funções como std::sort, fazem
alocação na heap internamente ou não? A alegação de que std::list por
exemplo, tem tempo de inserção constante também me parece falsa, já
que por ser um node based, usa a heap e portanto não tem com saber se
o malloc lá no fundo não depende de quantos elementos estão alocados
na heap. Se você quer ter absoluta certeza de que não vai perder
pacotes, essa coisas passam a ser importantes, principalmente se sua
máquina estiver ligada a dias e com a heap toda bagunçada.

Marcelo

Francisco Lopes

unread,
May 23, 2014, 4:44:11 PM5/23/14
to ccppb...@googlegroups.com
Existe flexibilidade sem sair da STL se for tão requisitado, e.g.:


Acredito que vários pontos que você se refere provavelmente vão
ser implementation defined, e vai depender da implementação na
plataforma mesmo. Só fiquei curioso por qual motivo sort alocaria
memoria do heap, não vejo razão caso seja usado o normal por aí,
quick sort internamente.

Rodrigo Delduca

unread,
May 23, 2014, 4:51:11 PM5/23/14
to ccppb...@googlegroups.com
Para usar outros alocadores de memória nem sempre é necessário criar
um allocator, como é o caso do TCMalloc[1] usando LD_PRELOAD

LD_PRELOAD="/usr/lib/libtcmalloc.so"

1 - http://goog-perftools.sourceforge.net/doc/tcmalloc.html



--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



Francisco Lopes

unread,
May 23, 2014, 4:52:10 PM5/23/14
to ccppb...@googlegroups.com
correção =P

s/quick sort internamente/introsort internamente/

Rodrigo Delduca

unread,
May 23, 2014, 4:54:16 PM5/23/14
to ccppb...@googlegroups.com
Outra coisa, você não é obrigado a usar o sort, pode usar o mergesort
com um buffer circular e fazer a troca in-place, como este cara fez[1]

1 - http://preshing.com/20121026/1mb-sorting-explained/


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



Marcelo Zimbres

unread,
May 23, 2014, 9:46:17 PM5/23/14
to ccppb...@googlegroups.com
"Só fiquei curioso por qual motivo sort alocaria
memoria do heap, não vejo razão caso seja usado o normal por aí,
quick sort internamente"

Alguns algoritmos de ordenação usam tabelas auxiliares que dependem do
tamanho da entrada, o quick sort por exemplo usa stack. Considerando
alocators, mesmo que meu alocator seja "hard-realtime" as exceções que
são usadas pelos containers não são, até onde eu sei, o que impediria
seu uso.

Mas meu ponto aqui é que o padrão em si não me dá garantias, mas
talvez eles não tenham interesse nisso. Lembro de um texto legal sobre
conding standard para hard-realtime do jet propulsion lab, não estou
conseguindo achar o link para o de c++, somente o de
c(http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf) vejam a
regra 5, e também as pessoas que estão entre os autores!

Em 23 de maio de 2014 17:53, Rodrigo Delduca
<rodrigo...@gmail.com> escreveu:

P.

unread,
May 24, 2014, 1:28:21 PM5/24/14
to ccppb...@googlegroups.com
Em sexta-feira, 23 de maio de 2014 17h18min11s UTC-3, mzimbres escreveu:
 
Ok, entendo. Então os containers do c++ também eram proibidos? ... a
não ser que vocês tivessem um allocator implementado com jemalloc?
Uma das coisas que não estão claras para mim em c++ é exatamente com
respeito a hard-realtime. Por exemplo, tratar erro com exceção pode
ter guarantia


A especificação do C++ não compreende o que é "hard real time", no mesmo sentido que a especificação do C e do C++ antes de 2011 não compreendiam o que é "thread".
Não há resposta em C ou C++ para perguntas como essa.
Quem responde a essas perguntas é o sistema operacional.

Quanto às "alocações dinâmicas", não entendo qual é o problema. Uma coisa é "alocação dinâmica", outra coisa é chamar a syscall mmap. A técnica de "pool allocator" ainda é um mistério na comunidade?

P.

P.

unread,
May 24, 2014, 1:32:11 PM5/24/14
to ccppb...@googlegroups.com
Em sexta-feira, 23 de maio de 2014 17h18min11s UTC-3, mzimbres escreveu:
 
E funções como std::sort, fazem
alocação na heap internamente ou não? A alegação de que std::list por
exemplo, tem tempo de inserção constante também me parece falsa, já
que por ser um node based, usa a heap e portanto não tem com saber se
o malloc lá no fundo não depende de quantos elementos estão alocados
na heap. Se você quer ter absoluta certeza de que não vai perder
pacotes, essa coisas passam a ser importantes, principalmente se sua
máquina estiver ligada a dias e com a heap toda bagunçada.


Sobre este trecho, sua compreensão do que significa "tempo constante" está equivocada. Aqui, o contexto é a linguagem de complexidade de algoritmos, e "tempo constanto" significa constante com relação ao número de elementos na lista. O termo técnico mais rigoroso, usado no texto da especificação, é "amortized constant time". A especificação do C++ não exige e não pode exigir mais do que "amortized". Por fim, no mundo natural, não existe mesmo tempo, existe apenas dois tempos com diferença irrelevante, que é justamente o sentido de "amortized" na expressão.

P.

rafae...@gmail.com

unread,
May 24, 2014, 3:28:57 PM5/24/14
to ccppb...@googlegroups.com
Complementando o P. você pode ler sobre isso no Introduction to Algorithms do Cormen.

Essa análise de algoritmo diz respeito a como o algoritmo se comporta quando a quantidade de elementos se aproxima de infinito.

Existem até casos aonde os melhores algoritmos não são tão bons quando a amostra é pequena.

Agora, depois que você tiver um algoritmo aceitável quiser analisar o hardware, beleza. Mas se eu não me equivoco, já foi incluso uma constante C nessas equações para isso e elas normalmente são ignoradas, pois contribuem muito pouco com a fórmula.

De novo, otimização precoce é o mal do universo, tirando aqueles que realmente já tem seu Megabolsas rodando e precisam tirar o LAG, a maioria dos programadores deveria primeiro implementar o correto e DEPOIS buscar o ajuste fino se necessário. Na maioria das vezes o padrão é suficiente.

Att,
Rafael Soares.

Vinícius dos Santos Oliveira

unread,
May 24, 2014, 4:38:57 PM5/24/14
to ccppbrasil
Em 24 de maio de 2014 16:20, <rafae...@gmail.com> escreveu:
Essa análise de algoritmo diz respeito a como o algoritmo se comporta quando a quantidade de elementos se aproxima de infinito.

Eu não gosto daquele comportamento de pessoas que aprendem sobre análise (matemática) de algoritmos e acham que não precisam aprender mais nada.

Eu considero análise de algoritmos importante, mas não é o único fator que você deveria considerar.

Tem essa palestra onde o Herb Sutter se preparou para lhe convencer a dar importância ao fator do cache: http://channel9.msdn.com/Events/Build/2014/2-661

E essa outra onde o Eric Brumer enfrenta o problema de cache usando como exemplo as instruções de vetorização (e também threads comuns): http://channel9.msdn.com/Events/Build/2013/4-329

Isso fora o problema de se manter atualizado lendo sobre as novidades (acho que no momento é memória transacional e GPGPU, mas como não sou arrogante, sei que há mais, só não sei quais são). Mas a (infeliz e específica má sorte minha de ficar em um lugar "estratégico") experiência que eu tenho é que o pessoal que aprende análise algorítmica vira as costas para outras abordagens.


--
Vinícius dos Santos Oliveira

P.

unread,
May 24, 2014, 5:02:19 PM5/24/14
to ccppb...@googlegroups.com
Em sábado, 24 de maio de 2014 17h38min57s UTC-3, Vinícius dos Santos Oliveira escreveu:
Em 24 de maio de 2014 16:20, <rafae...@gmail.com> escreveu:
Essa análise de algoritmo diz respeito a como o algoritmo se comporta quando a quantidade de elementos se aproxima de infinito.

Eu não gosto daquele comportamento de pessoas que aprendem sobre análise (matemática) de algoritmos e acham que não precisam aprender mais nada.


Fiquei confuso. Quem é essa pessoa que acha que não precisa aprender mais nada? O que isso tudo tem a ver com o problema de relacionar as garantias do C++ e os requisitos de "hard real time"?

P.

Vinícius dos Santos Oliveira

unread,
May 24, 2014, 5:05:17 PM5/24/14
to ccppbrasil
Em 24 de maio de 2014 18:02, P. <pedro....@gmail.com> escreveu:
Fiquei confuso. Quem é essa pessoa que acha que não precisa aprender mais nada?

Programadores que encontro AFK.
 
O que isso tudo tem a ver com o problema de relacionar as garantias do C++ e os requisitos de "hard real time"?

Quis compartilhar duas palestras que achei interessante.

Efeito de cache. Acesso determínistico a memória (e alocação na heap, que não é abordado tanto nas palestras).

Marcelo Zimbres

unread,
May 24, 2014, 6:38:30 PM5/24/14
to ccppb...@googlegroups.com
"Quanto às "alocações dinâmicas", não entendo qual é o problema. Uma
coisa é "alocação dinâmica", outra coisa é chamar a syscall mmap"

O problema está em você não ter garantias de que sua função de
alocação vá retornar em no máximo N clocks do processador. O
comportamento dessas funções é em geral imprevisível, principalmente
quando fazem syscalls.

"Sobre este trecho, sua compreensão do que significa "tempo constante"
está equivocada. Aqui, o contexto é a linguagem de complexidade de
algoritmos, e "tempo constanto" significa constante com relação ao
número de elementos na lista"

A minha compreensão de "tempo constante" é a mesma que sua: a inserção
de um novo elemento não pode depender do número de elementos que já
estão na lista. O fato de os contêineres em c++ usarem o standard
allocator impossibilita que seja dada garantia de que seja "tempo
constante" já que isso exigiria que o tempo gasto pelo malloc para
achar espaço para um novo node fosse constante, o que sabidamente não
é. Se eu implementar uma lista com uma avail stack eu tenho certeza
que vai ser constante, já que vai haver apenas uma ou duas trocas de
ponteiro. No caso de std::list, essa garantia não é possível.

No fundo o que o padrão faz, é jogar para o usuário a responsabilidade
para o usuário.

Marcelo

Em 24 de maio de 2014 18:04, Vinícius dos Santos Oliveira
<vini.i...@gmail.com> escreveu:

Rafael Silva

unread,
May 24, 2014, 7:43:29 PM5/24/14
to ccppb...@googlegroups.com
Eu vejo as elocubrações, mas não vejo os fatos.

rafae...@gmail.com

unread,
May 24, 2014, 7:47:37 PM5/24/14
to ccppb...@googlegroups.com
Errei no português, malz.

Mas fica a solicitação para ver esses defeitos da STL e das alocações. E como arrumar.

Att,
Rafael Soares.

--

Marcelo Zimbres

unread,
May 25, 2014, 12:42:22 AM5/25/14
to ccppb...@googlegroups.com
"Eu vejo as elocubrações, mas não vejo os fatos."

Quais fatos exatmente?

"Mas fica a solicitação para ver esses defeitos da STL e das
alocações. E como arrumar."

A motivação inicial da discussão não gira em torno de STL ter defeitos
ou não, mas sim de que o padrão c++ não dá garantias de que inversão
em uma lista por exemplo seja O(1), a garantia fica por conta do
usuário. Há algum tempo eu falei sobre minhas dúvidas em outra lista
de discussão, caso você tenha interesse, veja o link abaixo.

https://groups.google.com/a/isocpp.org/forum/#!msg/std-discussion/ZsEbDT4Yvjk/BDVQ6ONB1IIJ

Marcelo

Francisco Lopes

unread,
May 25, 2014, 12:46:37 AM5/25/14
to ccppb...@googlegroups.com


Em Dom, Mai 25, 2014 em 1:42 , Marcelo Zimbres <mzim...@gmail.com> escreveu:
"Eu vejo as elocubrações, mas não vejo os fatos." Quais fatos exatmente? "Mas fica a solicitação para ver esses defeitos da STL e das alocações. E como arrumar." A motivação inicial da discussão não gira em torno de STL ter defeitos ou não, mas sim de que o padrão c++ não dá garantias de que inversão em uma lista por exemplo seja O(1), a garantia fica por conta do usuário. Há algum tempo eu falei sobre minhas dúvidas em outra lista de discussão, caso você tenha interesse, veja o link abaixo. https://groups.google.com/a/isocpp.org/forum/#!msg/std-discussion/ZsEbDT4Yvjk/BDVQ6ONB1IIJ Marcelo

Sobre o padrão dar garantias de complexidade dos algoritmos, não sei, mas
no site referência, isto é sempre explicitado, não sei de onde eles tiram isso
ou se é só senso comum utilizado no site.

P.

unread,
May 26, 2014, 1:46:41 PM5/26/14
to ccppb...@googlegroups.com
Em sábado, 24 de maio de 2014 19h38min30s UTC-3, mzimbres escreveu:
"Sobre este trecho, sua compreensão do que significa "tempo constante"
está equivocada. Aqui, o contexto é a linguagem de complexidade de
algoritmos, e "tempo constanto" significa constante com relação ao
número de elementos na lista"

A minha compreensão de "tempo constante" é a mesma que sua: a inserção
de um novo elemento não pode depender do número de elementos que já
estão na lista. O fato de os contêineres em c++ usarem o standard
allocator impossibilita que seja dada garantia de que seja "tempo
constante" já que isso exigiria que o tempo gasto pelo malloc para
achar espaço para um novo node fosse constante, o que sabidamente não
é.


Você pulou o "amortized constant time", termo técnico de significado rigoroso que elucida a questão.

Sobre a sua objeção, objeto contra ela. O tempo de realocação no std::list nunca é função do número de elementos. A sua objeção trata da variável estado interno do alocador. Este estado interno não varia em função do número de elementos de um certo std::list, ele varia em função de todas as suas operações em qualquer lugar do sistema (i.e. o processo) durante o seu tempo de vida.  É preciso entender então que std::list, assim como o resto do C++ inteiro, não possui compreensão do que é "hard real time", e sua linguagem (i.e. a linguagem da especificação) é apenas a linguagem da análise de complexidade. Operações em std::list demoram um tempo constante amortizado versus o número de elementos da lista. Isso é um fato. Outro fato seria este: que as operações em std::list demorem um tempo constante amortizado versus o número de ativações do alocador. C++ não exige e não pode exigir este último.

Quando é importante remover inclusive as variáveis de tempo versus estado interno do alocador, usa-se "pool allocator" ou similar.

Quando é importante remover inclusive as variáveis de tempo versus posicionamento na memória, i.e. abandonar a premissa de que load e store em qualquer posição da memória custa a mesma coisa, então usa-se um "pool allocator" ou similar com pré-alocação na região mais rápida. Quando o problema é localidade, como no caso de um cache, é suficiente pré-alocar um segmento enorme e contíguo, e garantir que todos os nós do std::list serão alocados juntinhos neste segmento.

Cada problema no seu quadrado.

P.

Vinicius Jarina

unread,
May 26, 2014, 2:11:12 PM5/26/14
to ccppb...@googlegroups.com
Em ~58 minutos Herb fala um pouco sobre diferentes áreas onde o C++ é usado.


O vídeo é muito bom, vale a pena assisti-lo inteiro.


--

Marcelo Zimbres

unread,
May 26, 2014, 2:27:06 PM5/26/14
to ccppb...@googlegroups.com
"O tempo de realocação no std::list nunca é função do número de elementos"

Pelo que eu entendo do seu email, você quer dizer que o tempo gasto
para encontrar memória para um novo node em std::list (feito pelo
malloc) não deve ser levado em conta na análise de complexidade do
std::list::insert? Dessa forma ok, seria obviamente "hard-realtime",
já que dentro de list::insert apenas algumas trocas de ponteiros são
feitas, mas no meu benchmark o que conta é "O(std::list::insert) +
O(malloc)". Nas minhas referências de estrutura de dados, todos esses
"node based" são implementados com uma "avail stack" e portanto não
existe esse preço da alocação dinâmica, uma vez que tudo já está
allocado.

Em 26 de maio de 2014 15:10, Vinicius Jarina
<viniciu...@gmail.com> escreveu:

P.

unread,
May 26, 2014, 3:07:32 PM5/26/14
to ccppb...@googlegroups.com
Em segunda-feira, 26 de maio de 2014 15h27min06s UTC-3, mzimbres escreveu:
 
"O tempo de realocação no std::list nunca é função do número de elementos"

Pelo que eu entendo do seu email, você quer dizer que o tempo gasto
para encontrar memória para um novo node em std::list (feito pelo
malloc) não deve ser levado em conta na análise de complexidade do
std::list::insert


Não, a palavra "deve" não faz parte do que eu estou dizendo.

O que eu estou dizendo é que onde o C++ diz que std::list::erase, por exemplo, é "amortized constant time", isso é verdade porque "constant" refere-se ao número N de elementos da lista, e não se refere ao estado A do alocador. O fato de que o alocador no seu sistema não garante "amortized constant time" T com relação ao número de ativações deste alocador desde o início do processo é, apenas e tão somente, _outro_ problema. A especificação do C++ não trata desse problema.

Não é legitimo dizer que a garantia de "amortized constant time" da norma é falsa em função de variáveis que estão fora da análise. Assim como também não é legítimo dizer que a garantia é falsa porque no mundo real load e store em diferentes posições da memória tem custo diferente, porque existe cache. Ocorre apenas que o modelo sob análise é pobre com relação às suas exigências.

P.

Marcelo Zimbres

unread,
May 31, 2014, 1:02:26 PM5/31/14
to ccppb...@googlegroups.com
"Não, a palavra "deve" não faz parte do que eu estou dizendo.

O que eu estou dizendo é que onde o C++ diz que std::list::erase, por
exemplo, é "amortized constant time", isso é verdade porque "constant"
refere-se ao número N de elementos da lista, e não se refere ao estado
A do alocador. O fato de que o alocador no seu sistema não garante
"amortized constant time" T com relação ao número de ativações deste
alocador desde o início do processo é, apenas e tão somente, _outro_
problema. A especificação do C++ não trata desse problema.

Não é legitimo dizer que a garantia de "amortized constant time" da
norma é falsa em função de variáveis que estão fora da análise. Assim
como também não é legítimo dizer que a garantia é falsa porque no
mundo real load e store em diferentes posições da memória tem custo
diferente, porque existe cache. Ocorre apenas que o modelo sob análise
é pobre com relação às suas exigências."

Eu discordo dessa linha de raciocínio pelo seguinte motivo, a norma C++ não
pode se dar ao luxo de usar outra definição sobre a complexidade de um
algoritmo. A definição geral para ser "constant time" é de que não deve
depender de maneira alguma do número de elementos na lista. Isso significa que
não podemos jogar para baixo do tapete a parte que não é "constant time".

Que me adianta a norma falar em "constant time" quando o desempenho de uma
std::list é o mesmo que o de um std:vector ? (caso o alocador seja linear).

Não é atoa que muitos não usam ou tornaram "deprecated" os "node based" da stl.
(na verdeda mais ligado a fragmentação do que a alocação).

Marcelo

P.

unread,
Jun 2, 2014, 2:38:25 PM6/2/14
to ccppb...@googlegroups.com
Em sábado, 31 de maio de 2014 14h02min26s UTC-3, mzimbres escreveu:
 
Não é legitimo dizer que a garantia de "amortized constant time" da
norma é falsa em função de variáveis que estão fora da análise. Assim
como também não é legítimo dizer que a garantia é falsa porque no
mundo real load e store em diferentes posições da memória tem custo
diferente, porque existe cache. Ocorre apenas que o modelo sob análise
é pobre com relação às suas exigências."

 
Eu discordo dessa linha de raciocínio pelo seguinte motivo, a norma C++ não
pode se dar ao luxo de usar outra definição sobre a complexidade de um
algoritmo. A definição geral para ser "constant time" é de que não deve
depender de maneira alguma do número de elementos na lista. Isso significa que
não podemos jogar para baixo do tapete a parte que não é "constant time".


Você raciocina dessa forma porque sua compreensão da expressão "constant time" é, como você diz, "geral" -- algo que até agora estava apenas implícito na sua insistência em remover o "amortized" da expressão "amortized constant time".
Realmente, se você entende "constant" como faria uma pessoa na padaria pedindo "um número constante de pães", então você tem razão.
Porém, nós estamos aqui tratando de uma norma técnica escrita na linguagem acadêmica da análise de complexidade.
É preciso compreender o que "amortized constant time" significa para que se possa então interpretar com legitimidade o texto da norma.
E "amortized constant time" na norma ignora as pequenas e hipotéticas variações no custo de operações individuais no algoritmo -- é exatamente isso o que significa "amortized" na expressão.
Por fim, nós não apenas podemos jogar uma variação para debaixo do tapete, como fazemos isso com frequencia, e não temos outra alternativa. Não existe mesmo tempo no mundo físico, existem apenas dois tempos T1 e T2 indistinguíveis com relação a um erro E. Um modelo computacional qualquer que ignora o erro E introduzido por variações no tempo de ativação do alocador não é errado devido ao fato de você pessoalmente necessitar de um modelo que precisa tomar isso em consideração.
Novamente, a norma do C++ não tem interesse nos requisitos de "hard real time" e é escrita em função de um modelo computacional onde não se impõe essas exigências. Isso não é um defeito, é uma característica.
P.
Reply all
Reply to author
Forward
0 new messages